diff --git a/.mvn/extensions.xml b/.mvn/extensions.xml
index 02d68c6004d..05a34b1e815 100644
--- a/.mvn/extensions.xml
+++ b/.mvn/extensions.xml
@@ -3,6 +3,6 @@
org.eclipse.tychotycho-build
- 4.0.6
+ 4.0.10
diff --git a/Jenkinsfile b/Jenkinsfile
index c7f47a2d0bd..7f1aa5c236a 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -9,29 +9,30 @@ pipeline {
}
tools {
maven 'apache-maven-latest'
- jdk 'temurin-jdk17-latest'
+ jdk 'temurin-jdk21-latest'
}
stages {
stage('Build') {
steps {
- wrap([$class: 'Xvnc', useXauthority: true]) {
+ xvnc(useXauthority: true) {
sh """
mvn clean verify --batch-mode --fail-at-end -Dmaven.repo.local=$WORKSPACE/.m2/repository \
-Pbree-libs -Papi-check -Pjavadoc \
- -Dmaven.test.failure.ignore=true \
+ -Dmaven.test.failure.ignore=true \
-Dcompare-version-with-baselines.skip=false \
- -Dproject.build.sourceEncoding=UTF-8 \
-Dorg.slf4j.simpleLogger.showDateTime=true -Dorg.slf4j.simpleLogger.dateTimeFormat=HH:mm:ss.SSS \
- -DtrimStackTrace=false
+ -DtrimStackTrace=false
"""
}
}
post {
always {
- archiveArtifacts artifacts: '*.log,*/target/work/data/.metadata/*.log,*/tests/target/work/data/.metadata/*.log,apiAnalyzer-workspace/.metadata/*.log', allowEmptyArchive: true
+ archiveArtifacts artifacts: '*.log,**/target/**/*.log', allowEmptyArchive: true
junit '**/target/surefire-reports/TEST-*.xml'
discoverGitReferenceBuild referenceJob: 'eclipse.platform.ui/master'
- recordIssues publishAllIssues:false, ignoreQualityGate:true, tool: eclipse(name: 'Compiler and API Tools', pattern: '**/target/compilelogs/*.xml'), qualityGates: [[threshold: 1, type: 'DELTA', unstable: true]]
+ recordIssues(publishAllIssues:false, ignoreQualityGate:true,
+ tool: eclipse(name: 'Compiler and API Tools', pattern: '**/target/compilelogs/*.xml'),
+ qualityGates: [[threshold: 1, type: 'DELTA', unstable: true]])
recordIssues publishAllIssues:false, tools: [mavenConsole(), javaDoc()]
}
}
diff --git a/README.md b/README.md
index 05e96f95a81..6a3a3792008 100644
--- a/README.md
+++ b/README.md
@@ -16,7 +16,11 @@ For more information, refer to the [Eclipse Platform project page](https://proje
Contributions are most welcome. There are many ways to contribute, from entering high quality bug reports, to contributing code or documentation changes.
-For a complete guide, see the https://github.com/eclipse-platform/.github/blob/main/CONTRIBUTING.md.
+For a complete guide, see the [CONTRIBUTING](https://github.com/eclipse-platform/.github/blob/main/CONTRIBUTING.md) page.
+
+[](
+https://www.eclipse.org/setups/installer/?url=https://raw.githubusercontent.com/eclipse-platform/eclipse.platform.ui/master/releng/org.eclipse.ui.releng/platformUIConfiguration.setup&show=true
+"Click to open Eclipse-Installer Auto Launch or drag into your running installer")
## Test Dependencies
@@ -27,10 +31,10 @@ Please install them by installing "Eclipse Test Framework" from the [current rel
## How to Build on the Command Line
-You need Maven 3.8.x installed. After this you can run the build via the following command:
+You need Maven 3.9.x installed. After this you can run the build via the following command:
```
-mvn clean verify -Pbuild-individual-bundles
+mvn clean verify
```
diff --git a/bundles/org.eclipse.core.commands/META-INF/MANIFEST.MF b/bundles/org.eclipse.core.commands/META-INF/MANIFEST.MF
index 29990cb8a33..cdb2e1b2eeb 100644
--- a/bundles/org.eclipse.core.commands/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.core.commands/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.core.commands
-Bundle-Version: 3.12.200.qualifier
+Bundle-Version: 3.12.300.qualifier
Bundle-Vendor: %providerName
Bundle-Localization: plugin
Export-Package: org.eclipse.core.commands,
diff --git a/bundles/org.eclipse.core.commands/src/org/eclipse/core/commands/ParameterizedCommand.java b/bundles/org.eclipse.core.commands/src/org/eclipse/core/commands/ParameterizedCommand.java
index fd63d56a8bb..8302321886e 100644
--- a/bundles/org.eclipse.core.commands/src/org/eclipse/core/commands/ParameterizedCommand.java
+++ b/bundles/org.eclipse.core.commands/src/org/eclipse/core/commands/ParameterizedCommand.java
@@ -311,7 +311,7 @@ public static ParameterizedCommand generateCommand(Command command, Map paramete
IParameter parameter = command.getParameter(key);
// if the parameter is defined add it to the parameter list
if (parameter == null) {
- return null;
+ continue;
}
ParameterType parameterType = command.getParameterType(key);
if (parameterType == null) {
diff --git a/bundles/org.eclipse.core.filebuffers/META-INF/MANIFEST.MF b/bundles/org.eclipse.core.filebuffers/META-INF/MANIFEST.MF
index 2049ed7c8a9..4e744233847 100644
--- a/bundles/org.eclipse.core.filebuffers/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.core.filebuffers/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.core.filebuffers; singleton:=true
-Bundle-Version: 3.8.300.qualifier
+Bundle-Version: 3.8.400.qualifier
Bundle-Vendor: %providerName
Bundle-Localization: plugin
Export-Package:
diff --git a/bundles/org.eclipse.core.filebuffers/src/org/eclipse/core/internal/filebuffers/SynchronizableDocument.java b/bundles/org.eclipse.core.filebuffers/src/org/eclipse/core/internal/filebuffers/SynchronizableDocument.java
index 5de98289a90..32cf3238f8a 100644
--- a/bundles/org.eclipse.core.filebuffers/src/org/eclipse/core/internal/filebuffers/SynchronizableDocument.java
+++ b/bundles/org.eclipse.core.filebuffers/src/org/eclipse/core/internal/filebuffers/SynchronizableDocument.java
@@ -13,10 +13,14 @@
*******************************************************************************/
package org.eclipse.core.internal.filebuffers;
+import java.util.List;
+import java.util.Map;
+
import org.eclipse.jface.text.BadLocationException;
import org.eclipse.jface.text.BadPartitioningException;
import org.eclipse.jface.text.BadPositionCategoryException;
import org.eclipse.jface.text.Document;
+import org.eclipse.jface.text.DocumentEvent;
import org.eclipse.jface.text.DocumentRewriteSession;
import org.eclipse.jface.text.DocumentRewriteSessionType;
import org.eclipse.jface.text.IDocumentExtension4;
@@ -38,6 +42,97 @@ public class SynchronizableDocument extends Document implements ISynchronizable
private Object fLockObject;
+ @Override
+ protected void updateDocumentStructures(DocumentEvent event) {
+ Object lockObject= getLockObject();
+ if (lockObject == null) {
+ super.updateDocumentStructures(event);
+ return;
+ }
+ synchronized (lockObject) {
+ super.updateDocumentStructures(event);
+ }
+ }
+
+ @Override
+ public void removePositionCategory(String category) throws BadPositionCategoryException {
+ Object lockObject= getLockObject();
+ if (lockObject == null) {
+ super.removePositionCategory(category);
+ return;
+ }
+ synchronized (lockObject) {
+ super.removePositionCategory(category);
+ }
+ }
+
+ @Override
+ public String[] getPositionCategories() {
+ Object lockObject= getLockObject();
+ if (lockObject == null) {
+ return super.getPositionCategories();
+ }
+ synchronized (lockObject) {
+ return super.getPositionCategories();
+ }
+ }
+
+ @Override
+ protected Map> getDocumentManagedPositions() {
+ Object lockObject= getLockObject();
+ if (lockObject == null) {
+ return super.getDocumentManagedPositions();
+ }
+ synchronized (lockObject) {
+ return super.getDocumentManagedPositions();
+ }
+ }
+
+ @Override
+ public boolean containsPositionCategory(String category) {
+ Object lockObject= getLockObject();
+ if (lockObject == null) {
+ return super.containsPositionCategory(category);
+ }
+ synchronized (lockObject) {
+ return super.containsPositionCategory(category);
+ }
+ }
+
+ @Override
+ public boolean containsPosition(String category, int offset, int length) {
+ Object lockObject= getLockObject();
+ if (lockObject == null) {
+ return super.containsPosition(category, offset, length);
+ }
+ synchronized (lockObject) {
+ return super.containsPosition(category, offset, length);
+ }
+ }
+
+ @Override
+ public int computeIndexInCategory(String category, int offset) throws BadLocationException, BadPositionCategoryException {
+ Object lockObject= getLockObject();
+ if (lockObject == null) {
+ return super.computeIndexInCategory(category, offset);
+ }
+ synchronized (lockObject) {
+ return super.computeIndexInCategory(category, offset);
+ }
+ }
+
+ @Override
+ public void addPositionCategory(String category) {
+ Object lockObject= getLockObject();
+ if (lockObject == null) {
+ super.addPositionCategory(category);
+ return;
+ }
+ synchronized (lockObject) {
+ super.addPositionCategory(category);
+ }
+ }
+
@Override
public synchronized void setLockObject(Object lockObject) {
fLockObject= lockObject;
diff --git a/bundles/org.eclipse.e4.core.commands/.settings/org.eclipse.pde.ds.annotations.prefs b/bundles/org.eclipse.e4.core.commands/.settings/org.eclipse.pde.ds.annotations.prefs
index 38f9eecff8e..5faf08b7d5c 100644
--- a/bundles/org.eclipse.e4.core.commands/.settings/org.eclipse.pde.ds.annotations.prefs
+++ b/bundles/org.eclipse.e4.core.commands/.settings/org.eclipse.pde.ds.annotations.prefs
@@ -1,4 +1,4 @@
-dsVersion=V1_3
+dsVersion=V1_4
eclipse.preferences.version=1
enabled=true
generateBundleActivationPolicyLazy=true
diff --git a/bundles/org.eclipse.e4.core.commands/META-INF/MANIFEST.MF b/bundles/org.eclipse.e4.core.commands/META-INF/MANIFEST.MF
index 045111c86dd..fa4a0d9df40 100644
--- a/bundles/org.eclipse.e4.core.commands/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.e4.core.commands/META-INF/MANIFEST.MF
@@ -4,7 +4,7 @@ Bundle-SymbolicName: org.eclipse.e4.core.commands;singleton:=true
Bundle-Name: %pluginName
Bundle-Vendor: %providerName
Bundle-Localization: plugin
-Bundle-Version: 1.1.400.qualifier
+Bundle-Version: 1.1.500.qualifier
Bundle-RequiredExecutionEnvironment: JavaSE-17
Import-Package: jakarta.annotation;version="[2.1.0,3.0.0)",
jakarta.inject;version="[2.0.0,3.0.0)",
diff --git a/bundles/org.eclipse.e4.core.commands/src/org/eclipse/e4/core/commands/internal/CommandServiceCreationFunction.java b/bundles/org.eclipse.e4.core.commands/src/org/eclipse/e4/core/commands/internal/CommandServiceCreationFunction.java
index 1043905db4d..a835f6869a7 100644
--- a/bundles/org.eclipse.e4.core.commands/src/org/eclipse/e4/core/commands/internal/CommandServiceCreationFunction.java
+++ b/bundles/org.eclipse.e4.core.commands/src/org/eclipse/e4/core/commands/internal/CommandServiceCreationFunction.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2009, 2014 IBM Corporation and others.
+ * Copyright (c) 2009, 2024 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -21,7 +21,8 @@
import org.eclipse.e4.core.contexts.IEclipseContext;
import org.osgi.service.component.annotations.Component;
-@Component(service = IContextFunction.class, property = "service.context.key=org.eclipse.e4.core.commands.ECommandService")
+@Component(service = IContextFunction.class )
+@IContextFunction.ServiceContextKey(org.eclipse.e4.core.commands.ECommandService.class)
public class CommandServiceCreationFunction extends ContextFunction {
/**
* A context key (value "rootContext") that identifies the root of this context chain. It does
diff --git a/bundles/org.eclipse.e4.core.commands/src/org/eclipse/e4/core/commands/internal/HandlerServiceCreationFunction.java b/bundles/org.eclipse.e4.core.commands/src/org/eclipse/e4/core/commands/internal/HandlerServiceCreationFunction.java
index 7be328b931e..eaf19909968 100644
--- a/bundles/org.eclipse.e4.core.commands/src/org/eclipse/e4/core/commands/internal/HandlerServiceCreationFunction.java
+++ b/bundles/org.eclipse.e4.core.commands/src/org/eclipse/e4/core/commands/internal/HandlerServiceCreationFunction.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2009, 2013 IBM Corporation and others.
+ * Copyright (c) 2009, 2024 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -20,7 +20,8 @@
import org.eclipse.e4.core.contexts.IEclipseContext;
import org.osgi.service.component.annotations.Component;
-@Component(service = IContextFunction.class, property = "service.context.key=org.eclipse.e4.core.commands.EHandlerService")
+@Component(service = IContextFunction.class)
+@IContextFunction.ServiceContextKey(org.eclipse.e4.core.commands.EHandlerService.class)
public class HandlerServiceCreationFunction extends ContextFunction {
@Override
diff --git a/bundles/org.eclipse.e4.ui.bindings/.settings/org.eclipse.pde.ds.annotations.prefs b/bundles/org.eclipse.e4.ui.bindings/.settings/org.eclipse.pde.ds.annotations.prefs
index 38f9eecff8e..5faf08b7d5c 100644
--- a/bundles/org.eclipse.e4.ui.bindings/.settings/org.eclipse.pde.ds.annotations.prefs
+++ b/bundles/org.eclipse.e4.ui.bindings/.settings/org.eclipse.pde.ds.annotations.prefs
@@ -1,4 +1,4 @@
-dsVersion=V1_3
+dsVersion=V1_4
eclipse.preferences.version=1
enabled=true
generateBundleActivationPolicyLazy=true
diff --git a/bundles/org.eclipse.e4.ui.bindings/META-INF/MANIFEST.MF b/bundles/org.eclipse.e4.ui.bindings/META-INF/MANIFEST.MF
index 75e53af6bb0..71afdef993d 100644
--- a/bundles/org.eclipse.e4.ui.bindings/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.e4.ui.bindings/META-INF/MANIFEST.MF
@@ -1,7 +1,7 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-SymbolicName: org.eclipse.e4.ui.bindings;singleton:=true
-Bundle-Version: 0.14.400.qualifier
+Bundle-Version: 0.14.500.qualifier
Bundle-Name: %pluginName
Bundle-Vendor: %providerName
Bundle-Localization: plugin
diff --git a/bundles/org.eclipse.e4.ui.bindings/src/org/eclipse/e4/ui/bindings/internal/BindingServiceCreationFunction.java b/bundles/org.eclipse.e4.ui.bindings/src/org/eclipse/e4/ui/bindings/internal/BindingServiceCreationFunction.java
index 6e996fcda1d..e96f6ee7c5f 100644
--- a/bundles/org.eclipse.e4.ui.bindings/src/org/eclipse/e4/ui/bindings/internal/BindingServiceCreationFunction.java
+++ b/bundles/org.eclipse.e4.ui.bindings/src/org/eclipse/e4/ui/bindings/internal/BindingServiceCreationFunction.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2009, 2014 IBM Corporation and others.
+ * Copyright (c) 2009, 2024 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -20,7 +20,8 @@
import org.eclipse.e4.core.contexts.IEclipseContext;
import org.osgi.service.component.annotations.Component;
-@Component(service = IContextFunction.class, property = "service.context.key=org.eclipse.e4.ui.bindings.EBindingService")
+@Component(service = IContextFunction.class)
+@IContextFunction.ServiceContextKey(org.eclipse.e4.ui.bindings.EBindingService.class)
public class BindingServiceCreationFunction extends ContextFunction {
@Override
diff --git a/bundles/org.eclipse.e4.ui.css.swt.theme/.settings/org.eclipse.pde.ds.annotations.prefs b/bundles/org.eclipse.e4.ui.css.swt.theme/.settings/org.eclipse.pde.ds.annotations.prefs
index 38f9eecff8e..5faf08b7d5c 100644
--- a/bundles/org.eclipse.e4.ui.css.swt.theme/.settings/org.eclipse.pde.ds.annotations.prefs
+++ b/bundles/org.eclipse.e4.ui.css.swt.theme/.settings/org.eclipse.pde.ds.annotations.prefs
@@ -1,4 +1,4 @@
-dsVersion=V1_3
+dsVersion=V1_4
eclipse.preferences.version=1
enabled=true
generateBundleActivationPolicyLazy=true
diff --git a/bundles/org.eclipse.e4.ui.css.swt.theme/META-INF/MANIFEST.MF b/bundles/org.eclipse.e4.ui.css.swt.theme/META-INF/MANIFEST.MF
index d877cd3d9e1..ce403e6a389 100644
--- a/bundles/org.eclipse.e4.ui.css.swt.theme/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.e4.ui.css.swt.theme/META-INF/MANIFEST.MF
@@ -1,7 +1,7 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-SymbolicName: org.eclipse.e4.ui.css.swt.theme;singleton:=true
-Bundle-Version: 0.14.400.qualifier
+Bundle-Version: 0.14.500.qualifier
Bundle-Name: %pluginName
Bundle-Vendor: %providerName
Bundle-Localization: plugin
diff --git a/bundles/org.eclipse.e4.ui.css.swt/META-INF/MANIFEST.MF b/bundles/org.eclipse.e4.ui.css.swt/META-INF/MANIFEST.MF
index a10944e052f..b6e6c4e55dd 100644
--- a/bundles/org.eclipse.e4.ui.css.swt/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.e4.ui.css.swt/META-INF/MANIFEST.MF
@@ -1,7 +1,7 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-SymbolicName: org.eclipse.e4.ui.css.swt;singleton:=true
-Bundle-Version: 0.15.400.qualifier
+Bundle-Version: 0.15.500.qualifier
Bundle-Name: %pluginName
Bundle-Vendor: %providerName
Bundle-Localization: plugin
diff --git a/bundles/org.eclipse.e4.ui.css.swt/forceQualifierUpdate.txt b/bundles/org.eclipse.e4.ui.css.swt/forceQualifierUpdate.txt
index 9e833200ed5..44aa3ced45a 100644
--- a/bundles/org.eclipse.e4.ui.css.swt/forceQualifierUpdate.txt
+++ b/bundles/org.eclipse.e4.ui.css.swt/forceQualifierUpdate.txt
@@ -4,4 +4,5 @@ Bug 416898 - Some Platform UI bundles need to be touched to get API descriptions
Bug 514690 - Build failure on I20170403-2000 and I20170404-0245
https://github.com/eclipse-platform/eclipse.platform.releng.aggregator/issues/1184
https://github.com/eclipse-platform/eclipse.platform.releng.aggregator/issues/1659
-https://github.com/eclipse-platform/eclipse.platform.releng.aggregator/issues/1781
\ No newline at end of file
+https://github.com/eclipse-platform/eclipse.platform.releng.aggregator/issues/1781
+https://github.com/eclipse-platform/eclipse.platform.releng.aggregator/issues/2595
\ No newline at end of file
diff --git a/bundles/org.eclipse.e4.ui.css.swt/plugin.xml b/bundles/org.eclipse.e4.ui.css.swt/plugin.xml
index 5a16ca7c001..1ad4315b24f 100644
--- a/bundles/org.eclipse.e4.ui.css.swt/plugin.xml
+++ b/bundles/org.eclipse.e4.ui.css.swt/plugin.xml
@@ -494,6 +494,7 @@
+ bundleToResourceBundles = new WeakHashMap<>();
@Override
@@ -65,6 +67,10 @@ public boolean applyCSSProperty(Object element, String property,
case DESCRIPTION_PROP:
definition.setDescription(getLabel(value));
break;
+ case EDITABLE_PROP:
+ Boolean editable = (Boolean) engine.convert(value, Boolean.class, null);
+ definition.setEditable(editable);
+ break;
default:
return false;
}
diff --git a/bundles/org.eclipse.e4.ui.css.swt/src/org/eclipse/e4/ui/css/swt/properties/preference/EclipsePreferencesHandler.java b/bundles/org.eclipse.e4.ui.css.swt/src/org/eclipse/e4/ui/css/swt/properties/preference/EclipsePreferencesHandler.java
index 996841831a0..4cd64dd9af3 100644
--- a/bundles/org.eclipse.e4.ui.css.swt/src/org/eclipse/e4/ui/css/swt/properties/preference/EclipsePreferencesHandler.java
+++ b/bundles/org.eclipse.e4.ui.css.swt/src/org/eclipse/e4/ui/css/swt/properties/preference/EclipsePreferencesHandler.java
@@ -61,5 +61,6 @@ protected void overrideProperty(IEclipsePreferences preferences, String name, St
preferences.put(name, value);
EclipsePreferencesHelper.appendOverriddenPropertyName(preferences, name);
}
+ EclipsePreferencesHelper.overrideDefault(preferences, name, value);
}
}
diff --git a/bundles/org.eclipse.e4.ui.css.swt/src/org/eclipse/e4/ui/internal/css/swt/definition/IThemeElementDefinitionOverridable.java b/bundles/org.eclipse.e4.ui.css.swt/src/org/eclipse/e4/ui/internal/css/swt/definition/IThemeElementDefinitionOverridable.java
index 2d7c5424930..37c041e471d 100644
--- a/bundles/org.eclipse.e4.ui.css.swt/src/org/eclipse/e4/ui/internal/css/swt/definition/IThemeElementDefinitionOverridable.java
+++ b/bundles/org.eclipse.e4.ui.css.swt/src/org/eclipse/e4/ui/internal/css/swt/definition/IThemeElementDefinitionOverridable.java
@@ -27,4 +27,6 @@ public interface IThemeElementDefinitionOverridable {
void setName(String name);
void setDescription(String description);
+
+ void setEditable(Boolean editable);
}
diff --git a/bundles/org.eclipse.e4.ui.di/.settings/org.eclipse.pde.ds.annotations.prefs b/bundles/org.eclipse.e4.ui.di/.settings/org.eclipse.pde.ds.annotations.prefs
index 38f9eecff8e..5faf08b7d5c 100644
--- a/bundles/org.eclipse.e4.ui.di/.settings/org.eclipse.pde.ds.annotations.prefs
+++ b/bundles/org.eclipse.e4.ui.di/.settings/org.eclipse.pde.ds.annotations.prefs
@@ -1,4 +1,4 @@
-dsVersion=V1_3
+dsVersion=V1_4
eclipse.preferences.version=1
enabled=true
generateBundleActivationPolicyLazy=true
diff --git a/bundles/org.eclipse.e4.ui.di/META-INF/MANIFEST.MF b/bundles/org.eclipse.e4.ui.di/META-INF/MANIFEST.MF
index 2372275149b..50dd01ecb0d 100644
--- a/bundles/org.eclipse.e4.ui.di/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.e4.ui.di/META-INF/MANIFEST.MF
@@ -4,7 +4,7 @@ Bundle-Name: %pluginName
Bundle-Vendor: %providerName
Bundle-Localization: plugin
Bundle-SymbolicName: org.eclipse.e4.ui.di
-Bundle-Version: 1.5.400.qualifier
+Bundle-Version: 1.5.500.qualifier
Bundle-RequiredExecutionEnvironment: JavaSE-17
Bundle-ActivationPolicy: lazy
Import-Package: jakarta.inject;version="[2.0.0,3.0.0)",
diff --git a/bundles/org.eclipse.e4.ui.dialogs/META-INF/MANIFEST.MF b/bundles/org.eclipse.e4.ui.dialogs/META-INF/MANIFEST.MF
index 3be9ae16f8c..2a20ced09c4 100644
--- a/bundles/org.eclipse.e4.ui.dialogs/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.e4.ui.dialogs/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.e4.ui.dialogs
-Bundle-Version: 1.5.0.qualifier
+Bundle-Version: 1.6.0.qualifier
Bundle-RequiredExecutionEnvironment: JavaSE-17
Bundle-Vendor: %providerName
Bundle-Localization: plugin
diff --git a/bundles/org.eclipse.e4.ui.dialogs/src/org/eclipse/e4/ui/dialogs/filteredtree/FilteredTree.java b/bundles/org.eclipse.e4.ui.dialogs/src/org/eclipse/e4/ui/dialogs/filteredtree/FilteredTree.java
index 383024c9c44..dab531baaaf 100644
--- a/bundles/org.eclipse.e4.ui.dialogs/src/org/eclipse/e4/ui/dialogs/filteredtree/FilteredTree.java
+++ b/bundles/org.eclipse.e4.ui.dialogs/src/org/eclipse/e4/ui/dialogs/filteredtree/FilteredTree.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2014, 2020 vogella GmbH and others.
+ * Copyright (c) 2014, 2025 vogella GmbH and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -19,6 +19,7 @@
import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.e4.ui.dialogs.textbundles.E4DialogMessages;
import org.eclipse.jface.resource.JFaceResources;
+import org.eclipse.jface.viewers.AbstractFilteredViewerComposite;
import org.eclipse.jface.viewers.IContentProvider;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.TreeViewer;
@@ -26,12 +27,8 @@
import org.eclipse.swt.SWT;
import org.eclipse.swt.accessibility.AccessibleAdapter;
import org.eclipse.swt.accessibility.AccessibleEvent;
-import org.eclipse.swt.events.FocusAdapter;
-import org.eclipse.swt.events.FocusEvent;
import org.eclipse.swt.events.KeyAdapter;
import org.eclipse.swt.events.KeyEvent;
-import org.eclipse.swt.events.MouseAdapter;
-import org.eclipse.swt.events.MouseEvent;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.layout.GridData;
@@ -49,14 +46,7 @@
*
* @since 1.2
*/
-public class FilteredTree extends Composite {
-
- /**
- * The filter text widget to be used by this tree. This value may be
- * null if there is no filter widget, or if the controls have
- * not yet been created.
- */
- private Text filterText;
+public class FilteredTree extends AbstractFilteredViewerComposite {
/**
* The viewer for the filtered tree. This value should never be
@@ -64,35 +54,11 @@ public class FilteredTree extends Composite {
*/
private TreeViewer treeViewer;
- /**
- * The Composite on which the filter controls are created. This is used to
- * set the background color of the filter controls to match the surrounding
- * controls.
- */
- private Composite filterComposite;
-
- /**
- * The pattern filter for the tree. This value must not be null
- * .
- */
- private PatternFilter patternFilter;
-
- /**
- * The text to initially show in the filter text control.
- */
- private String initialText = ""; //$NON-NLS-1$
-
/**
* The job used to refresh the tree.
*/
private Job refreshJob;
- /**
- * Whether or not to show the filter controls (text and clear button). The
- * default is to show these controls.
- */
- private boolean showFilterControls;
-
private Composite treeComposite;
/**
@@ -102,12 +68,6 @@ public class FilteredTree extends Composite {
*/
private static final long SOFT_MAX_EXPAND_TIME = 200;
- /**
- * Time delay after which the search is triggered, acting as a debounce
- * mechanism.
- */
- private final long refreshJobDelayInMillis;
-
/**
* Default time for refresh job delay in ms
*/
@@ -124,8 +84,8 @@ public class FilteredTree extends Composite {
* @since 1.5
*/
public FilteredTree(Composite parent, int treeStyle, PatternFilter filter, long refreshDelayTime) {
- super(parent, SWT.NONE);
- this.refreshJobDelayInMillis = refreshDelayTime;
+ super(parent, SWT.NONE, refreshDelayTime);
+ this.parent = getParent();
init(treeStyle, filter);
}
@@ -148,52 +108,20 @@ public FilteredTree(Composite parent, int treeStyle, PatternFilter filter) {
* @see #init(int, PatternFilter)
*/
protected FilteredTree(Composite parent) {
- super(parent, SWT.NONE);
- this.refreshJobDelayInMillis = DEFAULT_REFRESH_TIME;
+ super(parent, SWT.NONE, DEFAULT_REFRESH_TIME);
}
- /**
- * Create the filtered tree.
- *
- * @param treeStyle
- * the style bits for the Tree
- * @param filter
- * the filter to be used
- *
- * @since 3.3
- */
+ @Override
protected void init(int treeStyle, PatternFilter filter) {
- patternFilter = filter;
setShowFilterControls(true);
- createControl(getParent(), treeStyle);
+ super.init(treeStyle, filter);
createRefreshJob();
setInitialText(E4DialogMessages.FilteredTree_FilterMessage);
- setFont(getParent().getFont());
}
- /**
- * Create the filtered tree's controls. Subclasses should override.
- */
+ @Override
protected void createControl(Composite parent, int treeStyle) {
- GridLayout layout = new GridLayout();
- layout.marginHeight = 0;
- layout.marginWidth = 0;
- setLayout(layout);
- setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
-
- filterComposite = new Composite(this, SWT.NONE);
-
- GridLayout filterLayout = new GridLayout();
- filterLayout.marginHeight = 0;
- filterLayout.marginWidth = 0;
- filterComposite.setLayout(filterLayout);
- filterComposite.setFont(parent.getFont());
-
- createFilterControls(filterComposite);
- GridData gridData = new GridData(SWT.FILL, SWT.BEGINNING, true, false);
- filterComposite.setVisible(isShowFilterControls());
- gridData.exclude = !isShowFilterControls();
- filterComposite.setLayoutData(gridData);
+ super.createControl(parent, treeStyle);
treeComposite = new Composite(this, SWT.NONE);
GridLayout treeCompositeLayout = new GridLayout();
@@ -206,20 +134,6 @@ protected void createControl(Composite parent, int treeStyle) {
}
- /**
- * Create the filter controls. By default, a text and corresponding tool bar
- * button that clears the contents of the text is created. Subclasses may
- * override.
- *
- * @param parent
- * parent Composite of the filter controls
- * @return the Composite that contains the filter controls
- */
- protected Composite createFilterControls(Composite parent) {
- createFilterText(parent);
- return parent;
- }
-
/**
* Creates and set up the tree and tree viewer. This method calls
* {@link #doCreateTreeViewer(Composite, int)} to create the tree viewer.
@@ -239,9 +153,9 @@ protected Control createTreeControl(Composite parent, int style) {
treeViewer.getControl().setLayoutData(data);
treeViewer.getControl().addDisposeListener(e -> refreshJob.cancel());
if (treeViewer instanceof NotifyingTreeViewer) {
- patternFilter.setUseCache(true);
+ getPatternFilter().setUseCache(true);
}
- treeViewer.addFilter(patternFilter);
+ treeViewer.addFilter(getPatternFilter());
return treeViewer.getControl();
}
@@ -267,8 +181,8 @@ protected TreeViewer doCreateTreeViewer(Composite parent, int style) {
*/
private TreeItem getFirstMatchingItem(TreeItem[] items) {
for (TreeItem item : items) {
- if (patternFilter.isLeafMatch(treeViewer, item.getData())
- && patternFilter.isElementSelectable(item.getData())) {
+ if (getPatternFilter().isLeafMatch(treeViewer, item.getData())
+ && getPatternFilter().isElementSelectable(item.getData())) {
return item;
}
TreeItem treeItem = getFirstMatchingItem(item.getItems());
@@ -310,9 +224,9 @@ public IStatus runInUIThread(IProgressMonitor monitor) {
boolean initial = initialText != null && initialText.equals(text);
if (initial) {
- patternFilter.setPattern(null);
+ getPatternFilter().setPattern(null);
} else if (text != null) {
- patternFilter.setPattern(text);
+ getPatternFilter().setPattern(text);
}
Control redrawFalseControl = treeComposite != null ? treeComposite : treeViewer.getControl();
@@ -396,6 +310,10 @@ private boolean recursiveExpand(TreeItem[] items, IProgressMonitor monitor, long
};
}
+ /**
+ * @deprecated As of 4.13 not used anymore
+ */
+ @Deprecated(since = "2025-03", forRemoval = true)
protected void updateToolbar(boolean visible) {
// nothing to do
}
@@ -409,8 +327,9 @@ protected void updateToolbar(boolean visible) {
* @param parent
* Composite of the filter text
*/
+ @Override
protected void createFilterText(Composite parent) {
- filterText = doCreateFilterText(parent);
+ super.createFilterText(parent);
filterText.getAccessible().addAccessibleListener(new AccessibleAdapter() {
@Override
public void getName(AccessibleEvent e) {
@@ -454,26 +373,6 @@ private int itemCount(TreeItem treeItem) {
}
});
- filterText.addFocusListener(new FocusAdapter() {
-
- @Override
- public void focusLost(FocusEvent e) {
- if (filterText.getText().equals(initialText)) {
- setFilterText(""); //$NON-NLS-1$
- textChanged();
- }
- }
- });
-
- filterText.addMouseListener(new MouseAdapter() {
- @Override
- public void mouseDown(MouseEvent e) {
- if (filterText.getText().equals(initialText)) {
- clearText();
- }
- }
- });
-
filterText.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
@@ -514,23 +413,9 @@ public void keyPressed(KeyEvent e) {
}
}
});
-
- filterText.addModifyListener(e -> textChanged());
-
- GridData gridData = new GridData(SWT.FILL, SWT.CENTER, true, false);
- filterText.setLayoutData(gridData);
}
- /**
- * Creates the text control for entering the filter text. Subclasses may
- * override.
- *
- * @param parent
- * the parent composite
- * @return the text widget
- *
- * @since 3.3
- */
+ @Override
protected Text doCreateFilterText(Composite parent) {
return new Text(parent, SWT.SINGLE | SWT.BORDER | SWT.SEARCH | SWT.ICON_CANCEL | SWT.ICON_SEARCH);
}
@@ -539,9 +424,7 @@ protected Text doCreateFilterText(Composite parent) {
private boolean narrowingDown;
- /**
- * Update the receiver after the text has changed.
- */
+ @Override
protected void textChanged() {
narrowingDown = previousFilterText == null
|| previousFilterText.equals(E4DialogMessages.FilteredTree_FilterMessage)
@@ -552,18 +435,6 @@ protected void textChanged() {
refreshJob.schedule(getRefreshJobDelay());
}
- /**
- * Return the time delay that should be used when scheduling the filter
- * refresh job. Subclasses may override.
- *
- * @return a time delay in milliseconds before the job should run
- *
- * @since 3.5
- */
- protected long getRefreshJobDelay() {
- return refreshJobDelayInMillis;
- }
-
/**
* Set the background for the widgets that support the filter text area.
*
@@ -578,109 +449,16 @@ public void setBackground(Color background) {
}
}
- /**
- * Clears the text in the filter text widget.
- */
- protected void clearText() {
- setFilterText(""); //$NON-NLS-1$
- textChanged();
- }
-
- /**
- * Set the text in the filter control.
- */
- protected void setFilterText(String string) {
- if (filterText != null) {
- filterText.setText(string);
- selectAll();
- }
- }
-
- /**
- * Returns the pattern filter used by this tree.
- *
- * @return The pattern filter; never null.
- */
+ @Override
public final PatternFilter getPatternFilter() {
- return patternFilter;
+ return (PatternFilter) super.getPatternFilter();
}
- /**
- * Get the tree viewer of the receiver.
- *
- * @return the tree viewer
- */
+ @Override
public TreeViewer getViewer() {
return treeViewer;
}
- /**
- * Get the filter text for the receiver, if it was created. Otherwise return
- * null.
- *
- * @return the filter Text, or null if it was not created
- */
- public Text getFilterControl() {
- return filterText;
- }
-
- /**
- * Convenience method to return the text of the filter control. If the text
- * widget is not created, then null is returned.
- *
- * @return String in the text, or null if the text does not exist
- */
- protected String getFilterString() {
- return filterText != null ? filterText.getText() : null;
- }
-
- /**
- * Set the text that will be shown until the first focus. A default value is
- * provided, so this method only need be called if overriding the default
- * initial text is desired.
- *
- * @param text
- * initial text to appear in text field
- */
- public void setInitialText(String text) {
- initialText = text;
- if (filterText != null) {
- filterText.setMessage(text);
- if (filterText.isFocusControl()) {
- setFilterText(initialText);
- textChanged();
- } else {
- getDisplay().asyncExec(() -> {
- if (!filterText.isDisposed() && filterText.isFocusControl()) {
- setFilterText(initialText);
- textChanged();
- }
- });
- }
- } else {
- setFilterText(initialText);
- textChanged();
- }
- }
-
- /**
- * Select all text in the filter text field.
- */
- protected void selectAll() {
- if (filterText != null) {
- filterText.selectAll();
- }
- }
-
- /**
- * Get the initial text for the receiver.
- *
- * @return String
- */
- protected String getInitialText() {
- return initialText;
- }
-
/**
* Return a bold font if the given element matches the given pattern.
* Clients can opt to call this method from a Viewer's label provider to get
diff --git a/bundles/org.eclipse.e4.ui.progress/.settings/org.eclipse.pde.ds.annotations.prefs b/bundles/org.eclipse.e4.ui.progress/.settings/org.eclipse.pde.ds.annotations.prefs
new file mode 100644
index 00000000000..5faf08b7d5c
--- /dev/null
+++ b/bundles/org.eclipse.e4.ui.progress/.settings/org.eclipse.pde.ds.annotations.prefs
@@ -0,0 +1,7 @@
+dsVersion=V1_4
+eclipse.preferences.version=1
+enabled=true
+generateBundleActivationPolicyLazy=true
+path=OSGI-INF
+validationErrorLevel=error
+validationErrorLevel.missingImplicitUnbindMethod=error
diff --git a/bundles/org.eclipse.e4.ui.progress/META-INF/MANIFEST.MF b/bundles/org.eclipse.e4.ui.progress/META-INF/MANIFEST.MF
index ee8ae932c12..35c9b4571fa 100644
--- a/bundles/org.eclipse.e4.ui.progress/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.e4.ui.progress/META-INF/MANIFEST.MF
@@ -1,7 +1,7 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-SymbolicName: org.eclipse.e4.ui.progress;singleton:=true
-Bundle-Version: 0.4.600.qualifier
+Bundle-Version: 0.4.700.qualifier
Bundle-Name: %pluginName
Bundle-Vendor: %providerName
Bundle-Localization: plugin
@@ -21,5 +21,5 @@ Import-Package: jakarta.annotation;version="[2.1.0,3.0.0)",
Bundle-RequiredExecutionEnvironment: JavaSE-17
Bundle-ActivationPolicy: lazy
Export-Package: org.eclipse.e4.ui.progress
-Service-Component: OSGI-INF/progress.xml
+Service-Component: OSGI-INF/org.eclipse.e4.ui.progress.internal.ProgressServiceCreationFunction.xml
Automatic-Module-Name: org.eclipse.e4.ui.progress
diff --git a/bundles/org.eclipse.e4.ui.progress/OSGI-INF/progress.xml b/bundles/org.eclipse.e4.ui.progress/OSGI-INF/progress.xml
deleted file mode 100644
index 125fe58ab4f..00000000000
--- a/bundles/org.eclipse.e4.ui.progress/OSGI-INF/progress.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/bundles/org.eclipse.e4.ui.progress/src/org/eclipse/e4/ui/progress/internal/ProgressServiceCreationFunction.java b/bundles/org.eclipse.e4.ui.progress/src/org/eclipse/e4/ui/progress/internal/ProgressServiceCreationFunction.java
index 2d527637a74..421367f7f54 100644
--- a/bundles/org.eclipse.e4.ui.progress/src/org/eclipse/e4/ui/progress/internal/ProgressServiceCreationFunction.java
+++ b/bundles/org.eclipse.e4.ui.progress/src/org/eclipse/e4/ui/progress/internal/ProgressServiceCreationFunction.java
@@ -16,8 +16,13 @@
import org.eclipse.e4.core.contexts.ContextFunction;
import org.eclipse.e4.core.contexts.ContextInjectionFactory;
+import org.eclipse.e4.core.contexts.IContextFunction;
import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.ui.progress.IProgressService;
+import org.osgi.service.component.annotations.Component;
+@Component(service = IContextFunction.class)
+@IContextFunction.ServiceContextKey(IProgressService.class)
public class ProgressServiceCreationFunction extends ContextFunction {
@Override
diff --git a/bundles/org.eclipse.e4.ui.services/.settings/org.eclipse.pde.ds.annotations.prefs b/bundles/org.eclipse.e4.ui.services/.settings/org.eclipse.pde.ds.annotations.prefs
index 38f9eecff8e..5faf08b7d5c 100644
--- a/bundles/org.eclipse.e4.ui.services/.settings/org.eclipse.pde.ds.annotations.prefs
+++ b/bundles/org.eclipse.e4.ui.services/.settings/org.eclipse.pde.ds.annotations.prefs
@@ -1,4 +1,4 @@
-dsVersion=V1_3
+dsVersion=V1_4
eclipse.preferences.version=1
enabled=true
generateBundleActivationPolicyLazy=true
diff --git a/bundles/org.eclipse.e4.ui.services/META-INF/MANIFEST.MF b/bundles/org.eclipse.e4.ui.services/META-INF/MANIFEST.MF
index 7995d6f3ad1..885b29de149 100644
--- a/bundles/org.eclipse.e4.ui.services/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.e4.ui.services/META-INF/MANIFEST.MF
@@ -1,7 +1,7 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-SymbolicName: org.eclipse.e4.ui.services;singleton:=true
-Bundle-Version: 1.6.300.qualifier
+Bundle-Version: 1.6.400.qualifier
Bundle-Name: %pluginName
Bundle-Vendor: %providerName
Bundle-Localization: plugin
diff --git a/bundles/org.eclipse.e4.ui.services/src/org/eclipse/e4/ui/services/events/EventBrokerFactory.java b/bundles/org.eclipse.e4.ui.services/src/org/eclipse/e4/ui/services/events/EventBrokerFactory.java
index ff99ee48454..efd74d1599e 100644
--- a/bundles/org.eclipse.e4.ui.services/src/org/eclipse/e4/ui/services/events/EventBrokerFactory.java
+++ b/bundles/org.eclipse.e4.ui.services/src/org/eclipse/e4/ui/services/events/EventBrokerFactory.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2009, 2016 IBM Corporation and others.
+ * Copyright (c) 2009, 2024 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -23,12 +23,11 @@
import org.osgi.service.component.annotations.Reference;
import org.osgi.service.event.EventAdmin;
-
-
/**
* Use this class to obtain an instance of {@link IEventBroker}.
*/
-@Component(service = IContextFunction.class, property = "service.context.key=org.eclipse.e4.core.services.events.IEventBroker")
+@Component(service = IContextFunction.class)
+@IContextFunction.ServiceContextKey(IEventBroker.class)
public class EventBrokerFactory extends ContextFunction {
// mandatory static reference to EventAdmin to ensure it is available before
@@ -50,4 +49,3 @@ public Object compute(IEclipseContext context, String contextKey) {
return broker;
}
}
-
diff --git a/bundles/org.eclipse.e4.ui.workbench.addons.swt/.project b/bundles/org.eclipse.e4.ui.workbench.addons.swt/.project
index 2091c485f6e..8e8b8db761b 100644
--- a/bundles/org.eclipse.e4.ui.workbench.addons.swt/.project
+++ b/bundles/org.eclipse.e4.ui.workbench.addons.swt/.project
@@ -30,6 +30,11 @@
+
+ org.eclipse.pde.ds.core.builder
+
+
+ org.eclipse.m2e.core.maven2Nature
diff --git a/bundles/org.eclipse.e4.ui.workbench.addons.swt/.settings/org.eclipse.pde.ds.annotations.prefs b/bundles/org.eclipse.e4.ui.workbench.addons.swt/.settings/org.eclipse.pde.ds.annotations.prefs
new file mode 100644
index 00000000000..5faf08b7d5c
--- /dev/null
+++ b/bundles/org.eclipse.e4.ui.workbench.addons.swt/.settings/org.eclipse.pde.ds.annotations.prefs
@@ -0,0 +1,7 @@
+dsVersion=V1_4
+eclipse.preferences.version=1
+enabled=true
+generateBundleActivationPolicyLazy=true
+path=OSGI-INF
+validationErrorLevel=error
+validationErrorLevel.missingImplicitUnbindMethod=error
diff --git a/bundles/org.eclipse.e4.ui.workbench.addons.swt/META-INF/MANIFEST.MF b/bundles/org.eclipse.e4.ui.workbench.addons.swt/META-INF/MANIFEST.MF
index d1349e8e07e..210347e6879 100644
--- a/bundles/org.eclipse.e4.ui.workbench.addons.swt/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.e4.ui.workbench.addons.swt/META-INF/MANIFEST.MF
@@ -1,7 +1,7 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-SymbolicName: org.eclipse.e4.ui.workbench.addons.swt;singleton:=true
-Bundle-Version: 1.5.500.qualifier
+Bundle-Version: 1.5.600.qualifier
Bundle-Name: %pluginName
Bundle-Vendor: %providerName
Bundle-Localization: plugin
@@ -18,6 +18,10 @@ Require-Bundle: org.eclipse.e4.ui.model.workbench;bundle-version="1.0.0",
org.eclipse.e4.ui.di;bundle-version="0.10.0",
org.eclipse.e4.ui.services;bundle-version="1.0.0",
org.eclipse.emf.ecore.xmi;bundle-version="2.7.0"
+Service-Component: OSGI-INF/org.eclipse.e4.ui.workbench.addons.swt.CleanupProcessor.xml,
+ OSGI-INF/org.eclipse.e4.ui.workbench.addons.swt.DnDProcessor.xml,
+ OSGI-INF/org.eclipse.e4.ui.workbench.addons.swt.MinMaxProcessor.xml,
+ OSGI-INF/org.eclipse.e4.ui.workbench.addons.swt.SplitterProcessor.xml
Bundle-RequiredExecutionEnvironment: JavaSE-17
Bundle-ActivationPolicy: lazy
Import-Package: jakarta.annotation;version="[2.1.0,3.0.0)",
diff --git a/bundles/org.eclipse.e4.ui.workbench.addons.swt/build.properties b/bundles/org.eclipse.e4.ui.workbench.addons.swt/build.properties
index 774cbbd3226..cf9fdf20869 100644
--- a/bundles/org.eclipse.e4.ui.workbench.addons.swt/build.properties
+++ b/bundles/org.eclipse.e4.ui.workbench.addons.swt/build.properties
@@ -17,7 +17,7 @@ bin.includes = META-INF/,\
.,\
about.html,\
plugin.properties,\
- plugin.xml,\
- icons/
+ icons/,\
+ OSGI-INF/
src.includes = icons/,\
about.html
diff --git a/bundles/org.eclipse.e4.ui.workbench.addons.swt/plugin.xml b/bundles/org.eclipse.e4.ui.workbench.addons.swt/plugin.xml
deleted file mode 100644
index f6c46652e79..00000000000
--- a/bundles/org.eclipse.e4.ui.workbench.addons.swt/plugin.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/bundles/org.eclipse.e4.ui.workbench.addons.swt/src/org/eclipse/e4/ui/workbench/addons/swt/CleanupProcessor.java b/bundles/org.eclipse.e4.ui.workbench.addons.swt/src/org/eclipse/e4/ui/workbench/addons/swt/CleanupProcessor.java
index 190c518ff0f..f50a82be30c 100644
--- a/bundles/org.eclipse.e4.ui.workbench.addons.swt/src/org/eclipse/e4/ui/workbench/addons/swt/CleanupProcessor.java
+++ b/bundles/org.eclipse.e4.ui.workbench.addons.swt/src/org/eclipse/e4/ui/workbench/addons/swt/CleanupProcessor.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2013, 2014 IBM Corporation and others.
+ * Copyright (c) 2013, 2024 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -19,11 +19,14 @@
import org.eclipse.e4.ui.model.application.MAddon;
import org.eclipse.e4.ui.model.application.MApplication;
import org.eclipse.e4.ui.workbench.modeling.EModelService;
+import org.eclipse.e4.ui.workbench.modeling.IModelProcessorContribution;
+import org.osgi.service.component.annotations.Component;
/**
* Model processors which adds the cleanup add-on to the application model
*/
-public class CleanupProcessor {
+@Component
+public class CleanupProcessor implements IModelProcessorContribution {
@Execute
void addCleanupAddon(MApplication app, EModelService modelService) {
List addons = app.getAddons();
diff --git a/bundles/org.eclipse.e4.ui.workbench.addons.swt/src/org/eclipse/e4/ui/workbench/addons/swt/DnDProcessor.java b/bundles/org.eclipse.e4.ui.workbench.addons.swt/src/org/eclipse/e4/ui/workbench/addons/swt/DnDProcessor.java
index b0a755230b3..3c89c46f14e 100644
--- a/bundles/org.eclipse.e4.ui.workbench.addons.swt/src/org/eclipse/e4/ui/workbench/addons/swt/DnDProcessor.java
+++ b/bundles/org.eclipse.e4.ui.workbench.addons.swt/src/org/eclipse/e4/ui/workbench/addons/swt/DnDProcessor.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2013, 2014 IBM Corporation and others.
+ * Copyright (c) 2013, 2024 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -19,11 +19,14 @@
import org.eclipse.e4.ui.model.application.MAddon;
import org.eclipse.e4.ui.model.application.MApplication;
import org.eclipse.e4.ui.workbench.modeling.EModelService;
+import org.eclipse.e4.ui.workbench.modeling.IModelProcessorContribution;
+import org.osgi.service.component.annotations.Component;
/**
* Model processors which adds the DnD add-on to the application model
*/
-public class DnDProcessor {
+@Component
+public class DnDProcessor implements IModelProcessorContribution {
@Execute
void addDnDAddon(MApplication app, EModelService modelService) {
List addons = app.getAddons();
diff --git a/bundles/org.eclipse.e4.ui.workbench.addons.swt/src/org/eclipse/e4/ui/workbench/addons/swt/MinMaxProcessor.java b/bundles/org.eclipse.e4.ui.workbench.addons.swt/src/org/eclipse/e4/ui/workbench/addons/swt/MinMaxProcessor.java
index 075825f72a7..463ff6a32bb 100644
--- a/bundles/org.eclipse.e4.ui.workbench.addons.swt/src/org/eclipse/e4/ui/workbench/addons/swt/MinMaxProcessor.java
+++ b/bundles/org.eclipse.e4.ui.workbench.addons.swt/src/org/eclipse/e4/ui/workbench/addons/swt/MinMaxProcessor.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2013, 2014 IBM Corporation and others.
+ * Copyright (c) 2013, 2024 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -19,11 +19,14 @@
import org.eclipse.e4.ui.model.application.MAddon;
import org.eclipse.e4.ui.model.application.MApplication;
import org.eclipse.e4.ui.workbench.modeling.EModelService;
+import org.eclipse.e4.ui.workbench.modeling.IModelProcessorContribution;
+import org.osgi.service.component.annotations.Component;
/**
* Model processors which adds the MinMax add-on to the application model
*/
-public class MinMaxProcessor {
+@Component
+public class MinMaxProcessor implements IModelProcessorContribution {
@Execute
void addMinMaxAddon(MApplication app, EModelService modelService) {
List addons = app.getAddons();
diff --git a/bundles/org.eclipse.e4.ui.workbench.addons.swt/src/org/eclipse/e4/ui/workbench/addons/swt/SplitterProcessor.java b/bundles/org.eclipse.e4.ui.workbench.addons.swt/src/org/eclipse/e4/ui/workbench/addons/swt/SplitterProcessor.java
index 8c1130cc85a..823353040ac 100644
--- a/bundles/org.eclipse.e4.ui.workbench.addons.swt/src/org/eclipse/e4/ui/workbench/addons/swt/SplitterProcessor.java
+++ b/bundles/org.eclipse.e4.ui.workbench.addons.swt/src/org/eclipse/e4/ui/workbench/addons/swt/SplitterProcessor.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2013, 2014 IBM Corporation and others.
+ * Copyright (c) 2013, 2024 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -19,12 +19,14 @@
import org.eclipse.e4.ui.model.application.MAddon;
import org.eclipse.e4.ui.model.application.MApplication;
import org.eclipse.e4.ui.workbench.modeling.EModelService;
+import org.eclipse.e4.ui.workbench.modeling.IModelProcessorContribution;
+import org.osgi.service.component.annotations.Component;
/**
* Model processors which adds the Splitter add-on to the application model
*/
-
-public class SplitterProcessor {
+@Component
+public class SplitterProcessor implements IModelProcessorContribution {
@Execute
void addSplitterAddon(MApplication app, EModelService modelService) {
List addons = app.getAddons();
diff --git a/bundles/org.eclipse.e4.ui.workbench.renderers.swt/META-INF/MANIFEST.MF b/bundles/org.eclipse.e4.ui.workbench.renderers.swt/META-INF/MANIFEST.MF
index cc823104a99..2bef9ec5ed5 100644
--- a/bundles/org.eclipse.e4.ui.workbench.renderers.swt/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.e4.ui.workbench.renderers.swt/META-INF/MANIFEST.MF
@@ -1,7 +1,7 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-SymbolicName: org.eclipse.e4.ui.workbench.renderers.swt;singleton:=true
-Bundle-Version: 0.16.600.qualifier
+Bundle-Version: 0.16.700.qualifier
Bundle-Name: %pluginName
Bundle-Vendor: %providerName
Bundle-Localization: plugin
diff --git a/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/ContributedPartRenderer.java b/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/ContributedPartRenderer.java
index b751024b6ac..dcbc5ef566f 100644
--- a/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/ContributedPartRenderer.java
+++ b/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/ContributedPartRenderer.java
@@ -103,8 +103,10 @@ public boolean setFocus() {
Object object = part.getObject();
if (object != null && isEnabled()) {
IPresentationEngine pe = part.getContext().get(IPresentationEngine.class);
- pe.focusGui(part);
- return true;
+ if (pe != null) {
+ pe.focusGui(part);
+ return true;
+ }
}
return super.setFocus();
} finally {
diff --git a/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/ToolItemUpdater.java b/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/ToolItemUpdater.java
index b6998a492fc..70bc2083fa2 100644
--- a/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/ToolItemUpdater.java
+++ b/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/ToolItemUpdater.java
@@ -55,7 +55,7 @@ public void updateContributionItems(Selector selector) {
if (timestampOfEarliestQueuedUpdate == 0) {
timestampOfEarliestQueuedUpdate = System.nanoTime();
}
- if (System.nanoTime() - timestampOfEarliestQueuedUpdate > DELAY * 1_000_000) {
+ if (System.nanoTime() - timestampOfEarliestQueuedUpdate > DELAY * 1_000_000L) {
// runnable was not called within the last DELAY milliseconds, do it now.
// For scenario: a plugin is forcing that updateContributionItems is called
// again and again in less than given DELAY frequency. TimerExec would then
diff --git a/bundles/org.eclipse.e4.ui.workbench.swt/.settings/org.eclipse.pde.ds.annotations.prefs b/bundles/org.eclipse.e4.ui.workbench.swt/.settings/org.eclipse.pde.ds.annotations.prefs
index 73a356b6d05..b5c60ed2648 100644
--- a/bundles/org.eclipse.e4.ui.workbench.swt/.settings/org.eclipse.pde.ds.annotations.prefs
+++ b/bundles/org.eclipse.e4.ui.workbench.swt/.settings/org.eclipse.pde.ds.annotations.prefs
@@ -1,5 +1,5 @@
classpath=true
-dsVersion=V1_3
+dsVersion=V1_4
eclipse.preferences.version=1
enabled=true
generateBundleActivationPolicyLazy=true
diff --git a/bundles/org.eclipse.e4.ui.workbench.swt/META-INF/MANIFEST.MF b/bundles/org.eclipse.e4.ui.workbench.swt/META-INF/MANIFEST.MF
index 3322d6b5719..ce84f6bee72 100644
--- a/bundles/org.eclipse.e4.ui.workbench.swt/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.e4.ui.workbench.swt/META-INF/MANIFEST.MF
@@ -1,7 +1,7 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-SymbolicName: org.eclipse.e4.ui.workbench.swt;singleton:=true
-Bundle-Version: 0.17.500.qualifier
+Bundle-Version: 0.17.700.qualifier
Bundle-Name: %pluginName
Bundle-Vendor: %providerName
Bundle-Localization: plugin
diff --git a/bundles/org.eclipse.e4.ui.workbench.swt/src/org/eclipse/e4/ui/internal/workbench/swt/MenuServiceCreationFunction.java b/bundles/org.eclipse.e4.ui.workbench.swt/src/org/eclipse/e4/ui/internal/workbench/swt/MenuServiceCreationFunction.java
index 5b86b0c82ef..5aa63815560 100644
--- a/bundles/org.eclipse.e4.ui.workbench.swt/src/org/eclipse/e4/ui/internal/workbench/swt/MenuServiceCreationFunction.java
+++ b/bundles/org.eclipse.e4.ui.workbench.swt/src/org/eclipse/e4/ui/internal/workbench/swt/MenuServiceCreationFunction.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2010, 2016 IBM Corporation and others.
+ * Copyright (c) 2010, 2024 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -20,7 +20,8 @@
import org.eclipse.e4.core.di.InjectionException;
import org.osgi.service.component.annotations.Component;
-@Component(service = IContextFunction.class, property = "service.context.key=org.eclipse.e4.ui.services.EMenuService")
+@Component(service = IContextFunction.class)
+@IContextFunction.ServiceContextKey(org.eclipse.e4.ui.services.EMenuService.class)
public class MenuServiceCreationFunction extends ContextFunction {
@Override
diff --git a/bundles/org.eclipse.e4.ui.workbench.swt/src/org/eclipse/e4/ui/internal/workbench/swt/PartRenderingEngine.java b/bundles/org.eclipse.e4.ui.workbench.swt/src/org/eclipse/e4/ui/internal/workbench/swt/PartRenderingEngine.java
index cf08b6a17b6..2ed9cce1a36 100644
--- a/bundles/org.eclipse.e4.ui.workbench.swt/src/org/eclipse/e4/ui/internal/workbench/swt/PartRenderingEngine.java
+++ b/bundles/org.eclipse.e4.ui.workbench.swt/src/org/eclipse/e4/ui/internal/workbench/swt/PartRenderingEngine.java
@@ -1440,6 +1440,7 @@ protected void resetOverriddenPreferences() {
}
protected void resetOverriddenPreferences(IEclipsePreferences preferences) {
+ EclipsePreferencesHelper.resetOverriddenDefaults(preferences);
for (String name : getOverriddenPropertyNames(preferences)) {
preferences.remove(name);
}
diff --git a/bundles/org.eclipse.e4.ui.workbench.swt/src/org/eclipse/e4/ui/internal/workbench/swt/StatusReporterCreationFunction.java b/bundles/org.eclipse.e4.ui.workbench.swt/src/org/eclipse/e4/ui/internal/workbench/swt/StatusReporterCreationFunction.java
index fdc8204fa7e..444e3a80bab 100644
--- a/bundles/org.eclipse.e4.ui.workbench.swt/src/org/eclipse/e4/ui/internal/workbench/swt/StatusReporterCreationFunction.java
+++ b/bundles/org.eclipse.e4.ui.workbench.swt/src/org/eclipse/e4/ui/internal/workbench/swt/StatusReporterCreationFunction.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2010, 2016 IBM Corporation and others.
+ * Copyright (c) 2010, 2024 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -19,13 +19,13 @@
import org.eclipse.e4.core.contexts.IEclipseContext;
import org.osgi.service.component.annotations.Component;
-@Component(service = IContextFunction.class, property = "service.context.key=org.eclipse.e4.core.services.statusreporter.StatusReporter")
+@Component(service = IContextFunction.class)
+@IContextFunction.ServiceContextKey(org.eclipse.e4.core.services.statusreporter.StatusReporter.class)
public class StatusReporterCreationFunction extends ContextFunction {
@Override
public Object compute(IEclipseContext context, String contextKey) {
- return ContextInjectionFactory.make(WorkbenchStatusReporter.class,
- context);
+ return ContextInjectionFactory.make(WorkbenchStatusReporter.class, context);
}
}
diff --git a/bundles/org.eclipse.e4.ui.workbench.swt/src/org/eclipse/e4/ui/workbench/swt/internal/copy/ViewPatternFilter.java b/bundles/org.eclipse.e4.ui.workbench.swt/src/org/eclipse/e4/ui/workbench/swt/internal/copy/ViewPatternFilter.java
index ac32583f21e..9b973a411f9 100644
--- a/bundles/org.eclipse.e4.ui.workbench.swt/src/org/eclipse/e4/ui/workbench/swt/internal/copy/ViewPatternFilter.java
+++ b/bundles/org.eclipse.e4.ui.workbench.swt/src/org/eclipse/e4/ui/workbench/swt/internal/copy/ViewPatternFilter.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2005, 2019 IBM Corporation and others.
+ * Copyright (c) 2005, 2024 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -14,6 +14,7 @@
*******************************************************************************/
package org.eclipse.e4.ui.workbench.swt.internal.copy;
+import java.util.stream.Stream;
import org.eclipse.e4.core.contexts.IEclipseContext;
import org.eclipse.e4.ui.dialogs.filteredtree.PatternFilter;
import org.eclipse.e4.ui.model.LocalizationHelper;
@@ -42,20 +43,8 @@ public boolean isElementSelectable(Object element) {
@Override
protected boolean isLeafMatch(Viewer viewer, Object element) {
- if (element instanceof String) {
- return false;
- }
-
- String text = null;
- if (element instanceof MPartDescriptor) {
- MPartDescriptor desc = (MPartDescriptor) element;
- text = LocalizationHelper.getLocalized(desc.getLabel(), desc,
- context);
- if (wordMatches(text)) {
- return true;
- }
- }
-
- return false;
+ return element instanceof MPartDescriptor desc && Stream.of(desc.getLabel(), desc.getCategory()) //
+ .map(text -> LocalizationHelper.getLocalized(text, desc, context)) //
+ .anyMatch(this::wordMatches);
}
}
diff --git a/bundles/org.eclipse.e4.ui.workbench/.settings/org.eclipse.pde.ds.annotations.prefs b/bundles/org.eclipse.e4.ui.workbench/.settings/org.eclipse.pde.ds.annotations.prefs
index 73a356b6d05..b5c60ed2648 100644
--- a/bundles/org.eclipse.e4.ui.workbench/.settings/org.eclipse.pde.ds.annotations.prefs
+++ b/bundles/org.eclipse.e4.ui.workbench/.settings/org.eclipse.pde.ds.annotations.prefs
@@ -1,5 +1,5 @@
classpath=true
-dsVersion=V1_3
+dsVersion=V1_4
eclipse.preferences.version=1
enabled=true
generateBundleActivationPolicyLazy=true
diff --git a/bundles/org.eclipse.e4.ui.workbench/META-INF/MANIFEST.MF b/bundles/org.eclipse.e4.ui.workbench/META-INF/MANIFEST.MF
index f4f1df6ffe7..2ea4c0a146f 100644
--- a/bundles/org.eclipse.e4.ui.workbench/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.e4.ui.workbench/META-INF/MANIFEST.MF
@@ -1,7 +1,7 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-SymbolicName: org.eclipse.e4.ui.workbench;singleton:=true
-Bundle-Version: 1.15.500.qualifier
+Bundle-Version: 1.16.100.qualifier
Bundle-Name: %pluginName
Bundle-Vendor: %providerName
Bundle-Localization: plugin
@@ -37,7 +37,8 @@ Export-Package: org.eclipse.e4.ui.internal.workbench;
Bundle-Activator: org.eclipse.e4.ui.internal.workbench.Activator
Import-Package: jakarta.annotation;version="[2.1.0,3.0.0)",
jakarta.inject;version="[2.0.0,3.0.0)",
- org.osgi.service.event;version="[1.3.0,2.0.0)"
+ org.osgi.service.event;version="[1.3.0,2.0.0)",
+ org.osgi.service.event.propertytypes;version="[1.4.0,2.0.0)"
Require-Capability: osgi.extender;
filter:="(&(osgi.extender=osgi.component)(version>=1.2)(!(version>=2.0)))",
osgi.service;
diff --git a/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/internal/LocaleChangeServiceContextFunction.java b/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/internal/LocaleChangeServiceContextFunction.java
index 36873f12350..717f56de302 100644
--- a/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/internal/LocaleChangeServiceContextFunction.java
+++ b/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/internal/LocaleChangeServiceContextFunction.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2013, 2016 Dirk Fauth and others.
+ * Copyright (c) 2013, 2024 Dirk Fauth and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -24,13 +24,13 @@
/**
* Context function to provide the LocaleChangeServiceImpl to the application context.
*/
-@Component(service = IContextFunction.class, property = "service.context.key=org.eclipse.e4.core.services.nls.ILocaleChangeService")
+@Component(service = IContextFunction.class)
+@IContextFunction.ServiceContextKey(ILocaleChangeService.class)
public class LocaleChangeServiceContextFunction extends ContextFunction {
@Override
public Object compute(IEclipseContext context, String contextKey) {
- ILocaleChangeService lcService = ContextInjectionFactory.make(
- LocaleChangeServiceImpl.class, context);
+ ILocaleChangeService lcService = ContextInjectionFactory.make(LocaleChangeServiceImpl.class, context);
// add the new object to the application context
MApplication application = context.get(MApplication.class);
diff --git a/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/internal/workbench/ApplicationPartServiceImpl.java b/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/internal/workbench/ApplicationPartServiceImpl.java
index 6d15abbec0b..134a77c48b3 100644
--- a/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/internal/workbench/ApplicationPartServiceImpl.java
+++ b/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/internal/workbench/ApplicationPartServiceImpl.java
@@ -27,6 +27,7 @@
import org.eclipse.e4.ui.model.application.ui.advanced.MPerspective;
import org.eclipse.e4.ui.model.application.ui.advanced.MPlaceholder;
import org.eclipse.e4.ui.model.application.ui.basic.MPart;
+import org.eclipse.e4.ui.model.application.ui.basic.MWindow;
import org.eclipse.e4.ui.workbench.UIEvents;
import org.eclipse.e4.ui.workbench.modeling.EModelService;
import org.eclipse.e4.ui.workbench.modeling.EPartService;
@@ -35,7 +36,7 @@
public class ApplicationPartServiceImpl implements EPartService {
private static final Supplier NO_VALID_PARTSERVICE = () -> new IllegalStateException(
- "No valid PartService can be aquired from the current context"); //$NON-NLS-1$
+ "No valid PartService can be acquired from the current context"); //$NON-NLS-1$
private MApplication application;
@@ -50,15 +51,17 @@ public class ApplicationPartServiceImpl implements EPartService {
private Optional getActiveWindowService() {
IEclipseContext activeWindowContext = application.getContext().getActiveChild();
if (activeWindowContext == null) {
- throw new IllegalStateException("Application does not have an active window"); //$NON-NLS-1$
+ // in this case the application has no focus so we can't determine the active
+ // child.
+ return Optional.empty();
}
EPartService activeWindowPartService = activeWindowContext.get(EPartService.class);
if (activeWindowPartService == null) {
throw new IllegalStateException("Active window context is invalid"); //$NON-NLS-1$
}
if (activeWindowPartService == this) {
- // in this cas we would run into an infinite recursion, so from the current
- // active window we can't aquire another part service
+ // in this case we would run into an infinite recursion, so from the current
+ // active window we can't acquire another part service
return Optional.empty();
}
return Optional.of(activeWindowPartService);
@@ -68,10 +71,20 @@ private Optional getActiveWindowService(MPart part) {
return getActiveWindowService().or(() -> {
IEclipseContext context = part.getContext();
if (context != null) {
+ // First try the context of the part
EPartService partService = context.get(EPartService.class);
if (partService instanceof PartServiceImpl) {
return Optional.of(partService);
}
+ // Otherwise use the context of the contained window
+ MWindow window = modelService.getTopLevelWindowFor(part);
+ if (window != null) {
+ IEclipseContext windowContext = window.getContext();
+ EPartService windowPartService = windowContext.get(EPartService.class);
+ if (windowPartService instanceof PartServiceImpl) {
+ return Optional.of(windowPartService);
+ }
+ }
}
return Optional.empty();
});
diff --git a/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/internal/workbench/ExtensionTrackeContextFunction.java b/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/internal/workbench/ExtensionTrackeContextFunction.java
index 949b7b4d6ec..6f5b03b94ad 100644
--- a/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/internal/workbench/ExtensionTrackeContextFunction.java
+++ b/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/internal/workbench/ExtensionTrackeContextFunction.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2022 Christoph Läubrich and others.
+ * Copyright (c) 2022, 2024 Christoph Läubrich and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -27,10 +27,11 @@
import org.osgi.service.component.annotations.Reference;
import org.osgi.service.event.Event;
import org.osgi.service.event.EventHandler;
+import org.osgi.service.event.propertytypes.EventTopics;
-@Component(service = IContextFunction.class, property = {
- "service.context.key=org.eclipse.core.runtime.dynamichelpers.IExtensionTracker",
- "event.topics=" + IEclipseContext.TOPIC_DISPOSE })
+@Component(service = IContextFunction.class)
+@IContextFunction.ServiceContextKey(IExtensionTracker.class)
+@EventTopics(IEclipseContext.TOPIC_DISPOSE)
public class ExtensionTrackeContextFunction extends ContextFunction implements EventHandler {
@Reference
diff --git a/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/internal/workbench/ModelAssembler.java b/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/internal/workbench/ModelAssembler.java
index 325023c8402..5965a64d48c 100644
--- a/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/internal/workbench/ModelAssembler.java
+++ b/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/internal/workbench/ModelAssembler.java
@@ -19,24 +19,26 @@
package org.eclipse.e4.ui.internal.workbench;
+import static org.eclipse.e4.ui.workbench.modeling.IModelProcessorContribution.APPLY_ALWAYS;
+import static org.eclipse.e4.ui.workbench.modeling.IModelProcessorContribution.APPLY_PROPERTY_KEY;
+import static org.eclipse.e4.ui.workbench.modeling.IModelProcessorContribution.BEFORE_FRAGMENT_PROPERTY_KEY;
+
import jakarta.annotation.PostConstruct;
import jakarta.annotation.PreDestroy;
+import java.io.PrintStream;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Collection;
-import java.util.Dictionary;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
-import java.util.Map.Entry;
import java.util.Set;
import java.util.SortedSet;
import java.util.TreeSet;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.atomic.AtomicReference;
-import java.util.stream.Collectors;
import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.core.runtime.IExtension;
import org.eclipse.core.runtime.IExtensionPoint;
@@ -58,8 +60,6 @@
import org.eclipse.e4.ui.workbench.modeling.IModelProcessorContribution;
import org.eclipse.e4.ui.workbench.modeling.IModelProcessorContribution.ModelElement;
import org.eclipse.emf.common.util.Diagnostic;
-import org.eclipse.emf.common.util.EList;
-import org.eclipse.emf.common.util.TreeIterator;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EStructuralFeature;
@@ -80,7 +80,6 @@
import org.osgi.service.component.annotations.ReferenceCardinality;
import org.osgi.service.component.annotations.ReferencePolicy;
import org.osgi.service.component.annotations.ReferencePolicyOption;
-import org.osgi.service.log.LogLevel;
import org.osgi.service.log.Logger;
import org.osgi.service.log.LoggerFactory;
import org.osgi.util.tracker.BundleTracker;
@@ -101,9 +100,8 @@ private class Bucket {
Set containedElementIds = new LinkedHashSet<>();
}
- private static class FragmentWrapperElementMapping {
- ModelFragmentWrapper wrapper;
- List elements;
+ private static record FragmentWrapperElementMapping(ModelFragmentWrapper wrapper,
+ List elements) {
}
private class ModelFragmentBundleTracker implements BundleTrackerCustomizer> {
@@ -116,12 +114,9 @@ public List addingBundle(Bundle bundle, BundleEve
List wrappers = getModelFragmentWrapperFromBundle(bundle,
ModelAssembler.this.initial);
- List mappings = wrappers.stream().map(w -> {
- FragmentWrapperElementMapping mapping = new FragmentWrapperElementMapping();
- mapping.wrapper = w;
- mapping.elements = new ArrayList<>(w.getModelFragment().getElements());
- return mapping;
- }).collect(Collectors.toList());
+ List mappings = wrappers.stream()
+ .map(w -> new FragmentWrapperElementMapping(w, List.copyOf(w.getModelFragment().getElements())))
+ .toList();
// we skip direct processing in case the startup model processing is not done
// yet
@@ -147,8 +142,7 @@ public void removedBundle(Bundle bundle, BundleEvent event, List m.elements.stream()).forEach(appElement -> {
// TODO implement removal of contributions, e.g. MenuContributions
- if (appElement instanceof MUIElement) {
- MUIElement element = (MUIElement) appElement;
+ if (appElement instanceof MUIElement element) {
element.setToBeRendered(false);
if (element.getParent() != null) {
element.getParent().getChildren().remove(element);
@@ -165,7 +159,7 @@ public void removedBundle(Bundle bundle, BundleEvent event, List registry = new AtomicReference<>();
+ private final AtomicReference registry = new AtomicReference<>();
- private CopyOnWriteArrayList> processorContributions = new CopyOnWriteArrayList<>();
+ private final List> processorContributions = new CopyOnWriteArrayList<>();
- BundleContext bundleContext;
+ private BundleContext bundleContext;
- BundleTracker> tracker;
+ private BundleTracker> tracker;
private boolean processModelExecuted = false;
@@ -276,8 +268,7 @@ void unregisterModelProcessorContribution(ServiceReference collect = this.tracker.getTracked().values().stream().flatMap(List::stream)
- .map(w -> w.wrapper).collect(Collectors.toList());
- wrappers.addAll(collect);
+ this.tracker.getTracked().values().stream().flatMap(List::stream)
+ .map(FragmentWrapperElementMapping::wrapper).forEach(wrappers::add);
}
processFragmentWrappers(wrappers);
@@ -388,8 +379,7 @@ private List getModelFragmentWrapperFromBundle(Bundle bund
// check if the value for apply is valid
if (!ALWAYS.equals(apply) && !INITIAL.equals(apply) && !NOTEXISTS.equals(apply)) {
- log(LogLevel.WARN, "Model-Fragment header apply attribute {} is invalid, falling back to always", //$NON-NLS-1$
- apply);
+ warn("Model-Fragment header apply attribute {} is invalid, falling back to always", apply); //$NON-NLS-1$
apply = ALWAYS;
}
@@ -404,8 +394,7 @@ private List getModelFragmentWrapperFromBundle(Bundle bund
}
}
} else {
- log(LogLevel.ERROR, "Model-Fragment header value {} in bundle {} is invalid", //$NON-NLS-1$
- fragmentHeader, bundle.getSymbolicName());
+ error("Model-Fragment header value {} in bundle {} is invalid", fragmentHeader, bundle.getSymbolicName()); //$NON-NLS-1$
}
return wrappers;
@@ -422,11 +411,8 @@ public void processFragmentWrappers(Collection wrappers) {
Map parentIdToBuckets = new LinkedHashMap<>();
for (ModelFragmentWrapper fragmentWrapper : wrappers) {
MModelFragment fragment = fragmentWrapper.getModelFragment();
- String parentId = MStringModelFragment.class.cast(fragment).getParentElementId();
- if (!parentIdToBuckets.containsKey(parentId)) {
- parentIdToBuckets.put(parentId, new Bucket());
- }
- Bucket b = parentIdToBuckets.get(parentId);
+ String parentId = ((MStringModelFragment) fragment).getParentElementId();
+ Bucket b = parentIdToBuckets.computeIfAbsent(parentId, id -> new Bucket());
if (elementIdToBucket.containsKey(parentId)) {
Bucket parentBucket = elementIdToBucket.get(parentId);
parentBucket.dependencies.add(b);
@@ -454,16 +440,15 @@ public void processFragmentWrappers(Collection wrappers) {
private List createUnifiedFragmentList(Map elementIdToBucket) {
List fragmentList = new ArrayList<>();
Set checkedElementIds = new LinkedHashSet<>();
- for (Entry entry : elementIdToBucket.entrySet()) {
- if (checkedElementIds.contains(entry.getKey())) {
- continue;
+ elementIdToBucket.forEach((key, bucket) -> {
+ if (checkedElementIds.contains(key)) {
+ return;
}
- Bucket bucket = entry.getValue();
while (bucket.dependentOn != null) {
bucket = bucket.dependentOn;
}
addAllBucketFragmentWrapper(bucket, fragmentList, checkedElementIds);
- }
+ });
return fragmentList;
}
@@ -513,10 +498,8 @@ public void processFragment(MModelFragments fragmentsContainer, MModelFragment f
Diagnostic validationResult = Diagnostician.INSTANCE.validate((EObject) fragment);
int severity = validationResult.getSeverity();
if (severity == Diagnostic.ERROR) {
- log(LogLevel.ERROR,
- "Fragment from {} of {} could not be validated and was not merged: -> Validation result: {}" //$NON-NLS-1$
- + fragment,
- contributorURI, contributorName, validationResult);
+ error("Fragment from {} of {} could not be validated and was not merged: -> Validation result: {}" //$NON-NLS-1$
+ + fragment, contributorURI, contributorName, validationResult);
}
List merged = processModelFragment(fragment, contributorURI, checkExist);
@@ -524,8 +507,7 @@ public void processFragment(MModelFragments fragmentsContainer, MModelFragment f
evalImports = true;
addedElements.addAll(merged);
} else {
- log(LogLevel.DEBUG, "Nothing to merge for fragment {} of {}", contributorURI, //$NON-NLS-1$
- contributorName);
+ debug("Nothing to merge for fragment {} of {}", contributorURI, contributorName); //$NON-NLS-1$
}
if (evalImports && !fragmentsContainer.getImports().isEmpty()) {
resolveImports(fragmentsContainer.getImports(), addedElements);
@@ -536,7 +518,7 @@ private MModelFragments getFragmentsContainer(String attrURI, String bundleName)
E4XMIResource applicationResource = (E4XMIResource) ((EObject) application).eResource();
ResourceSet resourceSet = applicationResource.getResourceSet();
if (attrURI == null) {
- log(LogLevel.WARN, "Unable to find location for the model extension {}", bundleName); //$NON-NLS-1$
+ warn("Unable to find location for the model extension {}", bundleName); //$NON-NLS-1$
return null;
}
@@ -550,7 +532,7 @@ private MModelFragments getFragmentsContainer(String attrURI, String bundleName)
uri = URI.createPlatformPluginURI(path, false);
}
} catch (RuntimeException e) {
- log(LogLevel.WARN, "Invalid location {} of model extension {}", attrURI, bundleName, e); //$NON-NLS-1$
+ warn("Invalid location {} of model extension {}", attrURI, bundleName, e); //$NON-NLS-1$
return null;
}
@@ -558,22 +540,22 @@ private MModelFragments getFragmentsContainer(String attrURI, String bundleName)
try {
resource = resourceSet.getResource(uri, true);
} catch (RuntimeException e) {
- log(LogLevel.WARN, "Unable to read model extension from {} of {}", uri, bundleName); //$NON-NLS-1$
+ warn("Unable to read model extension from {} of {}", uri, bundleName); //$NON-NLS-1$
return null;
}
- EList> contents = resource.getContents();
+ List> contents = resource.getContents();
if (contents.isEmpty()) {
return null;
}
Object extensionRoot = contents.get(0);
- if (!(extensionRoot instanceof MModelFragments)) {
- log(LogLevel.WARN, "Unable to create model extension {}", bundleName); //$NON-NLS-1$
+ if (!(extensionRoot instanceof MModelFragments modelFragments)) {
+ warn("Unable to create model extension {}", bundleName); //$NON-NLS-1$
return null;
}
- return (MModelFragments) extensionRoot;
+ return modelFragments;
}
/**
@@ -613,12 +595,11 @@ public List processModelFragment(MModelFragment fragment, S
}
// Remember IDs of subitems
- TreeIterator treeIt = EcoreUtil.getAllContents(o, true);
- while (treeIt.hasNext()) {
- EObject eObj = treeIt.next();
+ Iterable contents = () -> EcoreUtil.getAllContents(o, true);
+ for (EObject eObj : contents) {
r = (E4XMIResource) eObj.eResource();
- if (contributorURI != null && (eObj instanceof MApplicationElement)) {
- ((MApplicationElement) eObj).setContributorURI(contributorURI);
+ if (contributorURI != null && eObj instanceof MApplicationElement application) {
+ application.setContributorURI(contributorURI);
}
applicationResource.setID(eObj, r.getInternalId(eObj));
}
@@ -643,9 +624,9 @@ public void runProcessors(IExtension[] extensions, boolean initial, boolean afte
for (IExtension extension : extensions) {
IConfigurationElement[] ces = extension.getConfigurationElements();
for (IConfigurationElement ce : ces) {
- boolean parseBoolean = Boolean.parseBoolean(ce.getAttribute("beforefragment")); //$NON-NLS-1$
+ boolean parseBoolean = Boolean.parseBoolean(ce.getAttribute(BEFORE_FRAGMENT_PROPERTY_KEY));
if ("processor".equals(ce.getName()) && afterFragments != parseBoolean) { //$NON-NLS-1$
- if (initial || !INITIAL.equals(ce.getAttribute("apply"))) { //$NON-NLS-1$
+ if (initial || !INITIAL.equals(ce.getAttribute(APPLY_PROPERTY_KEY))) {
runProcessor(ce);
}
}
@@ -653,31 +634,23 @@ public void runProcessors(IExtension[] extensions, boolean initial, boolean afte
}
this.processorContributions.stream().filter(sr -> {
- Dictionary dict = sr.getProperties();
-
- Object before = dict.get(IModelProcessorContribution.BEFORE_FRAGMENT_PROPERTY_KEY);
+ Object before = sr.getProperty(BEFORE_FRAGMENT_PROPERTY_KEY);
boolean beforeFragments = true;
- if (before instanceof Boolean) {
- beforeFragments = (Boolean) before;
- } else if (before instanceof String) {
- beforeFragments = Boolean.parseBoolean((String) before);
+ if (before instanceof Boolean beforeValue) {
+ beforeFragments = beforeValue;
+ } else if (before instanceof String beforeValue) {
+ beforeFragments = Boolean.parseBoolean(beforeValue);
}
- Object applyObject = dict.get(IModelProcessorContribution.APPLY_PROPERTY_KEY);
- String apply = applyObject instanceof String ? (String) applyObject
- : IModelProcessorContribution.APPLY_ALWAYS;
-
+ String apply = sr.getProperty(APPLY_PROPERTY_KEY) instanceof String applyValue ? applyValue : APPLY_ALWAYS;
// check if the value for apply is valid
if (!ALWAYS.equals(apply) && !INITIAL.equals(apply)) {
- log(LogLevel.WARN,
- "IModelProcessorContribution apply property value {} is invalid, falling back to always", //$NON-NLS-1$
- apply);
- apply = IModelProcessorContribution.APPLY_ALWAYS;
+ warn("IModelProcessorContribution apply property value {} is invalid, falling back to always", apply); //$NON-NLS-1$
+ apply = APPLY_ALWAYS;
}
- return ((afterFragments != beforeFragments)
- && (initial || IModelProcessorContribution.APPLY_ALWAYS.equals(apply)));
- }).map(sr -> bundleContext.getService(sr)).forEach(ModelAssembler.this::runProcessor);
+ return afterFragments != beforeFragments && (initial || APPLY_ALWAYS.equals(apply));
+ }).map(bundleContext::getService).forEach(this::runProcessor);
}
private void runProcessor(IConfigurationElement ce) {
@@ -688,7 +661,7 @@ private void runProcessor(IConfigurationElement ce) {
String id = ceEl.getAttribute("id"); //$NON-NLS-1$
if (id == null) {
- log(LogLevel.WARN, "No element id given"); //$NON-NLS-1$
+ warn("No element id given"); //$NON-NLS-1$
continue;
}
@@ -699,7 +672,7 @@ private void runProcessor(IConfigurationElement ce) {
MApplicationElement el = ModelUtils.findElementById(application, id);
if (el == null) {
- log(LogLevel.WARN, "Could not find element with id {}", id); //$NON-NLS-1$
+ warn("Could not find element with id {}", id); //$NON-NLS-1$
}
localContext.set(key, el);
}
@@ -708,14 +681,12 @@ private void runProcessor(IConfigurationElement ce) {
Object o = factory.create("bundleclass://" + ce.getContributor().getName() + "/" + ce.getAttribute("class"), //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$
context, localContext);
if (o == null) {
- log(LogLevel.WARN, "Unable to create processor {} from {}", //$NON-NLS-1$
- ce.getAttribute("class"), //$NON-NLS-1$
- ce.getContributor().getName());
+ warn("Unable to create processor {} from {}", ce.getAttribute("class"), ce.getContributor().getName()); //$NON-NLS-1$//$NON-NLS-2$
} else {
ContextInjectionFactory.invoke(o, Execute.class, context, localContext, null);
}
} catch (Exception e) {
- log(LogLevel.WARN, "Could not run processor: {}", e); //$NON-NLS-1$
+ warn("Could not run processor: {}", e); //$NON-NLS-1$
}
}
@@ -726,7 +697,7 @@ private void runProcessor(IModelProcessorContribution processor) {
String id = element.getId();
if (id == null) {
- log(LogLevel.WARN, "No element id given"); //$NON-NLS-1$
+ warn("No element id given"); //$NON-NLS-1$
continue;
}
@@ -737,7 +708,7 @@ private void runProcessor(IModelProcessorContribution processor) {
MApplicationElement el = ModelUtils.findElementById(application, id);
if (el == null) {
- log(LogLevel.WARN, "Could not find element with id {}", id); //$NON-NLS-1$
+ warn("Could not find element with id {}", id); //$NON-NLS-1$
}
localContext.set(key, el);
}
@@ -750,14 +721,13 @@ private void runProcessor(IModelProcessorContribution processor) {
o = processor;
}
if (o == null) {
- log(LogLevel.WARN, "Unable to create processor {} from {}", //$NON-NLS-1$
- processor.getProcessorClass().getName(),
+ warn("Unable to create processor {} from {}", processor.getProcessorClass().getName(), //$NON-NLS-1$
FrameworkUtil.getBundle(processor.getProcessorClass()).getSymbolicName());
} else {
ContextInjectionFactory.invoke(o, Execute.class, context, localContext, null);
}
} catch (Exception e) {
- log(LogLevel.WARN, "Could not run processor: {}", e); //$NON-NLS-1$
+ warn("Could not run processor: {}", e); //$NON-NLS-1$
}
}
@@ -781,48 +751,42 @@ public void resolveImports(List imports, List it = EcoreUtil.getAllContents(addedElements);
+ Iterable contents = () -> EcoreUtil.getAllContents(addedElements);
List commands = new ArrayList<>();
-
- while (it.hasNext()) {
- EObject o = it.next();
-
- EContentsEList.FeatureIterator featureIterator = (EContentsEList.FeatureIterator) o
+ for (EObject target : contents) {
+ EContentsEList.FeatureIterator featureIterator = (EContentsEList.FeatureIterator) target
.eCrossReferences().iterator();
while (featureIterator.hasNext()) {
EObject importObject = featureIterator.next();
if (importObject.eContainmentFeature() == FragmentPackageImpl.Literals.MODEL_FRAGMENTS__IMPORTS) {
EStructuralFeature feature = featureIterator.feature();
- MApplicationElement el = null;
+ MApplicationElement element;
if (importObject instanceof MApplicationElement applicationElement) {
- el = importMaps.get(applicationElement);
-
- if (el == null) {
- log(LogLevel.WARN, "Could not resolve import for {}", //$NON-NLS-1$
- ((MApplicationElement) importObject).getElementId());
+ element = importMaps.get(applicationElement);
+ if (element == null) {
+ warn("Could not resolve import for {}", applicationElement.getElementId()); //$NON-NLS-1$
}
+ } else {
+ element = null;
}
-
- final EObject interalTarget = o;
- final EStructuralFeature internalFeature = feature;
- final MApplicationElement internalElement = el;
- final EObject internalImportObject = importObject;
-
commands.add(() -> {
- if (internalFeature.isMany()) {
- log(LogLevel.ERROR,
- "Replacing in {}.\n\nFeature={}.\n\nInternalElement={} contributed by {}.\n\nImportObject={}", //$NON-NLS-1$
- interalTarget, internalFeature.getName(), internalElement.getElementId(),
- internalElement.getContributorURI(), internalImportObject);
+ if (feature.isMany()) {
+ error("""
+ Replacing in {}.
+ Feature={}.
+ InternalElement={} contributed by {}.
+ ImportObject={}
+ """, target, feature.getName(), element.getElementId(), element.getContributorURI(), //$NON-NLS-1$
+ importObject);
@SuppressWarnings("unchecked")
- List
+ *
+ * @deprecated Instead annotate the component with the
+ * {@link Beforefragment @Beforefragment(true|false)} component
+ * property type
*/
+ @Deprecated(forRemoval = true, since = "1.16")
String BEFORE_FRAGMENT_PROPERTY_PREFIX = "beforefragment:Boolean="; //$NON-NLS-1$
+
+ /**
+ * An OSGi service component property type used to specify the value of the
+ * {@code beforeFragment} attribute , which specifies if the processor has to be
+ * invoked before model fragments are added. If not specified it defaults to
+ * {@code true}.
+ *
+ * @since 1.16
+ * @see #BEFORE_FRAGMENT_PROPERTY_KEY
+ */
+ @ComponentPropertyType
+ @Target(ElementType.TYPE)
+ @interface Beforefragment {
+ boolean value() default true;
+ }
+
/**
* Service property key for specifying the apply attribute, which defines in
- * which case a processor is run. If not specified it defaults to always.
+ * which case a processor is run. If not specified it defaults to
+ * {@code always}.
*/
String APPLY_PROPERTY_KEY = "apply"; //$NON-NLS-1$
/**
@@ -59,8 +84,30 @@ public interface IModelProcessorContribution {
* Component annotation:
* @Component(property = { IModelProcessorContribution.APPLY_PROPERTY_PREFIX + "initial" })
*
+ *
+ * @deprecated Instead annotate the component with the {@link Apply @Apply(<
+ * a-value >)} component property type
*/
+ @Deprecated(forRemoval = true, since = "1.16")
String APPLY_PROPERTY_PREFIX = "apply="; //$NON-NLS-1$
+
+ /**
+ * An OSGi service component property type used to specify the {@code apply}
+ * attribute, which defines in which case a processor is run. If not specified
+ * it defaults to {@code always}.
+ *
+ * @since 1.16
+ * @see #APPLY_PROPERTY_KEY
+ * @see #APPLY_ALWAYS
+ * @see #APPLY_INITIAL
+ *
+ */
+ @ComponentPropertyType
+ @Target(ElementType.TYPE)
+ @interface Apply {
+ String value() default APPLY_ALWAYS;
+ }
+
/**
* Value for the apply attribute. If set the processor is executed
* each time the application is started.
diff --git a/bundles/org.eclipse.jface.text/META-INF/MANIFEST.MF b/bundles/org.eclipse.jface.text/META-INF/MANIFEST.MF
index 29a2defc9e4..6445047dade 100644
--- a/bundles/org.eclipse.jface.text/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.jface.text/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.jface.text
-Bundle-Version: 3.25.300.qualifier
+Bundle-Version: 3.27.0.qualifier
Bundle-Vendor: %providerName
Bundle-Localization: plugin
Export-Package:
diff --git a/bundles/org.eclipse.jface.text/projection/org/eclipse/jface/text/source/projection/ProjectionAnnotationModel.java b/bundles/org.eclipse.jface.text/projection/org/eclipse/jface/text/source/projection/ProjectionAnnotationModel.java
index 422d2442b58..e82e6011089 100644
--- a/bundles/org.eclipse.jface.text/projection/org/eclipse/jface/text/source/projection/ProjectionAnnotationModel.java
+++ b/bundles/org.eclipse.jface.text/projection/org/eclipse/jface/text/source/projection/ProjectionAnnotationModel.java
@@ -147,9 +147,13 @@ public boolean collapseAll(int offset, int length) {
*/
protected boolean expandAll(int offset, int length, boolean fireModelChanged) {
+ if (offset < 0 || length < 0) {
+ return false;
+ }
+
boolean expanding= false;
- Iterator iterator= getAnnotationIterator();
+ Iterator iterator= getAnnotationIterator(offset, length, true, true);
while (iterator.hasNext()) {
ProjectionAnnotation annotation= (ProjectionAnnotation) iterator.next();
if (annotation.isCollapsed()) {
diff --git a/bundles/org.eclipse.jface.text/src/org/eclipse/jface/internal/text/codemining/CodeMiningLineContentAnnotation.java b/bundles/org.eclipse.jface.text/src/org/eclipse/jface/internal/text/codemining/CodeMiningLineContentAnnotation.java
index df30b611bf0..c5ce31946be 100644
--- a/bundles/org.eclipse.jface.text/src/org/eclipse/jface/internal/text/codemining/CodeMiningLineContentAnnotation.java
+++ b/bundles/org.eclipse.jface.text/src/org/eclipse/jface/internal/text/codemining/CodeMiningLineContentAnnotation.java
@@ -61,6 +61,8 @@ public class CodeMiningLineContentAnnotation extends LineContentAnnotation imple
*/
private IProgressMonitor fMonitor;
+ private final boolean afterPosition;
+
/**
* Code mining annotation constructor.
*
@@ -72,6 +74,21 @@ public CodeMiningLineContentAnnotation(Position position, ISourceViewer viewer)
fResolvedMinings= null;
fMinings= new ArrayList<>();
fBounds= new ArrayList<>();
+ afterPosition= false;
+ }
+
+ /**
+ * Code mining annotation constructor.
+ *
+ * @param position the position
+ * @param viewer the viewer
+ */
+ public CodeMiningLineContentAnnotation(Position position, ISourceViewer viewer, boolean afterPosition) {
+ super(position, viewer);
+ fResolvedMinings= null;
+ fMinings= new ArrayList<>();
+ fBounds= new ArrayList<>();
+ this.afterPosition= afterPosition;
}
@Override
@@ -183,4 +200,8 @@ public Consumer getAction(MouseEvent e) {
public boolean isInVisibleLines() {
return super.isInVisibleLines();
}
+
+ public final boolean isAfterPosition() {
+ return afterPosition;
+ }
}
diff --git a/bundles/org.eclipse.jface.text/src/org/eclipse/jface/internal/text/codemining/CodeMiningLineHeaderAnnotation.java b/bundles/org.eclipse.jface.text/src/org/eclipse/jface/internal/text/codemining/CodeMiningLineHeaderAnnotation.java
index 5962be4c8c4..5b5e61b916b 100644
--- a/bundles/org.eclipse.jface.text/src/org/eclipse/jface/internal/text/codemining/CodeMiningLineHeaderAnnotation.java
+++ b/bundles/org.eclipse.jface.text/src/org/eclipse/jface/internal/text/codemining/CodeMiningLineHeaderAnnotation.java
@@ -77,24 +77,61 @@ public CodeMiningLineHeaderAnnotation(Position position, ISourceViewer viewer) {
@Override
public int getHeight() {
- return hasAtLeastOneResolvedMiningNotEmpty() ? getMultilineHeight() : 0;
+ return hasAtLeastOneResolvedMiningNotEmpty() ? getMultilineHeight(null) : 0;
}
- private int getMultilineHeight() {
+ public int getHeight(GC gc) {
+ return hasAtLeastOneResolvedMiningNotEmpty() ? getMultilineHeight(gc) : 0;
+ }
+
+ private int getMultilineHeight(GC gc) {
int numLinesOfAllMinings= 0;
- for (ICodeMining mining : fMinings) {
+ StyledText styledText= super.getTextWidget();
+ boolean ignoreFirstLine= false;
+ int sumLineHeight= 0;
+ for (int i= 0; i < fMinings.size(); i++) {
+ ICodeMining mining= fMinings.get(i);
String label= mining.getLabel();
if (label == null) {
continue;
}
- int numLines= label.split("\\r?\\n|\\r").length; //$NON-NLS-1$
- if (numLines > 1) {
- numLinesOfAllMinings= numLines - 1;
+ String[] splitted= label.split("\\r?\\n|\\r"); //$NON-NLS-1$
+ int numLines= splitted.length;
+ if (ignoreFirstLine) {
+ numLines--;
}
+ numLinesOfAllMinings+= numLines;
+ if (gc != null) {
+ sumLineHeight= calculateLineHeight(gc, styledText, ignoreFirstLine, sumLineHeight, i, splitted);
+ }
+ ignoreFirstLine= true;
}
- numLinesOfAllMinings++;
- StyledText styledText= super.getTextWidget();
- return numLinesOfAllMinings * (styledText.getLineHeight() + styledText.getLineSpacing());
+ if (gc != null) {
+ return sumLineHeight;
+ } else {
+ int lineHeight= styledText.getLineHeight();
+ int result= numLinesOfAllMinings * (lineHeight + styledText.getLineSpacing());
+ return result;
+ }
+ }
+
+ private int calculateLineHeight(GC gc, StyledText styledText, boolean ignoreFirstLine, int sumLineHeight, int miningIndex, String[] splitted) {
+ for (int j= 0; j < splitted.length; j++) {
+ String line= splitted[j];
+ if (j == 0 && ignoreFirstLine) {
+ continue;
+ }
+ if (j == splitted.length - 1 && miningIndex + 1 < fMinings.size()) { // last line, take first line from next mining
+ String nextLabel= fMinings.get(miningIndex + 1).getLabel();
+ if (nextLabel != null) {
+ String firstFromNext= nextLabel.split("\\r?\\n|\\r")[0]; //$NON-NLS-1$
+ line+= firstFromNext;
+ }
+ }
+ Point ext= gc.textExtent(line);
+ sumLineHeight+= ext.y + styledText.getLineSpacing();
+ }
+ return sumLineHeight;
}
/**
diff --git a/bundles/org.eclipse.jface.text/src/org/eclipse/jface/internal/text/codemining/CodeMiningManager.java b/bundles/org.eclipse.jface.text/src/org/eclipse/jface/internal/text/codemining/CodeMiningManager.java
index d9863b03261..2793d1447af 100644
--- a/bundles/org.eclipse.jface.text/src/org/eclipse/jface/internal/text/codemining/CodeMiningManager.java
+++ b/bundles/org.eclipse.jface.text/src/org/eclipse/jface/internal/text/codemining/CodeMiningManager.java
@@ -42,6 +42,7 @@
import org.eclipse.jface.text.Position;
import org.eclipse.jface.text.codemining.ICodeMining;
import org.eclipse.jface.text.codemining.ICodeMiningProvider;
+import org.eclipse.jface.text.codemining.LineContentCodeMining;
import org.eclipse.jface.text.codemining.LineHeaderCodeMining;
import org.eclipse.jface.text.source.ISourceViewer;
import org.eclipse.jface.text.source.inlined.AbstractInlinedAnnotation;
@@ -251,12 +252,17 @@ private void renderCodeMinings(Map> groups, ISourceV
Position pos= new Position(g.getKey().offset, g.getKey().length);
List minings= g.getValue();
- boolean inLineHeader= !minings.isEmpty() ? (minings.get(0) instanceof LineHeaderCodeMining) : true;
+ ICodeMining first= minings.get(0);
+ boolean inLineHeader= !minings.isEmpty() ? (first instanceof LineHeaderCodeMining) : true;
// Try to find existing annotation
AbstractInlinedAnnotation ann= fInlinedAnnotationSupport.findExistingAnnotation(pos);
if (ann == null) {
// The annotation doesn't exists, create it.
- ann= inLineHeader ? new CodeMiningLineHeaderAnnotation(pos, viewer) : new CodeMiningLineContentAnnotation(pos, viewer);
+ boolean afterPosition= false;
+ if (first instanceof LineContentCodeMining m) {
+ afterPosition= m.isAfterPosition();
+ }
+ ann= inLineHeader ? new CodeMiningLineHeaderAnnotation(pos, viewer) : new CodeMiningLineContentAnnotation(pos, viewer, afterPosition);
} else if (ann instanceof ICodeMiningAnnotation && ((ICodeMiningAnnotation) ann).isInVisibleLines()) {
// annotation is in visible lines
annotationsToRedraw.add((ICodeMiningAnnotation) ann);
diff --git a/bundles/org.eclipse.jface.text/src/org/eclipse/jface/internal/text/html/BrowserInformationControl.java b/bundles/org.eclipse.jface.text/src/org/eclipse/jface/internal/text/html/BrowserInformationControl.java
index 582399ddfd9..6042241b376 100644
--- a/bundles/org.eclipse.jface.text/src/org/eclipse/jface/internal/text/html/BrowserInformationControl.java
+++ b/bundles/org.eclipse.jface.text/src/org/eclipse/jface/internal/text/html/BrowserInformationControl.java
@@ -332,8 +332,6 @@ else if (!resizable)
@Override
public void setVisible(boolean visible) {
Shell shell= getShell();
- if (shell.isVisible() == visible)
- return;
if (!visible) {
super.setVisible(false);
@@ -342,6 +340,8 @@ public void setVisible(boolean visible) {
return;
}
+ if (shell.isVisible() == visible)
+ return;
/*
* The Browser widget flickers when made visible while it is not completely loaded.
* The fix is to delay the call to setVisible until either loading is completed
diff --git a/bundles/org.eclipse.jface.text/src/org/eclipse/jface/internal/text/html/HTMLPrinter.java b/bundles/org.eclipse.jface.text/src/org/eclipse/jface/internal/text/html/HTMLPrinter.java
index f2ea65c1c98..d8d1fe23eb8 100644
--- a/bundles/org.eclipse.jface.text/src/org/eclipse/jface/internal/text/html/HTMLPrinter.java
+++ b/bundles/org.eclipse.jface.text/src/org/eclipse/jface/internal/text/html/HTMLPrinter.java
@@ -89,7 +89,7 @@ private static void cacheColors(Display display) {
* @return the string with escaped characters
*
* @see #convertToHTMLContentWithWhitespace(String) for use in browsers
- * @see #addPreFormatted(StringBuilder, String) for rendering with an {@link HTML2TextReader}
+ * @see #addPreFormatted(StringBuilder, String) for rendering with an HTML2TextReader
*/
public static String convertToHTMLContent(String content) {
return HTMLBuilder.convertToHTMLContent(content);
diff --git a/bundles/org.eclipse.jface.text/src/org/eclipse/jface/text/AbstractInformationControl.java b/bundles/org.eclipse.jface.text/src/org/eclipse/jface/text/AbstractInformationControl.java
index 6106e872f9f..e956107216c 100644
--- a/bundles/org.eclipse.jface.text/src/org/eclipse/jface/text/AbstractInformationControl.java
+++ b/bundles/org.eclipse.jface.text/src/org/eclipse/jface/text/AbstractInformationControl.java
@@ -505,7 +505,7 @@ public boolean isResizable() {
@Override
public void setVisible(boolean visible) {
- if (fShell.isVisible() == visible)
+ if (visible && fShell.isVisible() == visible)
return;
fShell.setVisible(visible);
diff --git a/bundles/org.eclipse.jface.text/src/org/eclipse/jface/text/SurroundWithBracketsStrategy.java b/bundles/org.eclipse.jface.text/src/org/eclipse/jface/text/SurroundWithBracketsStrategy.java
new file mode 100644
index 00000000000..41dee55d993
--- /dev/null
+++ b/bundles/org.eclipse.jface.text/src/org/eclipse/jface/text/SurroundWithBracketsStrategy.java
@@ -0,0 +1,61 @@
+/*******************************************************************************
+ * Copyright (c) ETAS GmbH 2024, 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:
+ * ETAS GmbH - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jface.text;
+
+import java.util.Map;
+
+import org.eclipse.swt.SWT;
+
+import org.eclipse.jface.text.source.ISourceViewer;
+
+/**
+ * @since 3.27 This strategy supports surrounding the selected text with similar opening and closing
+ * brackets when the text is selected and an opening bracket is inserted.
+ */
+public class SurroundWithBracketsStrategy implements IAutoEditStrategy {
+
+ private ISourceViewer sourceViewer;
+
+ @SuppressWarnings("nls")
+ private final Map bracketsMap= Map.of("(", ")", "[", "]", "{", "}", "<", ">", "\"", "\"", "'", "'", "`", "`");
+
+ public SurroundWithBracketsStrategy(ISourceViewer sourceViewer) {
+ this.sourceViewer= sourceViewer;
+ }
+
+ @Override
+ public void customizeDocumentCommand(IDocument document, DocumentCommand command) {
+ if (command.text != null && bracketsMap.containsKey(command.text)) {
+ try {
+ ITextSelection selection= command.fSelection;
+ if (selection != null && selection.getLength() > 0) {
+ String selectedText= document.get(selection.getOffset(), selection.getLength());
+ String closingBracket= bracketsMap.get(command.text);
+ command.text= command.text + selectedText + closingBracket;
+ command.offset= selection.getOffset();
+ command.length= selection.getLength();
+
+ // Set the caret offset after the opening bracket but before the closing bracket
+ command.caretOffset= command.offset + command.text.length() - closingBracket.length();
+ command.shiftsCaret= false;
+
+ // Run this in a UI thread asynchronously to ensure the selection is updated correctly
+ sourceViewer.getTextWidget().getDisplay().asyncExec(() -> sourceViewer.setSelectedRange(command.offset + 1, selectedText.length()));
+ }
+ } catch (BadLocationException e) {
+ SWT.error(SWT.ERROR_INVALID_ARGUMENT);
+ }
+ }
+ }
+}
diff --git a/bundles/org.eclipse.jface.text/src/org/eclipse/jface/text/WhitespaceCharacterPainter.java b/bundles/org.eclipse.jface.text/src/org/eclipse/jface/text/WhitespaceCharacterPainter.java
index 24a6526f064..3e57e35a2bb 100644
--- a/bundles/org.eclipse.jface.text/src/org/eclipse/jface/text/WhitespaceCharacterPainter.java
+++ b/bundles/org.eclipse.jface.text/src/org/eclipse/jface/text/WhitespaceCharacterPainter.java
@@ -17,8 +17,8 @@
*******************************************************************************/
package org.eclipse.jface.text;
-import java.util.HashSet;
-import java.util.Set;
+import java.util.HashMap;
+import java.util.Map;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.StyleRange;
@@ -405,6 +405,11 @@ private void drawCharRange(GC gc, int startOffset, int endOffset, int lineOffset
break;
case '\r':
if (fShowCarriageReturn) {
+ if (visibleChar.length() > 0 && cache.contains(fTextWidget, lineOffset + textOffset)) {
+ textOffset--;
+ delta--;
+ break;
+ }
visibleChar.append(CARRIAGE_RETURN_SIGN);
}
if (textOffset >= endOffsetInLine - 1 || lineText.charAt(textOffset + 1) != '\n') {
@@ -414,6 +419,11 @@ private void drawCharRange(GC gc, int startOffset, int endOffset, int lineOffset
continue;
case '\n':
if (fShowLineFeed) {
+ if (visibleChar.length() > 0 && cache.contains(fTextWidget, lineOffset + textOffset)) {
+ textOffset--;
+ delta--;
+ break;
+ }
visibleChar.append(LINE_FEED_SIGN);
}
eol= true;
@@ -439,7 +449,7 @@ private void drawCharRange(GC gc, int startOffset, int endOffset, int lineOffset
fg= styleRange.foreground;
}
}
- draw(gc, widgetOffset, visibleChar.toString(), fg);
+ draw(gc, widgetOffset, visibleChar.toString(), fg, cache);
}
visibleChar.delete(0, visibleChar.length());
}
@@ -492,7 +502,7 @@ private void redrawAll() {
* @param s the string to be drawn
* @param fg the foreground color
*/
- private void draw(GC gc, int offset, String s, Color fg) {
+ private void draw(GC gc, int offset, String s, Color fg,StyleRangeWithMetricsOffsets cache) {
// Compute baseline delta (see https://bugs.eclipse.org/bugs/show_bug.cgi?id=165640)
int baseline= fTextWidget.getBaseline(offset);
FontMetrics fontMetrics= gc.getFontMetrics();
@@ -500,32 +510,49 @@ private void draw(GC gc, int offset, String s, Color fg) {
int baslineDelta= baseline - fontBaseline;
Point pos= fTextWidget.getLocationAtOffset(offset);
+ StyleRange styleRange= cache.get(fTextWidget, offset);
+ if (styleRange != null && styleRange.metrics != null) { // code mining at \r or \n character - line break character should be drawn at end of code mining
+ String charBeforeOffset= " "; //$NON-NLS-1$
+ if (offset > 0) {
+ charBeforeOffset= fTextWidget.getText(offset - 1, offset - 1);
+ }
+ Point extCharBeforeOffset= gc.textExtent(charBeforeOffset);
+ pos.x= pos.x + styleRange.metrics.width - extCharBeforeOffset.x;
+ }
gc.setForeground(fg);
gc.drawString(s, pos.x, pos.y + baslineDelta, true);
}
private static class StyleRangeWithMetricsOffsets {
- private Set offsets= null;
+ private Map offsets= null;
public boolean contains(StyledText st, int offset) {
if (offsets == null) {
- fillSet(st);
+ fillMap(st);
}
- if (offsets.contains(offset)) {
+ if (offsets.containsKey(offset)) {
return true;
}
return false;
}
- private void fillSet(StyledText st) {
- offsets= new HashSet<>();
+ public StyleRange get(StyledText st, int offset) {
+ if (offsets == null) {
+ fillMap(st);
+ }
+ StyleRange styleRange= offsets.get(offset);
+ return styleRange;
+ }
+
+ private void fillMap(StyledText st) {
+ offsets= new HashMap<>();
StyleRange[] ranges= st.getStyleRanges();
if (ranges == null) {
return;
}
for (StyleRange range : ranges) {
if (range != null && range.metrics != null) {
- offsets.add(range.start);
+ offsets.put(range.start, range);
}
}
}
diff --git a/bundles/org.eclipse.jface.text/src/org/eclipse/jface/text/codemining/LineContentCodeMining.java b/bundles/org.eclipse.jface.text/src/org/eclipse/jface/text/codemining/LineContentCodeMining.java
index d81cd0b1e0e..cb4402a75de 100644
--- a/bundles/org.eclipse.jface.text/src/org/eclipse/jface/text/codemining/LineContentCodeMining.java
+++ b/bundles/org.eclipse.jface.text/src/org/eclipse/jface/text/codemining/LineContentCodeMining.java
@@ -26,6 +26,8 @@
*/
public abstract class LineContentCodeMining extends AbstractCodeMining {
+ private final boolean afterPosition;
+
/**
* CodeMining constructor to locate the code mining in a given position.
*
@@ -36,6 +38,20 @@ public LineContentCodeMining(Position position, ICodeMiningProvider provider) {
this(position, provider, null);
}
+ /**
+ * CodeMining constructor to locate the code mining in a given position.
+ *
+ * @param position the position where the mining must be drawn.
+ * @param afterPosition if true code mining is treated as suffix code mining where cursor and
+ * selection is not including the mining
+ * @param provider the owner codemining provider which creates this mining.
+ *
+ * @since 3.26
+ */
+ public LineContentCodeMining(Position position, boolean afterPosition, ICodeMiningProvider provider) {
+ this(position, afterPosition, provider, null);
+ }
+
/**
* CodeMining constructor to locate the code mining in a given position.
*
@@ -44,7 +60,33 @@ public LineContentCodeMining(Position position, ICodeMiningProvider provider) {
* @param action the action to execute when mining is clicked and null otherwise.
*/
public LineContentCodeMining(Position position, ICodeMiningProvider provider, Consumer action) {
+ this(position, false, provider, action);
+ }
+
+ /**
+ * CodeMining constructor to locate the code mining in a given position.
+ *
+ * @param position the position where the mining must be drawn.
+ * @param provider the owner codemining provider which creates this mining.
+ * @param action the action to execute when mining is clicked and null otherwise.
+ * @param afterPosition if true code mining is treated as suffix code mining where cursor and
+ * selection is not including the mining
+ *
+ * @since 3.26
+ */
+ public LineContentCodeMining(Position position, boolean afterPosition, ICodeMiningProvider provider, Consumer action) {
super(position, provider, action);
+ this.afterPosition= afterPosition;
+ }
+
+ /**
+ * indicates if code mining should be rendered after given position; cursor and selection does
+ * not include the code mining if set to true.
+ *
+ * @since 3.26
+ */
+ public boolean isAfterPosition() {
+ return afterPosition;
}
}
diff --git a/bundles/org.eclipse.jface.text/src/org/eclipse/jface/text/source/AnnotationPainter.java b/bundles/org.eclipse.jface.text/src/org/eclipse/jface/text/source/AnnotationPainter.java
index 230eba927e8..27d85d1ea12 100644
--- a/bundles/org.eclipse.jface.text/src/org/eclipse/jface/text/source/AnnotationPainter.java
+++ b/bundles/org.eclipse.jface.text/src/org/eclipse/jface/text/source/AnnotationPainter.java
@@ -444,6 +444,12 @@ private static class Decoration {
*/
private ReusableRegion fReusableRegion= new ReusableRegion();
+ /**
+ * Color used to draw inline annotations.
+ * @since 3.26
+ */
+ private Color fInlineAnnotationColor;
+
/**
* Creates a new annotation painter for the given source viewer and with the
* given annotation access. The painter is not initialized, i.e. no
@@ -1647,4 +1653,18 @@ public void paint(int reason) {
@Override
public void setPositionManager(IPaintPositionManager manager) {
}
+
+ /**
+ * @since 3.26
+ */
+ public void setInlineAnnotationColor(Color color) {
+ fInlineAnnotationColor= color;
+ }
+
+ /**
+ * @since 3.26
+ */
+ public Color getInlineAnnotationColor() {
+ return fInlineAnnotationColor;
+ }
}
diff --git a/bundles/org.eclipse.jface.text/src/org/eclipse/jface/text/source/LineNumberRulerColumn.java b/bundles/org.eclipse.jface.text/src/org/eclipse/jface/text/source/LineNumberRulerColumn.java
index 6bf9a3ca6d0..0060369d027 100644
--- a/bundles/org.eclipse.jface.text/src/org/eclipse/jface/text/source/LineNumberRulerColumn.java
+++ b/bundles/org.eclipse.jface.text/src/org/eclipse/jface/text/source/LineNumberRulerColumn.java
@@ -616,6 +616,8 @@ public void addMouseListener(MouseListener listener) {
fCachedTextWidget= null;
});
+ fCanvas.addListener(SWT.ZoomChanged, e -> computeIndentations());
+
fMouseHandler= new MouseHandler();
fCanvas.addMouseListener(fMouseHandler);
fCanvas.addMouseMoveListener(fMouseHandler);
@@ -850,6 +852,7 @@ void doPaint(GC gc, ILineRange visibleLines) {
// use height of text bounding because bounds.width changes on word wrap
y+= fCachedTextWidget.getTextBounds(offsetAtLine, offsetEnd).height;
+ y+= fCachedTextWidget.getLineSpacing();
}
}
}
diff --git a/bundles/org.eclipse.jface.text/src/org/eclipse/jface/text/source/SourceViewer.java b/bundles/org.eclipse.jface.text/src/org/eclipse/jface/text/source/SourceViewer.java
index af5eae570c9..4b18e2cf592 100644
--- a/bundles/org.eclipse.jface.text/src/org/eclipse/jface/text/source/SourceViewer.java
+++ b/bundles/org.eclipse.jface.text/src/org/eclipse/jface/text/source/SourceViewer.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2024 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -14,6 +14,7 @@
* Tom Hofmann (Perspectix AG) - bug 297572
* Sergey Prigogin (Google) - bug 441448
* Angelo Zerr - [CodeMining] Add CodeMining support in SourceViewer - Bug 527515
+ * Latha Patil (ETAS GmbH) - Issue 865 - Surround the selected text with brackets on inserting a opening bracket
*******************************************************************************/
package org.eclipse.jface.text.source;
diff --git a/bundles/org.eclipse.jface.text/src/org/eclipse/jface/text/source/SourceViewerConfiguration.java b/bundles/org.eclipse.jface.text/src/org/eclipse/jface/text/source/SourceViewerConfiguration.java
index 9c892ab4db5..2b6f97d46e2 100644
--- a/bundles/org.eclipse.jface.text/src/org/eclipse/jface/text/source/SourceViewerConfiguration.java
+++ b/bundles/org.eclipse.jface.text/src/org/eclipse/jface/text/source/SourceViewerConfiguration.java
@@ -30,6 +30,7 @@
import org.eclipse.jface.text.ITextHover;
import org.eclipse.jface.text.ITextViewerExtension2;
import org.eclipse.jface.text.IUndoManager;
+import org.eclipse.jface.text.SurroundWithBracketsStrategy;
import org.eclipse.jface.text.TextViewerUndoManager;
import org.eclipse.jface.text.codemining.ICodeMiningProvider;
import org.eclipse.jface.text.contentassist.IContentAssistant;
@@ -190,7 +191,7 @@ public org.eclipse.jface.text.IAutoIndentStrategy getAutoIndentStrategy(ISourceV
* @since 3.1
*/
public IAutoEditStrategy[] getAutoEditStrategies(ISourceViewer sourceViewer, String contentType) {
- return new IAutoEditStrategy[] { getAutoIndentStrategy(sourceViewer, contentType) };
+ return new IAutoEditStrategy[] { getAutoIndentStrategy(sourceViewer, contentType), new SurroundWithBracketsStrategy(sourceViewer) };
}
/**
diff --git a/bundles/org.eclipse.jface.text/src/org/eclipse/jface/text/source/inlined/InlinedAnnotationDrawingStrategy.java b/bundles/org.eclipse.jface.text/src/org/eclipse/jface/text/source/inlined/InlinedAnnotationDrawingStrategy.java
index 09464aef653..2f9424847d5 100644
--- a/bundles/org.eclipse.jface.text/src/org/eclipse/jface/text/source/inlined/InlinedAnnotationDrawingStrategy.java
+++ b/bundles/org.eclipse.jface.text/src/org/eclipse/jface/text/source/inlined/InlinedAnnotationDrawingStrategy.java
@@ -24,7 +24,11 @@
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.graphics.Rectangle;
+import org.eclipse.jface.internal.text.codemining.CodeMiningLineContentAnnotation;
+import org.eclipse.jface.internal.text.codemining.CodeMiningLineHeaderAnnotation;
+
import org.eclipse.jface.text.ITextViewer;
+import org.eclipse.jface.text.Position;
import org.eclipse.jface.text.source.Annotation;
import org.eclipse.jface.text.source.AnnotationPainter.IDrawingStrategy;
@@ -96,7 +100,7 @@ private Font getAnnotationFont(StyledText textWidget) {
if (annotationFont == null) {
annotationFont = createInlineAnnotationFont(textWidget);
textWidget.setData(INLINE_ANNOTATION_FONT, annotationFont);
- textWidget.addDisposeListener(e -> ((Font)textWidget.getData(INLINE_ANNOTATION_FONT)).dispose());
+ textWidget.addDisposeListener(e -> ((Font) textWidget.getData(INLINE_ANNOTATION_FONT)).dispose());
}
return annotationFont;
}
@@ -151,7 +155,8 @@ public static void draw(AbstractInlinedAnnotation annotation, GC gc, StyledText
private static void draw(LineHeaderAnnotation annotation, GC gc, StyledText textWidget, int offset, int length,
Color color) {
int line= textWidget.getLineAtOffset(offset);
- if (isDeleted(annotation)) {
+ int charCount= textWidget.getCharCount();
+ if (isDeleted(annotation, charCount)) {
// When annotation is deleted, update metrics to null to remove extra spaces of the line header annotation.
if (textWidget.getLineVerticalIndent(line) > 0)
textWidget.setLineVerticalIndent(line, 0);
@@ -159,7 +164,12 @@ private static void draw(LineHeaderAnnotation annotation, GC gc, StyledText text
}
if (gc != null) {
// Setting vertical indent first, before computing bounds
- int height= annotation.getHeight();
+ int height;
+ if (annotation instanceof CodeMiningLineHeaderAnnotation cmlha) {
+ height= cmlha.getHeight(gc);
+ } else {
+ height= annotation.getHeight();
+ }
if (height != 0) {
if (height != textWidget.getLineVerticalIndent(line)) {
if (annotation.oldLine != -1 && annotation.oldLine < textWidget.getLineCount()) {
@@ -172,9 +182,16 @@ private static void draw(LineHeaderAnnotation annotation, GC gc, StyledText text
textWidget.setLineVerticalIndent(line, 0);
}
// Compute the location of the annotation
- Rectangle bounds= textWidget.getTextBounds(offset, offset);
- int x= bounds.x;
- int y= bounds.y;
+ int x, y;
+ if (offset < charCount) {
+ Rectangle bounds= textWidget.getTextBounds(offset, offset);
+ x= bounds.x;
+ y= bounds.y;
+ } else {
+ Point locAtOff= textWidget.getLocationAtOffset(offset);
+ x= locAtOff.x;
+ y= locAtOff.y - height;
+ }
// Draw the line header annotation
gc.setBackground(textWidget.getBackground());
annotation.setLocation(x, y);
@@ -185,7 +202,16 @@ private static void draw(LineHeaderAnnotation annotation, GC gc, StyledText text
Rectangle client= textWidget.getClientArea();
textWidget.redraw(0, bounds.y, client.width, bounds.height, false);
} else {
- textWidget.redrawRange(offset, length, true);
+ if (offset >= charCount) {
+ if (charCount > 0) {
+ textWidget.redrawRange(charCount - 1, 1, true);
+ } else {
+ Rectangle client= textWidget.getClientArea();
+ textWidget.redraw(0, 0, client.width, client.height, false);
+ }
+ } else {
+ textWidget.redrawRange(offset, length, true);
+ }
}
}
@@ -202,6 +228,16 @@ private static void draw(LineHeaderAnnotation annotation, GC gc, StyledText text
*/
private static void draw(LineContentAnnotation annotation, GC gc, StyledText textWidget, int widgetOffset, int length,
Color color) {
+ if (annotation instanceof CodeMiningLineContentAnnotation a) {
+ if (a.isAfterPosition()) {
+ if (widgetOffset < textWidget.getCharCount()) {
+ drawAsLeftOf1stCharacter(annotation, gc, textWidget, widgetOffset, length, color);
+ } else {
+ drawAtEndOfDocumentInFirstColumn(annotation, gc, textWidget, widgetOffset, length, color);
+ }
+ return;
+ }
+ }
if (annotation.isEmptyLine(widgetOffset, textWidget)) {
drawAfterLine(annotation, gc, textWidget, widgetOffset, length, color);
} else if (LineContentAnnotation.drawRightToPreviousChar(widgetOffset, textWidget)) {
@@ -212,7 +248,7 @@ private static void draw(LineContentAnnotation annotation, GC gc, StyledText tex
}
private static void drawAfterLine(LineContentAnnotation annotation, GC gc, StyledText textWidget, int widgetOffset, int length, Color color) {
- if (isDeleted(annotation)) {
+ if (isDeleted(annotation, textWidget.getCharCount())) {
return;
}
if (gc != null) {
@@ -233,6 +269,35 @@ private static void drawAfterLine(LineContentAnnotation annotation, GC gc, Style
}
}
+ private static void drawAtEndOfDocumentInFirstColumn(LineContentAnnotation annotation, GC gc, StyledText textWidget, int widgetOffset, int length, Color color) {
+ if (isDeleted(annotation, textWidget.getCharCount())) {
+ return;
+ }
+ if (gc != null) {
+ Point locAtOff= textWidget.getLocationAtOffset(widgetOffset);
+ int x= locAtOff.x;
+ int y= locAtOff.y;
+ annotation.setLocation(x, y);
+ annotation.draw(gc, textWidget, widgetOffset, length, color, x, y);
+ int width= annotation.getWidth();
+ if (width != 0) {
+ if (!gc.getClipping().contains(x, y)) {
+ Rectangle client= textWidget.getClientArea();
+ int height= textWidget.getLineHeight();
+ textWidget.redraw(x, y, client.width, height, false);
+ }
+ }
+ } else {
+ int charCount= textWidget.getCharCount();
+ if (charCount > 0) {
+ textWidget.redrawRange(charCount - 1, 1, true);
+ } else {
+ Rectangle client= textWidget.getClientArea();
+ textWidget.redraw(0, 0, client.width, client.height, false);
+ }
+ }
+ }
+
protected static void drawAsLeftOf1stCharacter(LineContentAnnotation annotation, GC gc, StyledText textWidget, int widgetOffset, int length, Color color) {
StyleRange style= null;
try {
@@ -240,7 +305,7 @@ protected static void drawAsLeftOf1stCharacter(LineContentAnnotation annotation,
} catch (Exception e) {
return;
}
- if (isDeleted(annotation)) {
+ if (isDeleted(annotation, textWidget.getCharCount())) {
// When annotation is deleted, update metrics to null to remove extra spaces of the line content annotation.
if (style != null && style.metrics != null) {
style.metrics= null;
@@ -254,9 +319,18 @@ protected static void drawAsLeftOf1stCharacter(LineContentAnnotation annotation,
// Compute the location of the annotation
Rectangle bounds= textWidget.getTextBounds(widgetOffset, widgetOffset);
- int x= bounds.x + (isEndOfLine ? bounds.width * 2 : 0);
- int y= bounds.y;
+ int x;
+ if (isEndOfLine) {
+ // getTextBounds at offset with char '\r' or '\n' returns incorrect x position, use getLocationAtOffset instead
+ x= textWidget.getLocationAtOffset(widgetOffset).x;
+ } else {
+ x= bounds.x;
+ }
+ int y= bounds.y;
+ if (isAfterPosition(annotation)) {
+ isEndOfLine= false;
+ }
// When line text has line header annotation, there is a space on the top, adjust the y by using char height
y+= bounds.height - textWidget.getLineHeight();
@@ -275,14 +349,18 @@ protected static void drawAsLeftOf1stCharacter(LineContentAnnotation annotation,
// Get size of the character where GlyphMetrics width is added
Point charBounds= gc.stringExtent(hostCharacter);
int charWidth= charBounds.x;
-
+ if (charWidth == 0 && ("\r".equals(hostCharacter) || "\n".equals(hostCharacter))) { //$NON-NLS-1$ //$NON-NLS-2$
+ // charWidth is 0 for '\r' on font Consolas, but not on other fonts, why?
+ charWidth= gc.stringExtent(" ").x; //$NON-NLS-1$
+ }
// FIXME: remove this code when we need not redraw the character (see https://bugs.eclipse.org/bugs/show_bug.cgi?id=531769)
// START TO REMOVE
annotation.setRedrawnCharacterWidth(charWidth);
// END TO REMOVE
// Annotation takes place, add GlyphMetrics width to the style
- StyleRange newStyle= annotation.updateStyle(style, gc.getFontMetrics(), textWidget.getData() instanceof ITextViewer viewer ? viewer : annotation.getViewer());
+ StyleRange newStyle= annotation.updateStyle(style, gc.getFontMetrics(), textWidget.getData() instanceof ITextViewer viewer ? viewer : annotation.getViewer(),
+ isAfterPosition(annotation));
if (newStyle != null) {
textWidget.setStyleRange(newStyle);
return;
@@ -328,6 +406,13 @@ protected static void drawAsLeftOf1stCharacter(LineContentAnnotation annotation,
}
}
+ private static boolean isAfterPosition(LineContentAnnotation annotation) {
+ if (annotation instanceof CodeMiningLineContentAnnotation a) {
+ return a.isAfterPosition();
+ }
+ return false;
+ }
+
protected static void drawAsRightOfPreviousCharacter(LineContentAnnotation annotation, GC gc, StyledText textWidget, int widgetOffset, int length, Color color) {
StyleRange style= null;
try {
@@ -335,7 +420,7 @@ protected static void drawAsRightOfPreviousCharacter(LineContentAnnotation annot
} catch (Exception e) {
return;
}
- if (isDeleted(annotation)) {
+ if (isDeleted(annotation, textWidget.getCharCount())) {
// When annotation is deleted, update metrics to null to remove extra spaces of the line content annotation.
if (style != null && style.metrics != null) {
style.metrics= null;
@@ -365,7 +450,7 @@ protected static void drawAsRightOfPreviousCharacter(LineContentAnnotation annot
// END TO REMOVE
// Annotation takes place, add GlyphMetrics width to the style
- StyleRange newStyle= annotation.updateStyle(style, gc.getFontMetrics(), InlinedAnnotationSupport.getSupport(textWidget).getViewer());
+ StyleRange newStyle= annotation.updateStyle(style, gc.getFontMetrics(), InlinedAnnotationSupport.getSupport(textWidget).getViewer(), isAfterPosition(annotation));
if (newStyle != null) {
textWidget.setStyleRange(newStyle);
return;
@@ -415,7 +500,17 @@ protected static void drawAsRightOfPreviousCharacter(LineContentAnnotation annot
* @param annotation the inlined annotation to check
* @return true if inlined annotation is deleted and false otherwise.
*/
- private static boolean isDeleted(AbstractInlinedAnnotation annotation) {
- return annotation.isMarkedDeleted() || annotation.getPosition().isDeleted() || annotation.getPosition().getLength() == 0;
+ private static boolean isDeleted(AbstractInlinedAnnotation annotation,int maxOffset) {
+ if (annotation.isMarkedDeleted()) {
+ return true;
+ }
+ Position pos= annotation.getPosition();
+ if (pos.isDeleted()) {
+ return true;
+ }
+ if (pos.getLength() == 0 && pos.getOffset() < maxOffset) {
+ return true;
+ }
+ return false;
}
}
diff --git a/bundles/org.eclipse.jface.text/src/org/eclipse/jface/text/source/inlined/InlinedAnnotationSupport.java b/bundles/org.eclipse.jface.text/src/org/eclipse/jface/text/source/inlined/InlinedAnnotationSupport.java
index 8bf2116843d..b59ed29c4ba 100644
--- a/bundles/org.eclipse.jface.text/src/org/eclipse/jface/text/source/inlined/InlinedAnnotationSupport.java
+++ b/bundles/org.eclipse.jface.text/src/org/eclipse/jface/text/source/inlined/InlinedAnnotationSupport.java
@@ -42,6 +42,8 @@
import org.eclipse.core.runtime.Assert;
+import org.eclipse.jface.internal.text.codemining.CodeMiningLineContentAnnotation;
+
import org.eclipse.jface.text.BadLocationException;
import org.eclipse.jface.text.DocumentEvent;
import org.eclipse.jface.text.IDocument;
@@ -107,7 +109,7 @@ public void applyTextPresentation(TextPresentation textPresentation) {
.forEachRemaining(annotation -> {
if (annotation instanceof LineContentAnnotation) {
LineContentAnnotation ann= (LineContentAnnotation) annotation;
- StyleRange style= ann.updateStyle(null, fFontMetrics, fViewer);
+ StyleRange style= ann.updateStyle(null, fFontMetrics, fViewer, isAfterPosition(ann));
if (style != null) {
if (fViewer instanceof ITextViewerExtension5 projectionViewer) {
IRegion annotationRegion= projectionViewer.widgetRange2ModelRange(new Region(style.start, style.length));
@@ -119,6 +121,13 @@ public void applyTextPresentation(TextPresentation textPresentation) {
}
});
}
+
+ private static boolean isAfterPosition(LineContentAnnotation annotation) {
+ if (annotation instanceof CodeMiningLineContentAnnotation a) {
+ return a.isAfterPosition();
+ }
+ return false;
+ }
}
/**
@@ -154,7 +163,9 @@ public void documentAboutToBeChanged(DocumentEvent event) {
@Override
public void documentChanged(DocumentEvent event) {
- // Do nothing
+ if (endOffset != null && event != null && event.fDocument != null && event.fDocument.getLength() > endOffset) {
+ endOffset= null;
+ }
}
@Override
@@ -357,7 +368,11 @@ public void install(ISourceViewer viewer, AnnotationPainter painter) {
visibleLines= new VisibleLines();
text.addMouseListener(fMouseTracker);
text.addMouseMoveListener(fMouseTracker);
- setColor(text.getDisplay().getSystemColor(SWT.COLOR_DARK_GRAY));
+ Color c= painter.getInlineAnnotationColor();
+ if (c == null) {
+ c= text.getDisplay().getSystemColor(SWT.COLOR_DARK_GRAY);
+ }
+ setColor(c);
GC gc= new GC(viewer.getTextWidget());
gc.setFont(viewer.getTextWidget().getFont());
fFontMetrics= gc.getFontMetrics();
diff --git a/bundles/org.eclipse.jface.text/src/org/eclipse/jface/text/source/inlined/LineContentAnnotation.java b/bundles/org.eclipse.jface.text/src/org/eclipse/jface/text/source/inlined/LineContentAnnotation.java
index e6cc355c90f..24fffefaf9b 100644
--- a/bundles/org.eclipse.jface.text/src/org/eclipse/jface/text/source/inlined/LineContentAnnotation.java
+++ b/bundles/org.eclipse.jface.text/src/org/eclipse/jface/text/source/inlined/LineContentAnnotation.java
@@ -117,13 +117,16 @@ boolean contains(int x, int y) {
* @return the style to apply with GlyphMetrics width only if needed. It uses widget position,
* not model position.
*/
- StyleRange updateStyle(StyleRange style, FontMetrics fontMetrics, ITextViewer viewer) {
+ StyleRange updateStyle(StyleRange style, FontMetrics fontMetrics, ITextViewer viewer, boolean afterPosition) {
Position widgetPosition= computeWidgetPosition(viewer);
if (widgetPosition == null) {
return null;
}
StyledText textWidget = viewer.getTextWidget();
- boolean usePreviousChar= drawRightToPreviousChar(widgetPosition.getOffset(), textWidget);
+ boolean usePreviousChar= false;
+ if (!afterPosition) {
+ usePreviousChar= drawRightToPreviousChar(widgetPosition.getOffset(), textWidget);
+ }
if (width == 0 || getRedrawnCharacterWidth() == 0) {
return null;
}
diff --git a/bundles/org.eclipse.jface/META-INF/MANIFEST.MF b/bundles/org.eclipse.jface/META-INF/MANIFEST.MF
index 8191e53d6e7..c0a6a166d28 100644
--- a/bundles/org.eclipse.jface/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.jface/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.jface;singleton:=true
-Bundle-Version: 3.35.0.qualifier
+Bundle-Version: 3.36.0.qualifier
Bundle-Vendor: %providerName
Bundle-Localization: plugin
Export-Package: org.eclipse.jface,
diff --git a/bundles/org.eclipse.jface/icons/full/page.png b/bundles/org.eclipse.jface/icons/full/page.png
index 45d0453aaca..a5d8e737766 100644
Binary files a/bundles/org.eclipse.jface/icons/full/page.png and b/bundles/org.eclipse.jface/icons/full/page.png differ
diff --git a/bundles/org.eclipse.jface/icons/full/page@2x.png b/bundles/org.eclipse.jface/icons/full/page@2x.png
index 4b7ba57a1a1..9b92c0975bd 100644
Binary files a/bundles/org.eclipse.jface/icons/full/page@2x.png and b/bundles/org.eclipse.jface/icons/full/page@2x.png differ
diff --git a/bundles/org.eclipse.jface/icons/full/title_banner.png b/bundles/org.eclipse.jface/icons/full/title_banner.png
index f6d82fa0201..3e905bae798 100644
Binary files a/bundles/org.eclipse.jface/icons/full/title_banner.png and b/bundles/org.eclipse.jface/icons/full/title_banner.png differ
diff --git a/bundles/org.eclipse.jface/icons/full/title_banner@2x.png b/bundles/org.eclipse.jface/icons/full/title_banner@2x.png
index 866e2ea8373..43860165917 100644
Binary files a/bundles/org.eclipse.jface/icons/full/title_banner@2x.png and b/bundles/org.eclipse.jface/icons/full/title_banner@2x.png differ
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/formatting/AbstractKeyFormatter.properties b/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/formatting/AbstractKeyFormatter.properties
index b82d3b9eafc..eeced66c8b0 100644
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/formatting/AbstractKeyFormatter.properties
+++ b/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/formatting/AbstractKeyFormatter.properties
@@ -19,10 +19,10 @@ CTRL=Ctrl
SHIFT=Shift
# Special keys
-ARROW_DOWN=Down
-ARROW_LEFT=Left
-ARROW_RIGHT=Right
-ARROW_UP=Up
+ARROW_DOWN=\u2193
+ARROW_LEFT=\u2190
+ARROW_RIGHT=\u2192
+ARROW_UP=\u2191
BREAK=Break
CAPS_LOCK=CapsLock
END=End
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/FontRegistry.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/FontRegistry.java
index ef4cfa0f0a1..af6ece8b40e 100644
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/FontRegistry.java
+++ b/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/FontRegistry.java
@@ -25,6 +25,7 @@
import java.util.MissingResourceException;
import java.util.ResourceBundle;
import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
import org.eclipse.core.runtime.Assert;
import org.eclipse.jface.util.Policy;
@@ -207,7 +208,7 @@ void addAllocatedFontsToStale(Font defaultFont) {
*/
protected Runnable displayRunnable = this::clearCaches;
- private boolean displayDisposeHooked;
+ private final Set displayDisposeHooked = ConcurrentHashMap.newKeySet();
private final boolean cleanOnDisplayDisposal;
@@ -492,7 +493,7 @@ private FontRecord createFont(String symbolicName, FontData[] fonts) {
if (display == null) {
return null;
}
- if (cleanOnDisplayDisposal && !displayDisposeHooked) {
+ if (cleanOnDisplayDisposal && !displayDisposeHooked.contains(display)) {
hookDisplayDispose(display);
}
@@ -718,7 +719,7 @@ protected void clearCaches() {
stringToFontRecord.clear();
staleFonts.clear();
- displayDisposeHooked = false;
+ displayDisposeHooked.remove(Display.getCurrent());
}
/**
@@ -736,7 +737,7 @@ private void disposeFonts(Iterator iterator) {
* Hook a dispose listener on the SWT display.
*/
private void hookDisplayDispose(Display display) {
- displayDisposeHooked = true;
+ displayDisposeHooked.add(display);
display.disposeExec(displayRunnable);
}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/ImageDescriptor.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/ImageDescriptor.java
index 1a529975466..23071678e1f 100644
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/ImageDescriptor.java
+++ b/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/ImageDescriptor.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2023 IBM Corporation and others.
+ * Copyright (c) 2000, 2024 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -205,25 +205,47 @@ public static ImageDescriptor createFromURLSupplier(boolean useMissingImage, Sup
}
/**
- * Convenient method to create an ImageDescriptor from an URI
+ * Convenient method to create an ImageDescriptor from an URI.
*
- * Delegates to ImageDescriptor createFromURL
+ * Delegates to {@link ImageDescriptor#createFromURL(URL)}. Important
+ * This method should only be used when it's guaranteed that the given
+ * {@link URI} is also a valid {@link URL}, in order to avoid the
+ * {@link MalformedURLException} thrown by {@link URI#toURL()}.
+ *
+ * If the URI is {@code null} or not a valid {@link URL}, then an image from
+ * {@link #getMissingImageDescriptor()} will be returned.
*
* @param uriIconPath The URI of the image file.
* @return a new image descriptor
*
- * @since 3.19
+ * @since 3.36
*/
- public ImageDescriptor imageDescriptorFromURI(URI uriIconPath) {
+ public static ImageDescriptor createFromURI(URI uriIconPath) {
try {
- return ImageDescriptor.createFromURL(new URL(uriIconPath.toString()));
- } catch (MalformedURLException | NullPointerException e) {
+ return ImageDescriptor.createFromURL(uriIconPath != null ? uriIconPath.toURL() : null);
+ } catch (MalformedURLException e) {
// return the missing image placeholder to indicate
// the incorrect call without interfering with the user flow
return getMissingImageDescriptor();
}
}
+ /**
+ * Convenient method to create an ImageDescriptor from an URI
+ *
+ * Delegates to ImageDescriptor createFromURL
+ *
+ * @param uriIconPath The URI of the image file.
+ * @return a new image descriptor
+ *
+ * @since 3.19
+ * @deprecated Use {@link #createFromURI(URI)} instead.
+ */
+ @Deprecated(since = "3.36", forRemoval = true)
+ public ImageDescriptor imageDescriptorFromURI(URI uriIconPath) {
+ return createFromURI(uriIconPath);
+ }
+
@Override
public Object createResource(Device device) throws DeviceResourceException {
Image result = createImage(false, device);
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/AbstractFilteredViewerComposite.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/AbstractFilteredViewerComposite.java
new file mode 100644
index 00000000000..c5618ccc13a
--- /dev/null
+++ b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/AbstractFilteredViewerComposite.java
@@ -0,0 +1,325 @@
+/*******************************************************************************
+ * Copyright (c) 2025 Patrick Ziegler 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
+ *
+ * Contributors:
+ * Patrick Ziegler - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jface.viewers;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.FocusAdapter;
+import org.eclipse.swt.events.FocusEvent;
+import org.eclipse.swt.events.MouseAdapter;
+import org.eclipse.swt.events.MouseEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Text;
+
+/**
+ * @since 3.36
+ */
+public abstract class AbstractFilteredViewerComposite extends Composite {
+
+ /**
+ * The pattern filter for the tree. This value must not be null.
+ */
+ private ViewerFilter patternFilter;
+
+ /**
+ * The filter text widget to be used by this tree. This value may be
+ * {@code null} if there is no filter widget, or if the controls have not yet
+ * been created.
+ */
+ protected Text filterText;
+
+ /**
+ * The Composite on which the filter controls are created. This is used to set
+ * the background color of the filter controls to match the surrounding
+ * controls.
+ */
+ protected Composite filterComposite;
+
+ /**
+ * Whether or not to show the filter controls (text and clear button). The
+ * default is to show these controls. This can be overridden by providing a
+ * setting in the product configuration file. For example, the setting to add to
+ * not show these controls in an 3x based application is:
+ *
+ * org.eclipse.ui/SHOW_FILTERED_TEXTS=false
+ */
+ protected boolean showFilterControls;
+
+ /**
+ * The text to initially show in the filter text control.
+ */
+ protected String initialText = ""; //$NON-NLS-1$
+
+ /**
+ * The parent composite of the filtered viewer.
+ */
+ protected Composite parent;
+
+ /**
+ * Time for refresh job delay in terms of expansion in long value
+ */
+ private final long refreshJobDelayInMillis;
+
+ /**
+ * Create a new instance of the receiver.
+ *
+ * @param parent a widget which will be the parent this
+ * composite
+ * @param style the style used to construct this widget
+ * @param refreshJobDelayInMillis refresh delay in ms, the time to expand the
+ * tree after debounce
+ */
+ public AbstractFilteredViewerComposite(Composite parent, int style, long refreshJobDelayInMillis) {
+ super(parent, style);
+ this.refreshJobDelayInMillis = refreshJobDelayInMillis;
+ }
+
+ /**
+ * Create the filtered viewer.
+ *
+ * @param style the style bits for the viewer's {@code Control}
+ * @param filter the filter to be used
+ */
+ protected void init(int style, T filter) {
+ patternFilter = filter;
+ createControl(parent, style);
+ setFont(parent.getFont());
+
+ }
+
+ /**
+ * Create the filtered viewer's controls. Subclasses should override.
+ *
+ * @param parent the parent
+ * @param style SWT style bits used to create the control
+ */
+ protected void createControl(Composite parent, int style) {
+ GridLayout layout = new GridLayout();
+ layout.marginHeight = 0;
+ layout.marginWidth = 0;
+ setLayout(layout);
+
+ if (parent.getLayout() instanceof GridLayout) {
+ setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ }
+
+ if (showFilterControls) {
+ filterComposite = new Composite(this, SWT.NONE);
+ GridLayout filterLayout = new GridLayout();
+ filterLayout.marginHeight = 0;
+ filterLayout.marginWidth = 0;
+ filterComposite.setLayout(filterLayout);
+ filterComposite.setFont(parent.getFont());
+
+ createFilterControls(filterComposite);
+ filterComposite.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false));
+ }
+ }
+
+ /**
+ * Create the filter controls. By default, a text and corresponding tool bar
+ * button that clears the contents of the text is created. Subclasses may
+ * override.
+ *
+ * @param parent parent Composite of the filter controls
+ * @return the Composite that contains the filter controls
+ */
+ protected Composite createFilterControls(Composite parent) {
+ createFilterText(parent);
+ return parent;
+ }
+
+ /**
+ * Creates the filter text and adds listeners. This method calls
+ * {@link #doCreateFilterText(Composite)} to create the text control. Subclasses
+ * should override {@link #doCreateFilterText(Composite)} instead of overriding
+ * this method.
+ *
+ * @param parent Composite of the filter text
+ */
+ protected void createFilterText(Composite parent) {
+ filterText = doCreateFilterText(parent);
+
+ filterText.addFocusListener(new FocusAdapter() {
+ @Override
+ public void focusGained(FocusEvent e) {
+ /*
+ * Running in an asyncExec because the selectAll() does not appear to work when
+ * using mouse to give focus to text.
+ */
+ Display display = filterText.getDisplay();
+ display.asyncExec(() -> {
+ if (!filterText.isDisposed()) {
+ if (getInitialText().equals(filterText.getText().trim())) {
+ filterText.selectAll();
+ }
+ }
+ });
+ }
+
+ @Override
+ public void focusLost(FocusEvent e) {
+ if (filterText.getText().equals(initialText)) {
+ setFilterText(""); //$NON-NLS-1$
+ textChanged();
+ }
+ }
+ });
+
+ filterText.addMouseListener(new MouseAdapter() {
+ @Override
+ public void mouseDown(MouseEvent e) {
+ if (filterText.getText().equals(initialText)) {
+ // XXX: We cannot call clearText() due to
+ // https://bugs.eclipse.org/bugs/show_bug.cgi?id=260664
+ setFilterText(""); //$NON-NLS-1$
+ textChanged();
+ }
+ }
+ });
+
+ filterText.addModifyListener(e -> textChanged());
+
+ GridData gridData = new GridData(SWT.FILL, SWT.CENTER, true, false);
+ filterText.setLayoutData(gridData);
+ }
+
+ /**
+ * Creates the text control for entering the filter text. Subclasses may
+ * override.
+ *
+ * @param parent the parent composite
+ * @return the text widget
+ */
+ protected abstract Text doCreateFilterText(Composite parent);
+
+ /**
+ * Update the receiver after the text has changed.
+ */
+ protected abstract void textChanged();
+
+ /**
+ * Return the time delay that should be used when scheduling the filter refresh
+ * job. Subclasses may override.
+ *
+ * @return a time delay in milliseconds before the job should run
+ */
+ protected long getRefreshJobDelay() {
+ return refreshJobDelayInMillis;
+ }
+
+ /**
+ * Clears the text in the filter text widget.
+ */
+ protected void clearText() {
+ setFilterText(""); //$NON-NLS-1$
+ textChanged();
+ }
+
+ /**
+ * Set the text in the filter control.
+ *
+ * @param filterText the text to set.
+ */
+ protected void setFilterText(String filterText) {
+ if (this.filterText != null) {
+ this.filterText.setText(filterText);
+ selectAll();
+ }
+ }
+
+ /**
+ * Returns the pattern filter used by this tree.
+ *
+ * @return The pattern filter; never {@code null}.
+ */
+ public ViewerFilter getPatternFilter() {
+ return patternFilter;
+ }
+
+ /**
+ * Get the structured viewer of the receiver.
+ *
+ * @return the structured viewer
+ */
+ public abstract StructuredViewer getViewer();
+
+ /**
+ * Get the filter text for the receiver, if it was created. Otherwise return
+ * {@code null}.
+ *
+ * @return the filter Text, or null if it was not created
+ */
+ public Text getFilterControl() {
+ return filterText;
+ }
+
+ /**
+ * Convenience method to return the text of the filter control. If the text
+ * widget is not created, then null is returned.
+ *
+ * @return String in the text, or null if the text does not exist
+ */
+ protected String getFilterString() {
+ return filterText != null ? filterText.getText() : null;
+ }
+
+ /**
+ * Set the text that will be shown until the first focus. A default value is
+ * provided, so this method only need be called if overriding the default
+ * initial text is desired.
+ *
+ * @param text initial text to appear in text field
+ */
+ public void setInitialText(String text) {
+ initialText = text;
+ if (filterText != null) {
+ filterText.setMessage(text);
+ if (filterText.isFocusControl()) {
+ setFilterText(initialText);
+ textChanged();
+ } else {
+ getDisplay().asyncExec(() -> {
+ if (!filterText.isDisposed() && filterText.isFocusControl()) {
+ setFilterText(initialText);
+ textChanged();
+ }
+ });
+ }
+ } else {
+ setFilterText(initialText);
+ textChanged();
+ }
+ }
+
+ /**
+ * Select all text in the filter text field.
+ */
+ protected void selectAll() {
+ if (filterText != null) {
+ filterText.selectAll();
+ }
+ }
+
+ /**
+ * Get the initial text for the receiver.
+ *
+ * @return String
+ */
+ protected String getInitialText() {
+ return initialText;
+ }
+}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/AbstractTreeViewer.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/AbstractTreeViewer.java
index 0bdc435dea4..585bcc1b7f7 100644
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/AbstractTreeViewer.java
+++ b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/AbstractTreeViewer.java
@@ -1862,13 +1862,11 @@ private void internalConditionalExpandToLevel(Widget widget, int level,
}
if (level == ALL_LEVELS || level > 1) {
Item[] children = getChildren(widget);
- if (children != null) {
+ if (children != null && shouldChildrenExpand.apply(widget).booleanValue()) {
int newLevel = (level == ALL_LEVELS ? ALL_LEVELS
: level - 1);
for (Item element : children) {
- if (shouldChildrenExpand.apply(widget).booleanValue()) {
- internalConditionalExpandToLevel(element, newLevel, shouldChildrenExpand);
- }
+ internalConditionalExpandToLevel(element, newLevel, shouldChildrenExpand);
}
}
}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/window/Window.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/window/Window.java
index 2c4706007a7..5b0aecf214a 100644
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/window/Window.java
+++ b/bundles/org.eclipse.jface/src/org/eclipse/jface/window/Window.java
@@ -655,8 +655,8 @@ public int getReturnCode() {
/**
* Returns this window's shell.
*
- * @return this window's shell, or null if this window's
- * shell has not been created yet
+ * @return this window's shell, or null if this window's shell has
+ * not been created yet or if this window has been closed
*/
@Override
public Shell getShell() {
diff --git a/bundles/org.eclipse.ltk.core.refactoring/META-INF/MANIFEST.MF b/bundles/org.eclipse.ltk.core.refactoring/META-INF/MANIFEST.MF
index 3d9e6012b46..efd1ad715c4 100644
--- a/bundles/org.eclipse.ltk.core.refactoring/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.ltk.core.refactoring/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@ Automatic-Module-Name: org.eclipse.ltk.core.refactoring
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.ltk.core.refactoring; singleton:=true
-Bundle-Version: 3.14.600.qualifier
+Bundle-Version: 3.15.0.qualifier
Bundle-Activator: org.eclipse.ltk.internal.core.refactoring.RefactoringCorePlugin
Bundle-ActivationPolicy: lazy
Bundle-Vendor: %providerName
diff --git a/bundles/org.eclipse.ltk.core.refactoring/plugin.xml b/bundles/org.eclipse.ltk.core.refactoring/plugin.xml
index cf650f00d49..d59248c24ca 100644
--- a/bundles/org.eclipse.ltk.core.refactoring/plugin.xml
+++ b/bundles/org.eclipse.ltk.core.refactoring/plugin.xml
@@ -48,5 +48,9 @@
+
+
\ No newline at end of file
diff --git a/bundles/org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/core/refactoring/resource/CopyProjectChange.java b/bundles/org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/core/refactoring/resource/CopyProjectChange.java
new file mode 100644
index 00000000000..841e8a563e7
--- /dev/null
+++ b/bundles/org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/core/refactoring/resource/CopyProjectChange.java
@@ -0,0 +1,153 @@
+/*******************************************************************************
+ * Copyright (c) 2024 Vector Informatik GmbH 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
+ *
+ * Contributors:
+ * Vector Informatik GmbH - initial implementation
+ *******************************************************************************/
+package org.eclipse.ltk.core.refactoring.resource;
+
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.SubMonitor;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IProjectDescription;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IResourceVisitor;
+
+import org.eclipse.core.filebuffers.FileBuffers;
+import org.eclipse.core.filebuffers.ITextFileBuffer;
+import org.eclipse.core.filebuffers.LocationKind;
+
+import org.eclipse.ltk.core.refactoring.Change;
+import org.eclipse.ltk.core.refactoring.ChangeDescriptor;
+import org.eclipse.ltk.internal.core.refactoring.BasicElementLabels;
+import org.eclipse.ltk.internal.core.refactoring.Messages;
+import org.eclipse.ltk.internal.core.refactoring.RefactoringCoreMessages;
+import org.eclipse.ltk.internal.core.refactoring.RefactoringCorePlugin;
+
+/**
+ * {@link Change} that copies a project
+ *
+ * @since 3.15
+ */
+public class CopyProjectChange extends ResourceChange {
+
+ private final IProject fSourceProject;
+
+ private ChangeDescriptor fDescriptor;
+
+ private String fNewName;
+
+ private IPath fNewLocation;
+
+ /**
+ * Copy a project.
+ *
+ * @param resourcePath the project path
+ * @param newLocation location of the new project
+ * @param newName name of the new project
+ */
+ public CopyProjectChange(IProject resourcePath, IPath newLocation, String newName) {
+ Assert.isNotNull(resourcePath);
+ fNewName= newName;
+ fNewLocation= newLocation;
+ fSourceProject= resourcePath;
+ setValidationMethod(SAVE_IF_DIRTY);
+ }
+
+ @Override
+ protected IResource getModifiedResource() {
+ return fSourceProject;
+ }
+
+
+ @Override
+ public String getName() {
+ return RefactoringCoreMessages.CopyProjectChange_Name + fSourceProject.getName();
+ }
+
+ @Override
+ public Change perform(IProgressMonitor pm) throws CoreException {
+ SubMonitor subMonitor= SubMonitor.convert(pm, RefactoringCoreMessages.CopyProjectChange_copying, 10);
+
+ if (fSourceProject == null || !fSourceProject.exists()) {
+ String message= Messages.format(RefactoringCoreMessages.CopyProjectChange_error_resource_not_exists,
+ BasicElementLabels.getPathLabel(fSourceProject.getFullPath().makeRelative(), false));
+ throw new CoreException(new Status(IStatus.ERROR, RefactoringCorePlugin.getPluginId(), message));
+ }
+
+ // make sure all files inside the resource are saved
+ if (fSourceProject.isAccessible()) {
+ fSourceProject.accept((IResourceVisitor) curr -> {
+ try {
+ if (curr instanceof IFile) {
+ // progress is covered outside.
+ saveFileIfNeeded((IFile) curr, new NullProgressMonitor());
+ }
+ } catch (CoreException e) {
+ // ignore
+ }
+ return true;
+ }, IResource.DEPTH_INFINITE, false);
+ }
+
+ IProjectDescription description= fSourceProject.getDescription();
+
+ if (fNewLocation != null && (fNewLocation.equals(Platform.getLocation()) || fNewLocation.isRoot())) {
+ fNewLocation= null;
+ }
+
+ description.setName(fNewName);
+ description.setLocation(fNewLocation);
+
+ fSourceProject.copy(description, IResource.FORCE | IResource.SHALLOW, subMonitor.newChild(10));
+
+ IProject targetProject= fSourceProject.getWorkspace().getRoot().getProject(fNewName);
+
+ return new DeleteResourceChange(targetProject.getFullPath(), true, true);
+
+ }
+
+ private static void saveFileIfNeeded(IFile file, IProgressMonitor pm) throws CoreException {
+ ITextFileBuffer buffer= FileBuffers.getTextFileBufferManager().getTextFileBuffer(file.getFullPath(), LocationKind.IFILE);
+ SubMonitor subMonitor= SubMonitor.convert(pm, 2);
+ if (buffer != null && buffer.isDirty() && buffer.isStateValidated() && buffer.isSynchronized()) {
+ buffer.commit(subMonitor.newChild(1), false);
+ file.refreshLocal(IResource.DEPTH_ONE, subMonitor.newChild(1));
+ buffer.commit(subMonitor.newChild(1), false);
+ file.refreshLocal(IResource.DEPTH_ONE, subMonitor.newChild(1));
+ } else {
+ subMonitor.worked(2);
+ }
+ }
+
+ @Override
+ public ChangeDescriptor getDescriptor() {
+ return fDescriptor;
+ }
+
+ /**
+ * Sets the change descriptor to be returned by {@link Change#getDescriptor()}.
+ *
+ * @param descriptor the change descriptor
+ */
+ public void setDescriptor(ChangeDescriptor descriptor) {
+ fDescriptor= descriptor;
+ }
+
+}
diff --git a/bundles/org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/core/refactoring/resource/CopyProjectDescriptor.java b/bundles/org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/core/refactoring/resource/CopyProjectDescriptor.java
new file mode 100644
index 00000000000..78fa7bc26d3
--- /dev/null
+++ b/bundles/org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/core/refactoring/resource/CopyProjectDescriptor.java
@@ -0,0 +1,145 @@
+/*******************************************************************************
+ * Copyright (c) 2024 Vector Informatik GmbH 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
+ *
+ * Contributors:
+ * Vector Informatik GmbH - initial implementation
+ *******************************************************************************/
+package org.eclipse.ltk.core.refactoring.resource;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IWorkspaceRoot;
+import org.eclipse.core.resources.ResourcesPlugin;
+
+import org.eclipse.ltk.core.refactoring.Refactoring;
+import org.eclipse.ltk.core.refactoring.RefactoringContribution;
+import org.eclipse.ltk.core.refactoring.RefactoringCore;
+import org.eclipse.ltk.core.refactoring.RefactoringDescriptor;
+import org.eclipse.ltk.core.refactoring.RefactoringStatus;
+import org.eclipse.ltk.core.refactoring.participants.CopyRefactoring;
+import org.eclipse.ltk.internal.core.refactoring.BasicElementLabels;
+import org.eclipse.ltk.internal.core.refactoring.Messages;
+import org.eclipse.ltk.internal.core.refactoring.RefactoringCoreMessages;
+import org.eclipse.ltk.internal.core.refactoring.resource.CopyProjectProcessor;
+
+/**
+ * Refactoring descriptor for the copy project refactoring.
+ *
+ * An instance of this refactoring descriptor may be obtained by calling
+ * {@link RefactoringContribution#createDescriptor()} on a refactoring contribution requested by
+ * invoking {@link RefactoringCore#getRefactoringContribution(String)} with the refactoring id
+ * ({@link #ID}).
+ *
+ *
+ * Note: this class is not intended to be subclassed or instantiated by clients.
+ *
+ *
+ * @since 3.15
+ *
+ * @noinstantiate This class is not intended to be instantiated by clients.
+ * @noextend This class is not intended to be subclassed by clients.
+ */
+public class CopyProjectDescriptor extends RefactoringDescriptor {
+ /**
+ * Refactoring id of the 'Copy Project' refactoring (value:
+ * org.eclipse.ltk.core.refactoring.copyproject.resources).
+ *
+ * Clients may safely cast the obtained refactoring descriptor to {@link CopyProjectDescriptor}.
+ *
+ */
+ public static final String ID= "org.eclipse.ltk.core.refactoring.copyproject.resource"; //$NON-NLS-1$
+
+ private IPath fSourcePath;
+
+ private String fNewName;
+
+ private IPath fNewLocation;
+
+ /**
+ * Creates a new refactoring descriptor.
+ *
+ * Clients should not instantiated this class but use
+ * {@link RefactoringCore#getRefactoringContribution(String)} with {@link #ID} to get the
+ * contribution that can create the descriptor.
+ *
+ */
+ public CopyProjectDescriptor() {
+ super(ID, null, RefactoringCoreMessages.RenameResourceDescriptor_unnamed_descriptor, null, RefactoringDescriptor.STRUCTURAL_CHANGE | RefactoringDescriptor.MULTI_CHANGE);
+ }
+
+ /**
+ * The resource paths to delete.
+ *
+ * @return an array of IPaths.
+ */
+ public IPath getSourcePath() {
+ return fSourcePath;
+ }
+
+ public String getNewName() {
+ return fNewName;
+ }
+
+ public IPath getNewLocation() {
+ return fNewLocation;
+ }
+
+ /**
+ * The paths to the resources to be deleted. The resources can be {@link IProject} or a mixture
+ * of {@link IFile} and {@link IFolder}.
+ *
+ * @param resourcePath paths of the resources to be deleted
+ */
+ public void setResourcePath(IPath resourcePath) {
+ if (resourcePath == null)
+ throw new IllegalArgumentException();
+ fSourcePath= resourcePath;
+ }
+
+ /**
+ * The project to be copied.
+ *
+ * @param project {@link IProject} to be copied
+ */
+ public void setProjectToCopy(IProject project) {
+ if (project == null)
+ throw new IllegalArgumentException();
+ setResourcePath(project.getFullPath());
+ }
+
+ @Override
+ public Refactoring createRefactoring(RefactoringStatus status) throws CoreException {
+ IWorkspaceRoot wsRoot= ResourcesPlugin.getWorkspace().getRoot();
+ IResource resource= wsRoot.findMember(fSourcePath);
+ if (resource == null || !resource.exists()) {
+ status.addFatalError(Messages.format(RefactoringCoreMessages.CopyProjectDescriptor_project_copy_does_not_exist, BasicElementLabels.getPathLabel(fSourcePath, false)));
+ return null;
+ }
+ if (resource instanceof IProject project) {
+ return new CopyRefactoring(new CopyProjectProcessor(project, fNewName, fNewLocation));
+ }
+ return null;
+ }
+
+ public void setNewName(String newName) {
+ fNewName= newName;
+
+ }
+
+ public void setNewLocation(IPath newLocation) {
+ fNewLocation= newLocation;
+ }
+
+}
diff --git a/bundles/org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/internal/core/refactoring/RefactoringCoreMessages.java b/bundles/org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/internal/core/refactoring/RefactoringCoreMessages.java
index d0b9f263725..7af984b0cfc 100644
--- a/bundles/org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/internal/core/refactoring/RefactoringCoreMessages.java
+++ b/bundles/org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/internal/core/refactoring/RefactoringCoreMessages.java
@@ -33,6 +33,20 @@ public final class RefactoringCoreMessages extends NLS {
public static String CompositeChange_performingChangesTask_name;
+ public static String CopyProjectChange_copying;
+
+ public static String CopyProjectChange_error_resource_not_exists;
+
+ public static String CopyProjectChange_Name;
+
+ public static String CopyProjectDescriptor_project_copy_does_not_exist;
+
+ public static String CopyProjectProcessor_description;
+
+ public static String CopyProjectProcessor_error_project_exists;
+
+ public static String CopyProjectProcessor_name;
+
public static String CreateChangeOperation_unknown_Refactoring;
public static String DefaultRefactoringDescriptor_cannot_create_refactoring;
diff --git a/bundles/org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/internal/core/refactoring/RefactoringCoreMessages.properties b/bundles/org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/internal/core/refactoring/RefactoringCoreMessages.properties
index 3166e08f590..d44f72aa7a2 100644
--- a/bundles/org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/internal/core/refactoring/RefactoringCoreMessages.properties
+++ b/bundles/org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/internal/core/refactoring/RefactoringCoreMessages.properties
@@ -54,6 +54,13 @@ BufferValidationState_character_encoding_changed=The character encoding of ''{0}
CheckConditionContext_error_checker_exists= A checker of type ''{0}'' already exists.
CompositeChange_performingChangesTask_name=Performing changes...
+CopyProjectChange_copying=Copying...
+CopyProjectChange_error_resource_not_exists=Can not copy Project ''{0}''. Project does not exist.
+CopyProjectChange_Name=Copy Project
+CopyProjectDescriptor_project_copy_does_not_exist=The Project ''{0}'' to copy does not exist.
+CopyProjectProcessor_description=Copy Project ''{0}''
+CopyProjectProcessor_error_project_exists=There is already a Project with the name ''{0}''
+CopyProjectProcessor_name=Copy Project
ProcessorBasedRefactoring_initial_conditions=Checking preconditions...
ProcessorBasedRefactoring_check_condition_participant_failed=The participant ''{0}'' caused an internal error and has been disabled for this refactoring. See the error log for more details.
diff --git a/bundles/org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/internal/core/refactoring/resource/CopyProjectProcessor.java b/bundles/org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/internal/core/refactoring/resource/CopyProjectProcessor.java
new file mode 100644
index 00000000000..951dc868531
--- /dev/null
+++ b/bundles/org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/internal/core/refactoring/resource/CopyProjectProcessor.java
@@ -0,0 +1,265 @@
+/*******************************************************************************
+ * Copyright (c) 2024 Vector Informatik GmbH 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
+ *
+ * Contributors:
+ * Vector Informatik GmbH - initial implementation
+ *******************************************************************************/
+package org.eclipse.ltk.internal.core.refactoring.resource;
+
+import java.net.URI;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.OperationCanceledException;
+import org.eclipse.core.runtime.Platform;
+
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IResourceVisitor;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.resources.mapping.IResourceChangeDescriptionFactory;
+
+import org.eclipse.core.filebuffers.FileBuffers;
+import org.eclipse.core.filebuffers.ITextFileBuffer;
+import org.eclipse.core.filebuffers.LocationKind;
+
+import org.eclipse.ltk.core.refactoring.Change;
+import org.eclipse.ltk.core.refactoring.RefactoringChangeDescriptor;
+import org.eclipse.ltk.core.refactoring.RefactoringDescriptor;
+import org.eclipse.ltk.core.refactoring.RefactoringStatus;
+import org.eclipse.ltk.core.refactoring.participants.CheckConditionsContext;
+import org.eclipse.ltk.core.refactoring.participants.CopyArguments;
+import org.eclipse.ltk.core.refactoring.participants.CopyProcessor;
+import org.eclipse.ltk.core.refactoring.participants.ParticipantManager;
+import org.eclipse.ltk.core.refactoring.participants.RefactoringParticipant;
+import org.eclipse.ltk.core.refactoring.participants.ReorgExecutionLog;
+import org.eclipse.ltk.core.refactoring.participants.ResourceChangeChecker;
+import org.eclipse.ltk.core.refactoring.participants.SharableParticipants;
+import org.eclipse.ltk.core.refactoring.resource.CopyProjectChange;
+import org.eclipse.ltk.core.refactoring.resource.CopyProjectDescriptor;
+import org.eclipse.ltk.core.refactoring.resource.Resources;
+import org.eclipse.ltk.internal.core.refactoring.BasicElementLabels;
+import org.eclipse.ltk.internal.core.refactoring.Messages;
+import org.eclipse.ltk.internal.core.refactoring.RefactoringCoreMessages;
+
+/**
+ * A copy processor for {@link IProject projects}. The processor will copy the project and load copy
+ * participants.
+ *
+ * @since 3.15
+ */
+public class CopyProjectProcessor extends CopyProcessor {
+ private IProject fProject;
+
+ private String fNewName;
+
+ private IPath fNewLocation;
+
+ /**
+ * Create a new copy project processor.
+ *
+ * @param project the {@link IProject} to copy.
+ * @param newLocation the new Location for the project.
+ * @param newName name of the new project.
+ */
+ public CopyProjectProcessor(IProject project, String newName, IPath newLocation) {
+ if (project == null || !project.exists()) {
+ throw new IllegalArgumentException("project must not be null and must exist"); //$NON-NLS-1$
+ }
+
+ fProject= project;
+ fNewName= newName;
+ fNewLocation= newLocation;
+ }
+
+ /**
+ * Returns the project to copy
+ *
+ * @return the project to copy
+ */
+ public IProject getProjectToCopy() {
+ return fProject;
+ }
+
+ @Override
+ public RefactoringStatus checkInitialConditions(IProgressMonitor pm) throws CoreException, OperationCanceledException {
+ IStatus status= Resources.checkInSync(fProject);
+ if (!status.isOK()) {
+ boolean autoRefresh= Platform.getPreferencesService().getBoolean(ResourcesPlugin.PI_RESOURCES, ResourcesPlugin.PREF_LIGHTWEIGHT_AUTO_REFRESH, false, null);
+ if (autoRefresh) {
+ fProject.refreshLocal(IResource.DEPTH_INFINITE, pm);
+ status= Resources.checkInSync(fProject);
+ }
+ }
+ return RefactoringStatus.create(status);
+ }
+
+ @Override
+ public RefactoringStatus checkFinalConditions(IProgressMonitor pm, CheckConditionsContext context) throws CoreException, OperationCanceledException {
+ pm.beginTask("", 1); //$NON-NLS-1$
+ try {
+ RefactoringStatus result= new RefactoringStatus();
+
+ if (!isSynchronizedExcludingLinkedResources(fProject)) {
+ String pathLabel= BasicElementLabels.getPathLabel(fProject.getFullPath(), false);
+
+ String locationLabel= null;
+ IPath location= fProject.getLocation();
+ if (location != null) {
+ locationLabel= BasicElementLabels.getPathLabel(location, true);
+ } else {
+ URI uri= fProject.getLocationURI();
+ if (uri != null) {
+ locationLabel= BasicElementLabels.getURLPart(uri.toString());
+ }
+ }
+
+ String warning;
+ if (locationLabel != null) {
+ warning= Messages.format(RefactoringCoreMessages.DeleteResourcesProcessor_warning_out_of_sync_container_loc, new Object[] { pathLabel, locationLabel });
+ } else {
+ warning= Messages.format(RefactoringCoreMessages.DeleteResourcesProcessor_warning_out_of_sync_container, pathLabel);
+ }
+ result.addWarning(warning);
+ }
+
+ checkDirtyResources(result);
+
+ if (ResourcesPlugin.getWorkspace().getRoot().getProject(fNewName).exists()) {
+ result.addError(Messages.format(RefactoringCoreMessages.CopyProjectProcessor_error_project_exists, fNewName));
+ }
+
+ ResourceChangeChecker checker= context.getChecker(ResourceChangeChecker.class);
+ IResourceChangeDescriptionFactory deltaFactory= checker.getDeltaFactory();
+ deltaFactory.copy(fProject, fNewLocation.append(fNewName));
+
+ return result;
+ } finally {
+ pm.done();
+ }
+ }
+
+ /**
+ * Checks whether this resource and its descendents are considered to be in sync with the local
+ * file system. The linked resources and their descendents are excluded from the check.
+ *
+ * @param resource the resource to check
+ * @return true if this resource and its descendents except linked resources are
+ * synchronized, and false in all other cases
+ * @throws CoreException if visiting the resource descendents fails for any reason
+ * @see IResource#isSynchronized(int)
+ */
+ public boolean isSynchronizedExcludingLinkedResources(IResource resource) throws CoreException {
+ boolean[] result= { true };
+ resource.accept((IResourceVisitor) visitedResource -> {
+ if (!result[0] || visitedResource.isLinked())
+ return false;
+ if (!visitedResource.isSynchronized(IResource.DEPTH_ZERO)) {
+ result[0]= false;
+ return false;
+ }
+ return true;
+ }, IResource.DEPTH_INFINITE, IContainer.DO_NOT_CHECK_EXISTENCE);
+ return result[0];
+ }
+
+ private void checkDirtyResources(final RefactoringStatus result) throws CoreException {
+ if (!fProject.isOpen()) {
+ return;
+ }
+ fProject.accept((IResourceVisitor) visitedResource -> {
+ if (visitedResource instanceof IFile) {
+ checkDirtyFile(result, (IFile) visitedResource);
+ }
+ return true;
+ }, IResource.DEPTH_INFINITE, false);
+ }
+
+ private void checkDirtyFile(RefactoringStatus result, IFile file) {
+ if (!file.exists())
+ return;
+ ITextFileBuffer buffer= FileBuffers.getTextFileBufferManager().getTextFileBuffer(file.getFullPath(), LocationKind.IFILE);
+ if (buffer != null && buffer.isDirty()) {
+ String message= RefactoringCoreMessages.DeleteResourcesProcessor_warning_unsaved_file;
+ if (buffer.isStateValidated() && buffer.isSynchronized()) {
+ result.addWarning(Messages.format(message, BasicElementLabels.getPathLabel(file.getFullPath(), false)));
+ } else {
+ result.addFatalError(Messages.format(message, BasicElementLabels.getPathLabel(file.getFullPath(), false)));
+ }
+ }
+ }
+
+ @Override
+ public Change createChange(IProgressMonitor pm) throws CoreException, OperationCanceledException {
+ pm.beginTask(RefactoringCoreMessages.DeleteResourcesProcessor_create_task, 1);
+ try {
+ CopyProjectChange change= new CopyProjectChange(fProject, fNewLocation, fNewName);
+ change.setDescriptor(new RefactoringChangeDescriptor(createDescriptor()));
+ return change;
+ } finally {
+ pm.done();
+ }
+ }
+
+ protected CopyProjectDescriptor createDescriptor() {
+ CopyProjectDescriptor descriptor= new CopyProjectDescriptor();
+ descriptor.setProject(null);
+ descriptor.setDescription(getDescription());
+ descriptor.setComment(descriptor.getDescription());
+ descriptor.setFlags(RefactoringDescriptor.STRUCTURAL_CHANGE | RefactoringDescriptor.MULTI_CHANGE | RefactoringDescriptor.BREAKING_CHANGE);
+
+ descriptor.setProjectToCopy(fProject);
+ descriptor.setNewName(fNewName);
+ descriptor.setNewLocation(fNewLocation);
+ return descriptor;
+ }
+
+ private String getDescription() {
+ return Messages.format(RefactoringCoreMessages.CopyProjectProcessor_description, BasicElementLabels.getPathLabel(fProject.getFullPath(), false));
+ }
+
+ @Override
+ public Object[] getElements() {
+ return new Object[] { fProject };
+ }
+
+ @Override
+ public String getIdentifier() {
+ return "org.eclipse.ltk.core.refactoring.copyProjectProcessor"; //$NON-NLS-1$
+ }
+
+ @Override
+ public String getProcessorName() {
+ return RefactoringCoreMessages.CopyProjectProcessor_name;
+ }
+
+ @Override
+ public boolean isApplicable() throws CoreException {
+ if (fProject == null)
+ return false;
+ if (!fProject.exists())
+ return false;
+ if (!fProject.isAccessible())
+ return false;
+ return true;
+ }
+
+ @Override
+ public RefactoringParticipant[] loadParticipants(RefactoringStatus status, SharableParticipants sharedParticipants) throws CoreException {
+ final String[] affectedNatures= ResourceProcessors.computeAffectedNatures(fProject);
+ final CopyArguments copyArguments= new CopyArguments(fNewLocation.append(fNewName), new ReorgExecutionLog());
+
+ return ParticipantManager.loadCopyParticipants(status, this, fProject, copyArguments, affectedNatures, sharedParticipants);
+ }
+}
\ No newline at end of file
diff --git a/bundles/org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/internal/core/refactoring/resource/CopyProjectRefactoringContribution.java b/bundles/org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/internal/core/refactoring/resource/CopyProjectRefactoringContribution.java
new file mode 100644
index 00000000000..f84bb3fa7b7
--- /dev/null
+++ b/bundles/org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/internal/core/refactoring/resource/CopyProjectRefactoringContribution.java
@@ -0,0 +1,95 @@
+/*******************************************************************************
+ * Copyright (c) 2024 Vector Informatik GmbH 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
+ *
+ * Contributors:
+ * Vector Informatik GmbH - initial implementation
+ *******************************************************************************/
+package org.eclipse.ltk.internal.core.refactoring.resource;
+
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.core.runtime.IPath;
+
+import org.eclipse.ltk.core.refactoring.RefactoringContribution;
+import org.eclipse.ltk.core.refactoring.RefactoringDescriptor;
+import org.eclipse.ltk.core.refactoring.resource.CopyProjectDescriptor;
+
+/**
+ * @since 3.15
+ */
+public class CopyProjectRefactoringContribution extends RefactoringContribution {
+
+ /**
+ * Key used for the new resource name
+ */
+ private static final String ATTRIBUTE_NAME= "name"; //$NON-NLS-1$
+
+ /**
+ * Key used for the new resource destination
+ */
+ private static final String ATTRIBUTE_DESTINATION= "destination"; //$NON-NLS-1$
+
+ /**
+ * Key prefix used for the path of the project to copy
+ */
+ private static final String ATTRIBUTE_ELEMENT= "element"; //$NON-NLS-1$
+
+ @Override
+ public Map retrieveArgumentMap(RefactoringDescriptor descriptor) {
+ if (descriptor instanceof CopyProjectDescriptor copyDesc) {
+ HashMap map= new HashMap<>();
+ IPath resources= copyDesc.getSourcePath();
+ String project= copyDesc.getProject();
+ map.put(ATTRIBUTE_ELEMENT, ResourceProcessors.resourcePathToHandle(project, resources));
+ map.put(ATTRIBUTE_NAME, copyDesc.getNewName());
+ IPath destinationPath= copyDesc.getNewLocation();
+ map.put(ATTRIBUTE_DESTINATION, ResourceProcessors.resourcePathToHandle(descriptor.getProject(), destinationPath));
+
+ return map;
+ }
+ return Collections.emptyMap();
+ }
+
+ @Override
+ public RefactoringDescriptor createDescriptor() {
+ return new CopyProjectDescriptor();
+ }
+
+ @Override
+ public RefactoringDescriptor createDescriptor(String id, String project, String description, String comment, Map arguments, int flags) throws IllegalArgumentException {
+ String pathString= arguments.get(ATTRIBUTE_ELEMENT);
+ String newName= arguments.get(ATTRIBUTE_NAME);
+
+ String destination= arguments.get(ATTRIBUTE_DESTINATION);
+ if (destination == null) {
+ throw new IllegalArgumentException("Can not restore CopyProjectDescriptor from map, destination missing"); //$NON-NLS-1$
+ }
+
+ IPath resourcePath= ResourceProcessors.handleToResourcePath(project, pathString);
+ IPath destPath= ResourceProcessors.handleToResourcePath(project, destination);
+
+ if (resourcePath != null && newName != null) {
+ CopyProjectDescriptor descriptor= new CopyProjectDescriptor();
+ descriptor.setProject(project);
+ descriptor.setDescription(description);
+ descriptor.setComment(comment);
+ descriptor.setFlags(flags);
+ descriptor.setResourcePath(resourcePath);
+ descriptor.setNewName(newName);
+ descriptor.setNewLocation(destPath);
+ descriptor.setResourcePath(resourcePath);
+
+ return descriptor;
+ }
+ throw new IllegalArgumentException("Can not restore CopyProjectDescriptor from map"); //$NON-NLS-1$
+ }
+}
diff --git a/bundles/org.eclipse.ltk.ui.refactoring/META-INF/MANIFEST.MF b/bundles/org.eclipse.ltk.ui.refactoring/META-INF/MANIFEST.MF
index 9ef5f57cac3..7b5249d26a2 100644
--- a/bundles/org.eclipse.ltk.ui.refactoring/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.ltk.ui.refactoring/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@ Automatic-Module-Name: org.eclipse.ltk.ui.refactoring
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.ltk.ui.refactoring; singleton:=true
-Bundle-Version: 3.13.400.qualifier
+Bundle-Version: 3.13.500.qualifier
Bundle-Activator: org.eclipse.ltk.internal.ui.refactoring.RefactoringUIPlugin
Bundle-ActivationPolicy: lazy
Bundle-Vendor: %providerName
diff --git a/bundles/org.eclipse.ltk.ui.refactoring/plugin.xml b/bundles/org.eclipse.ltk.ui.refactoring/plugin.xml
index 5223d470c3e..e4acec4f2a7 100644
--- a/bundles/org.eclipse.ltk.ui.refactoring/plugin.xml
+++ b/bundles/org.eclipse.ltk.ui.refactoring/plugin.xml
@@ -132,5 +132,21 @@
optional="true">
+
+
+
+
+
+
\ No newline at end of file
diff --git a/bundles/org.eclipse.ltk.ui.refactoring/src/org/eclipse/ltk/internal/ui/refactoring/PreviewWizardPage.java b/bundles/org.eclipse.ltk.ui.refactoring/src/org/eclipse/ltk/internal/ui/refactoring/PreviewWizardPage.java
index d0b5207371e..82c996e9d9d 100644
--- a/bundles/org.eclipse.ltk.ui.refactoring/src/org/eclipse/ltk/internal/ui/refactoring/PreviewWizardPage.java
+++ b/bundles/org.eclipse.ltk.ui.refactoring/src/org/eclipse/ltk/internal/ui/refactoring/PreviewWizardPage.java
@@ -13,6 +13,7 @@
*******************************************************************************/
package org.eclipse.ltk.internal.ui.refactoring;
+import java.lang.reflect.InvocationTargetException;
import java.text.Collator;
import java.text.MessageFormat;
import java.util.ArrayList;
@@ -29,6 +30,8 @@
import org.eclipse.swt.accessibility.AccessibleEvent;
import org.eclipse.swt.custom.BusyIndicator;
import org.eclipse.swt.custom.SashForm;
+import org.eclipse.swt.events.MouseEvent;
+import org.eclipse.swt.events.MouseListener;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.layout.GridData;
@@ -43,31 +46,45 @@
import org.eclipse.swt.widgets.ToolItem;
import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.ActionContributionItem;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.action.IMenuCreator;
+import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.action.Separator;
import org.eclipse.jface.action.ToolBarManager;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.dialogs.IDialogSettings;
import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.operation.IRunnableContext;
+import org.eclipse.jface.operation.IRunnableWithProgress;
import org.eclipse.jface.viewers.CheckStateChangedEvent;
import org.eclipse.jface.viewers.ICheckStateListener;
import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.ISelectionProvider;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.jface.viewers.ViewerComparator;
+import org.eclipse.jface.wizard.IWizardContainer;
+import org.eclipse.ui.IActionBars;
+import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.part.PageBook;
+import org.eclipse.ui.services.IServiceLocator;
+import org.eclipse.compare.CompareConfiguration;
import org.eclipse.compare.CompareUI;
+import org.eclipse.compare.ICompareContainer;
+import org.eclipse.compare.ICompareNavigator;
+import org.eclipse.compare.structuremergeviewer.ICompareInput;
+import org.eclipse.compare.structuremergeviewer.ICompareInputChangeListener;
import org.eclipse.ltk.core.refactoring.Change;
import org.eclipse.ltk.core.refactoring.CompositeChange;
@@ -461,7 +478,7 @@ public void getName(AccessibleEvent e) {
fTreeViewer.setContentProvider(createTreeContentProvider());
fTreeViewer.setLabelProvider(createTreeLabelProvider());
fTreeViewer.setComparator(createTreeComparator());
- fTreeViewer.addSelectionChangedListener(createSelectionChangedListener());
+ fTreeViewer.addSelectionChangedListener(createSelectionChangedListener(fTreeViewer));
fTreeViewer.addCheckStateListener(createCheckStateListener());
fTreeViewerPane.setContent(fTreeViewer.getControl());
fTreeViewer.getControl().getAccessible().addAccessibleListener(new AccessibleAdapter() {
@@ -596,14 +613,47 @@ private boolean isChild(PreviewNode element, PreviewNode child) {
};
}
- private ISelectionChangedListener createSelectionChangedListener() {
+ private ISelectionChangedListener createSelectionChangedListener(ChangeElementTreeViewer treeViewer) {
+ Runnable[] runOnMouseUp=new Runnable[] {null};
+ boolean[] mouseDownPressed = new boolean[] {false};
+ treeViewer.getTree().addMouseListener(new MouseListener() {
+
+ @Override
+ public void mouseUp(MouseEvent e) {
+ mouseDownPressed[0] = false;
+ if (runOnMouseUp[0] != null) {
+ runOnMouseUp[0].run();
+ runOnMouseUp[0] = null;
+ }
+ }
+
+ @Override
+ public void mouseDown(MouseEvent e) {
+ mouseDownPressed[0] = true;
+ }
+
+ @Override
+ public void mouseDoubleClick(MouseEvent e) {
+ }
+ });
return event -> {
IStructuredSelection sel= (IStructuredSelection) event.getSelection();
if (sel.size() == 1) {
PreviewNode newSelection= (PreviewNode)sel.getFirstElement();
if (newSelection != fCurrentSelection) {
fCurrentSelection= newSelection;
- showPreview(newSelection);
+ Runnable r = new Runnable() {
+
+ @Override
+ public void run() {
+ showPreview(newSelection);
+ }
+ };
+ if (mouseDownPressed[0]) {
+ runOnMouseUp[0] = r;
+ }else {
+ r.run();
+ }
}
} else {
showPreview(null);
@@ -622,6 +672,13 @@ private void showPreview(PreviewNode element) {
if (descriptor != null) {
newViewer= descriptor.createViewer();
newViewer.createControl(fPreviewContainer);
+ IWizardContainer container = getContainer();
+ if (container != null) {
+ if (newViewer.getControl() instanceof IAdaptable adaptable) {
+ CompareConfiguration config = adaptable.getAdapter(CompareConfiguration.class);
+ config.setContainer(new WizardCompareContainer(container));
+ }
+ }
} else {
newViewer= fNullPreviewer;
}
@@ -761,4 +818,70 @@ private void setHideDerived(boolean hide) {
public Change getChange() {
return fChange;
}
+
+ private static final class WizardCompareContainer implements ICompareContainer {
+
+ private IRunnableContext context;
+
+ public WizardCompareContainer(IRunnableContext context) {
+ this.context=context;
+ }
+
+ @Override
+ public void setStatusMessage(String message) {
+ }
+
+ @Override
+ public void addCompareInputChangeListener(ICompareInput input,
+ ICompareInputChangeListener listener) {
+ input.addCompareInputChangeListener(listener);
+ }
+
+ @Override
+ public void removeCompareInputChangeListener(ICompareInput input,
+ ICompareInputChangeListener listener) {
+ input.removeCompareInputChangeListener(listener);
+ }
+
+ @Override
+ public void registerContextMenu(MenuManager menu,
+ ISelectionProvider selectionProvider) {
+ }
+
+ @Override
+ public IServiceLocator getServiceLocator() {
+ return null;
+ }
+
+ @Override
+ public IActionBars getActionBars() {
+ return null;
+ }
+
+ @Override
+ public void run(boolean fork, boolean cancelable,
+ IRunnableWithProgress runnable)
+ throws InvocationTargetException, InterruptedException {
+ context.run(fork, cancelable, runnable);
+ }
+
+ @Override
+ public ICompareNavigator getNavigator() {
+ return null;
+ }
+
+ @Override
+ public synchronized void runAsynchronously(IRunnableWithProgress runnable) {
+ try {
+ context.run(true, false, runnable);
+ } catch (InvocationTargetException | InterruptedException e) {
+ RefactoringUIPlugin.log(e);
+ }
+ }
+
+ @Override
+ public IWorkbenchPart getWorkbenchPart() {
+ return null;
+ }
+ }
}
diff --git a/bundles/org.eclipse.ltk.ui.refactoring/src/org/eclipse/ltk/internal/ui/refactoring/TextEditChangePreviewViewer.java b/bundles/org.eclipse.ltk.ui.refactoring/src/org/eclipse/ltk/internal/ui/refactoring/TextEditChangePreviewViewer.java
index 060065465cf..3c3fd6c1fd2 100644
--- a/bundles/org.eclipse.ltk.ui.refactoring/src/org/eclipse/ltk/internal/ui/refactoring/TextEditChangePreviewViewer.java
+++ b/bundles/org.eclipse.ltk.ui.refactoring/src/org/eclipse/ltk/internal/ui/refactoring/TextEditChangePreviewViewer.java
@@ -118,6 +118,14 @@ public void setText(String text) {
current.dispose();
}
}
+ @SuppressWarnings("unchecked")
+ @Override
+ public T getAdapter(Class adapter) {
+ if (CompareConfiguration.class.equals(adapter)) {
+ return (T) fCompareConfiguration;
+ }
+ return super.getAdapter(adapter);
+ }
}
private static class CompareElement implements ITypedElement, IEncodedStreamContentAccessor, IResourceProvider {
diff --git a/bundles/org.eclipse.ltk.ui.refactoring/src/org/eclipse/ltk/internal/ui/refactoring/actions/CopyProjectHandler.java b/bundles/org.eclipse.ltk.ui.refactoring/src/org/eclipse/ltk/internal/ui/refactoring/actions/CopyProjectHandler.java
new file mode 100644
index 00000000000..dcab4441a21
--- /dev/null
+++ b/bundles/org.eclipse.ltk.ui.refactoring/src/org/eclipse/ltk/internal/ui/refactoring/actions/CopyProjectHandler.java
@@ -0,0 +1,88 @@
+/*******************************************************************************
+ * Copyright (c) 2024 Vector Informatik GmbH 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
+ *
+ * Contributors:
+ * Vector Informatik GmbH - initial implementation
+ *******************************************************************************/
+package org.eclipse.ltk.internal.ui.refactoring.actions;
+
+
+import java.util.Arrays;
+import java.util.List;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.NullProgressMonitor;
+
+import org.eclipse.core.resources.IProject;
+
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+
+import org.eclipse.ui.handlers.HandlerUtil;
+
+import org.eclipse.ltk.core.refactoring.CheckConditionsOperation;
+import org.eclipse.ltk.core.refactoring.CreateChangeOperation;
+import org.eclipse.ltk.core.refactoring.PerformChangeOperation;
+import org.eclipse.ltk.core.refactoring.RefactoringCore;
+import org.eclipse.ltk.core.refactoring.RefactoringStatus;
+import org.eclipse.ltk.core.refactoring.participants.CopyRefactoring;
+import org.eclipse.ltk.internal.core.refactoring.resource.CopyProjectProcessor;
+
+public class CopyProjectHandler extends AbstractResourcesHandler {
+
+ private static final String LTK_COPY_PROJECT_COMMAND_NEWNAME_KEY = "org.eclipse.ltk.ui.refactoring.commands.copyProject.newName.parameter.key"; //$NON-NLS-1$
+ private static final String LTK_COPY_PROJECT_COMMAND_NEWLOCATION_KEY = "org.eclipse.ltk.ui.refactoring.commands.copyProject.newLocation.parameter.key"; //$NON-NLS-1$
+
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+
+
+ Object newNameValue= HandlerUtil.getVariable(event, LTK_COPY_PROJECT_COMMAND_NEWNAME_KEY);
+ Object newLocationValue= HandlerUtil.getVariable(event, LTK_COPY_PROJECT_COMMAND_NEWLOCATION_KEY);
+ ISelection sel= HandlerUtil.getCurrentSelection(event);
+
+ String newName= null;
+ if (newNameValue instanceof String) {
+ newName= (String) newNameValue;
+ }
+
+ IPath newLocation= null;
+ if (newLocationValue instanceof IPath) {
+ newLocation= (IPath) newLocationValue;
+ }
+
+ if (sel instanceof IStructuredSelection selection) {
+ List resources= Arrays.stream(getSelectedResources(selection))
+ .filter(IProject.class::isInstance)
+ .map(IProject.class::cast)
+ .toList();
+ if (resources.size() == 1) {
+
+ CopyRefactoring copyRefactoring= new CopyRefactoring(new CopyProjectProcessor(resources.get(0), newName, newLocation));
+ try {
+ CreateChangeOperation create= new CreateChangeOperation(
+ new CheckConditionsOperation(copyRefactoring, CheckConditionsOperation.FINAL_CONDITIONS),
+ RefactoringStatus.FATAL);
+
+ PerformChangeOperation perform= new PerformChangeOperation(create);
+ perform.setUndoManager(RefactoringCore.getUndoManager(), copyRefactoring.getName());
+
+ perform.run(new NullProgressMonitor());
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ }
+ return true;
+ }
+}
diff --git a/bundles/org.eclipse.search.core/META-INF/MANIFEST.MF b/bundles/org.eclipse.search.core/META-INF/MANIFEST.MF
index 8b5a65960b0..b7ae62f251e 100644
--- a/bundles/org.eclipse.search.core/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.search.core/META-INF/MANIFEST.MF
@@ -12,7 +12,7 @@ Export-Package: org.eclipse.search.core.text,
org.eclipse.search.internal.core.text;x-friends:="org.eclipse.search,org.eclipse.search.tests"
Require-Bundle:
org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)",
- org.eclipse.core.resources;bundle-version="[3.14.0,4.0.0)",
+ org.eclipse.core.resources;bundle-version="[3.21.0,4.0.0)",
org.eclipse.core.filesystem;bundle-version="[1.3.0,2.0.0)",
org.eclipse.core.filebuffers;bundle-version="[3.5.0,4.0.0)",
org.eclipse.ltk.core.refactoring;bundle-version="[3.5.0,4.0.0)",
diff --git a/bundles/org.eclipse.search.core/search/org/eclipse/search/internal/core/DirtyFileSearchParticipantServiceTracker.java b/bundles/org.eclipse.search.core/search/org/eclipse/search/internal/core/DirtyFileSearchParticipantServiceTracker.java
index 613b2d1b017..f256e5c2bed 100644
--- a/bundles/org.eclipse.search.core/search/org/eclipse/search/internal/core/DirtyFileSearchParticipantServiceTracker.java
+++ b/bundles/org.eclipse.search.core/search/org/eclipse/search/internal/core/DirtyFileSearchParticipantServiceTracker.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2023 Red Hat Inc and others.
+ * Copyright (c) 2023, 2024 Red Hat Inc and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -16,57 +16,38 @@
import java.text.MessageFormat;
import java.util.Arrays;
import java.util.Collections;
-import java.util.List;
-import java.util.Map;
+import java.util.Comparator;
+import java.util.Optional;
import org.osgi.framework.BundleContext;
import org.osgi.framework.InvalidSyntaxException;
import org.osgi.framework.ServiceReference;
import org.osgi.util.tracker.ServiceTracker;
-import org.eclipse.core.resources.IFile;
-
-import org.eclipse.jface.text.IDocument;
-
import org.eclipse.search.internal.core.text.DirtyFileProvider;
-public class DirtyFileSearchParticipantServiceTracker
- extends ServiceTracker {
+public class DirtyFileSearchParticipantServiceTracker extends ServiceTracker {
private static final String PROPERTY_WEIGHT = "weight"; //$NON-NLS-1$
- public DirtyFileSearchParticipantServiceTracker(BundleContext context)
- throws InvalidSyntaxException {
+
+ public DirtyFileSearchParticipantServiceTracker(BundleContext context) throws InvalidSyntaxException {
super(context, context.createFilter(MessageFormat.format("(&(objectClass={0}))", //$NON-NLS-1$
DirtyFileProvider.class.getCanonicalName())), null);
}
+ private final static Comparator> BY_WEIGHT = Comparator.comparing(
+ o -> o.getProperty(PROPERTY_WEIGHT), //
+ Comparator.nullsFirst(Comparator.comparing(Integer.class::isInstance) // false[] allRefs = getServiceReferences();
if (allRefs != null && allRefs.length > 0) {
- List> l = Arrays.asList(allRefs);
- Collections.sort(l, (o1, o2) -> {
- Object o1Weight = o1.getProperty(PROPERTY_WEIGHT);
- Object o2Weight = o2.getProperty(PROPERTY_WEIGHT);
- int o1Val = o1Weight == null ? 0
- : o1Weight instanceof Integer ? ((Integer) o1Weight).intValue() : 0;
- int o2Val = o2Weight == null ? 0
- : o2Weight instanceof Integer ? ((Integer) o2Weight).intValue() : 0;
- return o2Val - o1Val;
- });
- if (l.size() > 0) {
- return getService(l.get(0));
+ Optional> reference = Arrays.stream(allRefs).max(BY_WEIGHT);
+ if (reference.isPresent()) {
+ return getService(reference.get());
}
}
- return new DirtyFileProvider() {
- @SuppressWarnings("unchecked")
- @Override
- public Map dirtyFiles() {
- return Collections.EMPTY_MAP;
- }
- };
- }
-
- public void dispose() {
- close();
+ return Collections::emptyMap;
}
}
diff --git a/bundles/org.eclipse.search/.project b/bundles/org.eclipse.search/.project
index 35821137d43..88541630343 100644
--- a/bundles/org.eclipse.search/.project
+++ b/bundles/org.eclipse.search/.project
@@ -25,6 +25,11 @@
+
+ org.eclipse.pde.ds.core.builder
+
+
+ org.eclipse.jdt.core.javanature
diff --git a/bundles/org.eclipse.search/.settings/org.eclipse.pde.ds.annotations.prefs b/bundles/org.eclipse.search/.settings/org.eclipse.pde.ds.annotations.prefs
new file mode 100644
index 00000000000..5faf08b7d5c
--- /dev/null
+++ b/bundles/org.eclipse.search/.settings/org.eclipse.pde.ds.annotations.prefs
@@ -0,0 +1,7 @@
+dsVersion=V1_4
+eclipse.preferences.version=1
+enabled=true
+generateBundleActivationPolicyLazy=true
+path=OSGI-INF
+validationErrorLevel=error
+validationErrorLevel.missingImplicitUnbindMethod=error
diff --git a/bundles/org.eclipse.search/META-INF/MANIFEST.MF b/bundles/org.eclipse.search/META-INF/MANIFEST.MF
index 1f073adf212..831eb9da3a8 100644
--- a/bundles/org.eclipse.search/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.search/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.search; singleton:=true
-Bundle-Version: 3.17.0.qualifier
+Bundle-Version: 3.17.100.qualifier
Bundle-Activator: org.eclipse.search.internal.ui.SearchPlugin
Bundle-ActivationPolicy: lazy
Bundle-Vendor: %providerName
@@ -32,4 +32,4 @@ Require-Bundle:
org.eclipse.search.core;bundle-version="[3.16.0,4.0.0)";visibility:=reexport
Bundle-RequiredExecutionEnvironment: JavaSE-17
Automatic-Module-Name: org.eclipse.search
-Service-Component: OSGI-INF/*.xml
+Service-Component: OSGI-INF/org.eclipse.search.internal.ui.text.DirtyFileSearchParticipant.xml
diff --git a/bundles/org.eclipse.search/OSGI-INF/dirtyEditorService.xml b/bundles/org.eclipse.search/OSGI-INF/dirtyEditorService.xml
deleted file mode 100644
index b7b26d54aa6..00000000000
--- a/bundles/org.eclipse.search/OSGI-INF/dirtyEditorService.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/bundles/org.eclipse.search/icons/full/elcl16/pin_view.png b/bundles/org.eclipse.search/icons/full/elcl16/pin_view.png
index e72ceafa940..d363e36e1fc 100644
Binary files a/bundles/org.eclipse.search/icons/full/elcl16/pin_view.png and b/bundles/org.eclipse.search/icons/full/elcl16/pin_view.png differ
diff --git a/bundles/org.eclipse.search/icons/full/elcl16/pin_view@2x.png b/bundles/org.eclipse.search/icons/full/elcl16/pin_view@2x.png
index 5d446feaf12..91346092438 100644
Binary files a/bundles/org.eclipse.search/icons/full/elcl16/pin_view@2x.png and b/bundles/org.eclipse.search/icons/full/elcl16/pin_view@2x.png differ
diff --git a/bundles/org.eclipse.search/search/org/eclipse/search/internal/ui/text/DirtyFileSearchParticipant.java b/bundles/org.eclipse.search/search/org/eclipse/search/internal/ui/text/DirtyFileSearchParticipant.java
index b7e293f90b2..9d5eea4ff7b 100644
--- a/bundles/org.eclipse.search/search/org/eclipse/search/internal/ui/text/DirtyFileSearchParticipant.java
+++ b/bundles/org.eclipse.search/search/org/eclipse/search/internal/ui/text/DirtyFileSearchParticipant.java
@@ -16,6 +16,8 @@
import java.util.HashMap;
import java.util.Map;
+import org.osgi.service.component.annotations.Component;
+
import org.eclipse.core.resources.IFile;
import org.eclipse.core.filebuffers.FileBuffers;
@@ -38,6 +40,7 @@
import org.eclipse.search.internal.core.text.DirtyFileProvider;
+@Component(service = DirtyFileProvider.class, immediate = false, property = { "weight:Integer=100" })
public class DirtyFileSearchParticipant implements DirtyFileProvider {
@Override
diff --git a/bundles/org.eclipse.search/search/org/eclipse/search/internal/ui/text/TextSearchPage.java b/bundles/org.eclipse.search/search/org/eclipse/search/internal/ui/text/TextSearchPage.java
index 194abb008ce..8ea2e10b37f 100644
--- a/bundles/org.eclipse.search/search/org/eclipse/search/internal/ui/text/TextSearchPage.java
+++ b/bundles/org.eclipse.search/search/org/eclipse/search/internal/ui/text/TextSearchPage.java
@@ -54,7 +54,7 @@
import org.eclipse.jface.dialogs.ErrorDialog;
import org.eclipse.jface.dialogs.IDialogSettings;
import org.eclipse.jface.fieldassist.ComboContentAdapter;
-import org.eclipse.jface.resource.JFaceColors;
+import org.eclipse.jface.fieldassist.ControlDecoration;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.text.FindReplaceDocumentAdapter;
@@ -68,6 +68,7 @@
import org.eclipse.ui.IWorkingSetManager;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.fieldassist.ContentAssistCommandAdapter;
+import org.eclipse.ui.internal.SearchDecoration;
import org.eclipse.ui.texteditor.ITextEditorActionDefinitionIds;
@@ -140,8 +141,7 @@ public class TextSearchPage extends DialogPage implements ISearchPage, IReplaceP
*/
private String[] fPreviousExtensions;
private Label fFileNamePatternDescription;
-
-
+ private ControlDecoration fPatternDecoration;
private static class SearchPatternData {
public final boolean isCaseSensitive;
public final boolean isRegExSearch;
@@ -450,6 +450,7 @@ public void setVisible(boolean visible) {
}
final void updateOKStatus() {
+ fPatternDecoration.hide();
boolean regexStatus= validateRegex();
getContainer().setPerformActionEnabled(regexStatus);
}
@@ -479,24 +480,19 @@ public void createControl(Composite parent) {
setControl(result);
Dialog.applyDialogFont(result);
PlatformUI.getWorkbench().getHelpSystem().setHelp(result, ISearchHelpContextIds.TEXT_SEARCH_PAGE);
-}
+ }
private boolean validateRegex() {
+
if (fIsRegExCheckbox.getSelection()) {
try {
PatternConstructor.createPattern(fPattern.getText(), fIsCaseSensitive, true);
} catch (PatternSyntaxException e) {
- String locMessage= e.getLocalizedMessage();
- int i= 0;
- while (i < locMessage.length() && "\n\r".indexOf(locMessage.charAt(i)) == -1) { //$NON-NLS-1$
- i++;
- }
- statusMessage(true, locMessage.substring(0, i)); // only take first line
+ SearchDecoration.validateRegex(fPattern.getText(), fPatternDecoration);
return false;
}
- statusMessage(false, ""); //$NON-NLS-1$
} else {
- statusMessage(false, SearchMessages.SearchPage_containingText_hint);
+ fPatternDecoration.hide();
}
return true;
}
@@ -512,6 +508,8 @@ private void addTextPatternControls(Composite group) {
// Pattern combo
fPattern= new Combo(group, SWT.SINGLE | SWT.BORDER);
+ fPatternDecoration = new ControlDecoration(fPattern, SWT.BOTTOM | SWT.LEFT);
+
// Not done here to prevent page from resizing
// fPattern.setItems(getPreviousSearchPatterns());
fPattern.addSelectionListener(new SelectionAdapter() {
@@ -561,7 +559,6 @@ public void widgetSelected(SelectionEvent e) {
public void widgetSelected(SelectionEvent e) {
fIsRegExSearch= fIsRegExCheckbox.getSelection();
updateOKStatus();
-
writeConfiguration();
fPatterFieldContentAssist.setEnabled(fIsRegExSearch);
fIsWholeWordCheckbox.setEnabled(!fIsRegExSearch);
@@ -860,15 +857,4 @@ private void writeConfiguration() {
}
- private void statusMessage(boolean error, String message) {
- fStatusLabel.setText(message);
- if (error) {
- fStatusLabel.setForeground(JFaceColors.getErrorText(fStatusLabel.getDisplay()));
- }
- else {
- // use same color as another label to respect styling
- fStatusLabel.setForeground(fFileNamePatternDescription.getForeground());
- }
- }
-
}
diff --git a/bundles/org.eclipse.text.quicksearch/.classpath b/bundles/org.eclipse.text.quicksearch/.classpath
index ddb715b8501..49344076a5e 100644
--- a/bundles/org.eclipse.text.quicksearch/.classpath
+++ b/bundles/org.eclipse.text.quicksearch/.classpath
@@ -1,6 +1,6 @@
-
+
diff --git a/bundles/org.eclipse.text.quicksearch/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.text.quicksearch/.settings/org.eclipse.jdt.core.prefs
index c2a64e270b0..25d9e165e38 100644
--- a/bundles/org.eclipse.text.quicksearch/.settings/org.eclipse.jdt.core.prefs
+++ b/bundles/org.eclipse.text.quicksearch/.settings/org.eclipse.jdt.core.prefs
@@ -10,9 +10,9 @@ 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=do not generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=17
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=21
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=17
+org.eclipse.jdt.core.compiler.compliance=21
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -112,4 +112,4 @@ 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.compiler.source=21
diff --git a/bundles/org.eclipse.text.quicksearch/META-INF/MANIFEST.MF b/bundles/org.eclipse.text.quicksearch/META-INF/MANIFEST.MF
index d656db96eda..ac162532215 100644
--- a/bundles/org.eclipse.text.quicksearch/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.text.quicksearch/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.text.quicksearch;singleton:=true
-Bundle-Version: 1.2.500.qualifier
+Bundle-Version: 1.3.0.qualifier
Bundle-Activator: org.eclipse.text.quicksearch.internal.ui.QuickSearchActivator
Require-Bundle: org.eclipse.ui;bundle-version="[3.113.0,4.0.0)",
org.eclipse.core.resources;bundle-version="[3.13.0,4.0.0)",
@@ -14,7 +14,7 @@ Require-Bundle: org.eclipse.ui;bundle-version="[3.113.0,4.0.0)",
org.eclipse.jface.text;bundle-version="[3.15.0,4.0.0)",
org.apache.ant;bundle-version="[1.10.0,2.0.0)"
Bundle-ActivationPolicy: lazy
-Bundle-RequiredExecutionEnvironment: JavaSE-17
+Bundle-RequiredExecutionEnvironment: JavaSE-21
Bundle-Vendor: %providerName
Bundle-Localization: plugin
Export-Package: org.eclipse.text.quicksearch.internal.core;x-internal:=true,
diff --git a/bundles/org.eclipse.text.quicksearch/src/org/eclipse/text/quicksearch/internal/ui/QuickSearchDialog.java b/bundles/org.eclipse.text.quicksearch/src/org/eclipse/text/quicksearch/internal/ui/QuickSearchDialog.java
index a2ddfbbef5b..532d255c4da 100644
--- a/bundles/org.eclipse.text.quicksearch/src/org/eclipse/text/quicksearch/internal/ui/QuickSearchDialog.java
+++ b/bundles/org.eclipse.text.quicksearch/src/org/eclipse/text/quicksearch/internal/ui/QuickSearchDialog.java
@@ -25,6 +25,8 @@
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
+import java.util.Deque;
+import java.util.LinkedList;
import java.util.List;
import org.eclipse.core.commands.AbstractHandler;
@@ -83,6 +85,7 @@
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.Display;
@@ -296,13 +299,17 @@ public void update(ViewerCell cell) {
private static final String DIALOG_SASH_WEIGHTS = "SASH_WEIGHTS"; //$NON-NLS-1$
private static final String DIALOG_LAST_QUERY = "LAST_QUERY"; //$NON-NLS-1$
- private static final String DIALOG_PATH_FILTER = "PATH_FILTER"; //$NON-NLS-1$
private static final String CASE_SENSITIVE = "CASE_SENSITIVE"; //$NON-NLS-1$
private static final boolean CASE_SENSITIVE_DEFAULT = true;
private static final String KEEP_OPEN = "KEEP_OPEN"; //$NON-NLS-1$
private static final boolean KEEP_OPEN_DEFAULT = false;
+ private final Deque filterHistory = new LinkedList<>();
+
+ private static final int FILTER_HISTORY_SIZE = 5;
+
+ private static final String FILTER_HISTORY = "FILTER_HISTORY"; //$NON-NLS-1$
/**
* Represents an empty selection in the pattern input field (used only for
* initial pattern).
@@ -369,7 +376,7 @@ public void update(ViewerCell cell) {
private Label headerLabel;
private IWorkbenchWindow window;
- private Text searchIn;
+ private Combo searchIn;
private Label listLabel;
/**
@@ -417,8 +424,16 @@ protected void restoreDialog(IDialogSettings settings) {
pattern.setText(lastSearch);
pattern.selectAll();
}
- if (settings.get(DIALOG_PATH_FILTER)!=null) {
- String filter = settings.get(DIALOG_PATH_FILTER);
+
+ // Retrieve the last locations where the user searched (works across restarts)
+ filterHistory.addAll(List.of(settings.getArray(FILTER_HISTORY)));
+ if (!filterHistory.isEmpty()) {
+ String filter = filterHistory.getFirst();
+
+ // Filter out blanks
+ filterHistory.removeIf(String::isBlank);
+
+ searchIn.setItems(filterHistory.toArray(String[]::new));
searchIn.setText(filter);
}
@@ -452,6 +467,15 @@ protected void restoreDialog(IDialogSettings settings) {
}
}
+ private void inputNewSearchFilter(String searchIn) {
+ filterHistory.remove(searchIn);
+ filterHistory.addFirst(searchIn);
+
+ if (filterHistory.size() > FILTER_HISTORY_SIZE) {
+ filterHistory.removeLast();
+ }
+ }
+
private class ToggleKeepOpenAction extends Action {
public ToggleKeepOpenAction(IDialogSettings settings) {
super(
@@ -533,7 +557,10 @@ public boolean close() {
protected void storeDialog(IDialogSettings settings) {
String currentSearch = pattern.getText();
settings.put(DIALOG_LAST_QUERY, currentSearch);
- settings.put(DIALOG_PATH_FILTER, searchIn.getText());
+
+ inputNewSearchFilter(searchIn.getText());
+ settings.put(FILTER_HISTORY, filterHistory.toArray(String[]::new));
+
if (toggleCaseSensitiveAction!=null) {
settings.put(CASE_SENSITIVE, toggleCaseSensitiveAction.isChecked());
}
@@ -755,7 +782,7 @@ public void getName(AccessibleEvent e) {
Label searchInLabel = new Label(searchInComposite, SWT.NONE);
searchInLabel.setText(Messages.QuickSearchDialog_In);
GridDataFactory.swtDefaults().indent(5, 0).applyTo(searchInLabel);
- searchIn = new Text(searchInComposite, SWT.SINGLE | SWT.BORDER | SWT.ICON_CANCEL);
+ searchIn = new Combo(searchInComposite, SWT.SINGLE | SWT.BORDER | SWT.ICON_CANCEL);
searchIn.setToolTipText(Messages.QuickSearchDialog_InTooltip);
GridDataFactory.fillDefaults().grab(true, false).indent(5, 0).applyTo(searchIn);
diff --git a/bundles/org.eclipse.text/META-INF/MANIFEST.MF b/bundles/org.eclipse.text/META-INF/MANIFEST.MF
index 3221dbfd40e..4ac93604a36 100644
--- a/bundles/org.eclipse.text/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.text/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.text
-Bundle-Version: 3.14.200.qualifier
+Bundle-Version: 3.14.300.qualifier
Bundle-Vendor: %providerName
Bundle-Localization: plugin
Export-Package:
diff --git a/bundles/org.eclipse.text/forceQualifierUpdate.txt b/bundles/org.eclipse.text/forceQualifierUpdate.txt
index 408eebe6bd3..833a03ae597 100644
--- a/bundles/org.eclipse.text/forceQualifierUpdate.txt
+++ b/bundles/org.eclipse.text/forceQualifierUpdate.txt
@@ -4,4 +4,5 @@ Pick up new signing certificate
https://github.com/eclipse-platform/eclipse.platform.releng.aggregator/issues/1184
https://github.com/eclipse-platform/eclipse.platform.releng.aggregator/issues/1659
https://github.com/eclipse-platform/eclipse.platform.releng.aggregator/issues/1781
-https://github.com/eclipse-platform/eclipse.platform.releng.aggregator/issues/2044
\ No newline at end of file
+https://github.com/eclipse-platform/eclipse.platform.releng.aggregator/issues/2044
+https://github.com/eclipse-platform/eclipse.platform.releng.aggregator/issues/2595
\ No newline at end of file
diff --git a/bundles/org.eclipse.text/src/org/eclipse/jface/text/AbstractDocument.java b/bundles/org.eclipse.text/src/org/eclipse/jface/text/AbstractDocument.java
index b0145aee674..51ac2ec70fc 100644
--- a/bundles/org.eclipse.text/src/org/eclipse/jface/text/AbstractDocument.java
+++ b/bundles/org.eclipse.text/src/org/eclipse/jface/text/AbstractDocument.java
@@ -345,12 +345,12 @@ public void addPosition(String category, Position position) throws BadLocationEx
List list= fPositions.get(category);
if (list == null)
- throw new BadPositionCategoryException();
+ throw new BadPositionCategoryException(category);
list.add(computeIndexInPositionList(list, position.offset), position);
List endPositions= fEndPositions.get(category);
if (endPositions == null)
- throw new BadPositionCategoryException();
+ throw new BadPositionCategoryException(category);
endPositions.add(computeIndexInPositionList(endPositions, position.offset + position.length - 1, false), position);
}
@@ -514,7 +514,7 @@ public int computeIndexInCategory(String category, int offset) throws BadLocatio
List c= fPositions.get(category);
if (c == null)
- throw new BadPositionCategoryException();
+ throw new BadPositionCategoryException(category);
return computeIndexInPositionList(c, offset);
}
@@ -925,7 +925,7 @@ public Position[] getPositions(String category) throws BadPositionCategoryExcept
List c= fPositions.get(category);
if (c == null)
- throw new BadPositionCategoryException();
+ throw new BadPositionCategoryException(category);
Position[] positions= new Position[c.size()];
c.toArray(positions);
@@ -980,12 +980,12 @@ public void removePosition(String category, Position position) throws BadPositio
List c= fPositions.get(category);
if (c == null)
- throw new BadPositionCategoryException();
+ throw new BadPositionCategoryException(category);
removeFromPositionsList(c, position, true);
List endPositions= fEndPositions.get(category);
if (endPositions == null)
- throw new BadPositionCategoryException();
+ throw new BadPositionCategoryException(category);
removeFromPositionsList(endPositions, position, false);
}
@@ -1043,7 +1043,7 @@ public void removePositionCategory(String category) throws BadPositionCategoryEx
return;
if ( !containsPositionCategory(category))
- throw new BadPositionCategoryException();
+ throw new BadPositionCategoryException(category);
fPositions.remove(category);
fEndPositions.remove(category);
@@ -1674,7 +1674,7 @@ private List getStartingPositions(String category, int offset, int len
private List getEndingPositions(String category, int offset, int length) throws BadPositionCategoryException {
List positions= fEndPositions.get(category);
if (positions == null)
- throw new BadPositionCategoryException();
+ throw new BadPositionCategoryException(category);
int indexStart= computeIndexInPositionList(positions, offset, false);
int indexEnd= computeIndexInPositionList(positions, offset + length, false);
diff --git a/bundles/org.eclipse.text/src/org/eclipse/jface/text/FindReplaceDocumentAdapter.java b/bundles/org.eclipse.text/src/org/eclipse/jface/text/FindReplaceDocumentAdapter.java
index 6cbe87da3dc..984800a4f64 100644
--- a/bundles/org.eclipse.text/src/org/eclipse/jface/text/FindReplaceDocumentAdapter.java
+++ b/bundles/org.eclipse.text/src/org/eclipse/jface/text/FindReplaceDocumentAdapter.java
@@ -188,9 +188,6 @@ private IRegion findReplace(final FindReplaceOperationCode operationCode, int st
}
}
- // Set state
- fFindReplaceState= operationCode;
-
if (operationCode == REPLACE || operationCode == REPLACE_FIND_NEXT) {
if (regExSearch) {
Pattern pattern= fFindReplaceMatcher.pattern();
@@ -199,7 +196,10 @@ private IRegion findReplace(final FindReplaceOperationCode operationCode, int st
replaceText= interpretReplaceEscapes(replaceText, prevMatch);
Matcher replaceTextMatcher= pattern.matcher(prevMatch);
replaceText= replaceTextMatcher.replaceFirst(replaceText);
- } catch (IndexOutOfBoundsException ex) {
+ } catch (IndexOutOfBoundsException | IllegalArgumentException ex) {
+ // These exceptions are thrown by Matcher#replaceFirst(), capturing information about
+ // invalid regular expression patterns, such as unfinished character escape sequences
+ // at the end of the pattern
throw new PatternSyntaxException(ex.getLocalizedMessage(), replaceText, -1);
}
}
@@ -214,12 +214,13 @@ private IRegion findReplace(final FindReplaceOperationCode operationCode, int st
}
fDocument.replace(offset, length, replaceText);
-
+ fFindReplaceState= operationCode;
+
if (operationCode == REPLACE) {
return new Region(offset, replaceText.length());
}
}
-
+
if (operationCode != REPLACE) {
try {
if (forwardSearch) {
@@ -230,8 +231,11 @@ private IRegion findReplace(final FindReplaceOperationCode operationCode, int st
else
found= fFindReplaceMatcher.find();
- if (operationCode == REPLACE_FIND_NEXT)
+ if (operationCode == REPLACE_FIND_NEXT) {
fFindReplaceState= FIND_NEXT;
+ } else {
+ fFindReplaceState= operationCode;
+ }
if (found && !fFindReplaceMatcher.group().isEmpty())
return new Region(fFindReplaceMatcher.start(), fFindReplaceMatcher.group().length());
@@ -247,6 +251,7 @@ private IRegion findReplace(final FindReplaceOperationCode operationCode, int st
found= fFindReplaceMatcher.find(index + 1);
}
fFindReplaceMatchOffset= index;
+ fFindReplaceState= operationCode;
if (index > -1) {
// must set matcher to correct position
fFindReplaceMatcher.find(index);
diff --git a/bundles/org.eclipse.ui.editors/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.ui.editors/.settings/org.eclipse.jdt.core.prefs
index 15a581ea23f..72c96cf3d9e 100644
--- a/bundles/org.eclipse.ui.editors/.settings/org.eclipse.jdt.core.prefs
+++ b/bundles/org.eclipse.ui.editors/.settings/org.eclipse.jdt.core.prefs
@@ -150,38 +150,70 @@ 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_arrows_in_switch_on_columns=false
+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_selector_in_method_invocation_on_expression_first_line=true
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_annotations_on_enum_constant=49
+org.eclipse.jdt.core.formatter.alignment_for_annotations_on_field=49
+org.eclipse.jdt.core.formatter.alignment_for_annotations_on_local_variable=49
+org.eclipse.jdt.core.formatter.alignment_for_annotations_on_method=49
+org.eclipse.jdt.core.formatter.alignment_for_annotations_on_package=49
+org.eclipse.jdt.core.formatter.alignment_for_annotations_on_parameter=0
+org.eclipse.jdt.core.formatter.alignment_for_annotations_on_type=49
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_assertion_message=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_conditional_expression=48
-org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
+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_conditional_expression_chain=0
+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_expressions_in_switch_case_with_arrow=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_switch_case_with_colon=16
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_permitted_types_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_record_components=16
+org.eclipse.jdt.core.formatter.alignment_for_relational_operator=0
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_shift_operator=0
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_record_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_switch_case_with_arrow=20
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_annotations=0
+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_last_class_body_declaration=0
org.eclipse.jdt.core.formatter.blank_lines_after_package=1
-org.eclipse.jdt.core.formatter.blank_lines_before_field=1
+org.eclipse.jdt.core.formatter.blank_lines_before_abstract_method=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
@@ -189,32 +221,42 @@ 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_statement_group_in_switch=0
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_block_in_case_after_arrow=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_record_constructor=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_record_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.format_block_comments=false
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=true
org.eclipse.jdt.core.formatter.comment.format_header=false
org.eclipse.jdt.core.formatter.comment.format_html=true
org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true
-org.eclipse.jdt.core.formatter.comment.format_line_comments=false
+org.eclipse.jdt.core.formatter.comment.format_line_comments=true
org.eclipse.jdt.core.formatter.comment.format_source_code=true
-org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true
-org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+org.eclipse.jdt.core.formatter.comment.indent_tag_description=false
org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_between_different_tags=do not insert
org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
-org.eclipse.jdt.core.formatter.comment.line_length=100
+org.eclipse.jdt.core.formatter.comment.javadoc_do_not_separate_block_tags=false
+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
@@ -228,14 +270,16 @@ org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=fals
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_record_header=true
org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
org.eclipse.jdt.core.formatter.indent_empty_lines=false
org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true
+org.eclipse.jdt.core.formatter.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
@@ -245,7 +289,7 @@ 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=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
@@ -260,6 +304,8 @@ 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_arrow_in_switch_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_default=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
@@ -289,13 +335,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arg
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_permitted_types=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_record_components=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_switch_case_expressions=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_not_operator=do not 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
@@ -312,6 +362,7 @@ org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not ins
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_record_declaration=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
@@ -328,7 +379,9 @@ 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=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_case=insert
+org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_default=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
@@ -347,6 +400,7 @@ org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not in
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_record_declaration=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
@@ -373,7 +427,10 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_ar
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_permitted_types=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_record_components=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_switch_case_expressions=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
@@ -391,6 +448,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_
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_record_constructor=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_record_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
@@ -406,6 +465,7 @@ 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_record_declaration=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
@@ -431,28 +491,70 @@ org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_
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_line_comments=false
org.eclipse.jdt.core.formatter.join_lines_in_comments=true
-org.eclipse.jdt.core.formatter.join_wrapped_lines=false
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_annotation_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_anonymous_type_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_code_block_on_one_line=one_line_never
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_enum_constant_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_enum_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_if_then_body_block_on_one_line=one_line_never
org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_lambda_body_block_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_loop_body_block_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_method_body_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_record_constructor_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_record_declaration_on_one_line=one_line_never
+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_getter_setter_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_switch_body_block_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_switch_case_with_arrow_on_one_line=one_line_never
org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.lineSplit=200
-org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=true
-org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=true
+org.eclipse.jdt.core.formatter.keep_type_declaration_on_one_line=one_line_never
+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_after_code_block=0
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_code_block=0
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=3
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_end_of_code_block=0
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_end_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_blank_lines_before_code_block=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_record_declaration=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=false
+org.eclipse.jdt.core.formatter.text_block_indentation=0
+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_assertion_message_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_relational_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_shift_operator=true
org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
+org.eclipse.jdt.core.formatter.wrap_before_switch_case_arrow_operator=false
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/bundles/org.eclipse.ui.editors/.settings/org.eclipse.jdt.ui.prefs b/bundles/org.eclipse.ui.editors/.settings/org.eclipse.jdt.ui.prefs
index ec0e1c727d3..c45d18b1db8 100644
--- a/bundles/org.eclipse.ui.editors/.settings/org.eclipse.jdt.ui.prefs
+++ b/bundles/org.eclipse.ui.editors/.settings/org.eclipse.jdt.ui.prefs
@@ -1,7 +1,7 @@
eclipse.preferences.version=1
editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
-formatter_profile=_JDT UI Code Style Conventions
-formatter_settings_version=12
+formatter_profile=org.eclipse.jdt.ui.default.eclipse_profile
+formatter_settings_version=23
org.eclipse.jdt.ui.exception.name=e
org.eclipse.jdt.ui.gettersetter.use.is=true
org.eclipse.jdt.ui.ignorelowercasenames=true
diff --git a/bundles/org.eclipse.ui.editors/META-INF/MANIFEST.MF b/bundles/org.eclipse.ui.editors/META-INF/MANIFEST.MF
index e3cf47afb07..9a63a5630ff 100644
--- a/bundles/org.eclipse.ui.editors/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.ui.editors/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.ui.editors; singleton:=true
-Bundle-Version: 3.18.100.qualifier
+Bundle-Version: 3.19.100.qualifier
Bundle-Activator: org.eclipse.ui.internal.editors.text.EditorsPlugin
Bundle-ActivationPolicy: lazy
Bundle-Vendor: %providerName
@@ -19,12 +19,12 @@ Export-Package:
Require-Bundle:
org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)",
org.eclipse.core.expressions;bundle-version="[3.9.0,4.0.0)",
- org.eclipse.swt;bundle-version="[3.124.0,4.0.0)",
+ org.eclipse.swt;bundle-version="[3.128.0,4.0.0)",
org.eclipse.ui.ide;bundle-version="[3.21.0,4.0.0)",
org.eclipse.ui;bundle-version="[3.204.0,4.0.0)",
org.eclipse.jface.text;bundle-version="[3.24.0,4.0.0)",
org.eclipse.ui.workbench;bundle-version="[3.130.0,4.0.0)",
- org.eclipse.ui.workbench.texteditor;bundle-version="[3.17.0,4.0.0)",
+ org.eclipse.ui.workbench.texteditor;bundle-version="[3.19.0,4.0.0)",
org.eclipse.core.filebuffers;bundle-version="[3.8.0,4.0.0)";visibility:=reexport,
org.eclipse.core.resources;bundle-version="[3.19.0,4.0.0)",
org.eclipse.core.filesystem;bundle-version="[1.10.0,2.0.0)",
diff --git a/bundles/org.eclipse.ui.editors/build.properties b/bundles/org.eclipse.ui.editors/build.properties
index 0ef8172705b..c9f92ace430 100644
--- a/bundles/org.eclipse.ui.editors/build.properties
+++ b/bundles/org.eclipse.ui.editors/build.properties
@@ -16,7 +16,8 @@ bin.includes = .,\
plugin.properties,\
about.html,\
icons/,\
- META-INF/
+ META-INF/,\
+ css/
src.includes = about.html,\
schema/
diff --git a/bundles/org.eclipse.ui.editors/css/e4-dark_preferencestyle.css b/bundles/org.eclipse.ui.editors/css/e4-dark_preferencestyle.css
new file mode 100644
index 00000000000..cd132d91109
--- /dev/null
+++ b/bundles/org.eclipse.ui.editors/css/e4-dark_preferencestyle.css
@@ -0,0 +1,5 @@
+
+IEclipsePreferences#org-eclipse-ui-workbench:org-eclipse-ui-editors {
+ preferences:
+ 'org.eclipse.ui.editors.inlineAnnotationColor=155,155,155'
+}
diff --git a/bundles/org.eclipse.ui.editors/icons/full/etool16/next_nav.png b/bundles/org.eclipse.ui.editors/icons/full/etool16/next_nav.png
index 49ad8dd3b82..0deb92e7d01 100644
Binary files a/bundles/org.eclipse.ui.editors/icons/full/etool16/next_nav.png and b/bundles/org.eclipse.ui.editors/icons/full/etool16/next_nav.png differ
diff --git a/bundles/org.eclipse.ui.editors/icons/full/etool16/next_nav@2x.png b/bundles/org.eclipse.ui.editors/icons/full/etool16/next_nav@2x.png
index 7c52d45cbb8..62f8e7ad9ac 100644
Binary files a/bundles/org.eclipse.ui.editors/icons/full/etool16/next_nav@2x.png and b/bundles/org.eclipse.ui.editors/icons/full/etool16/next_nav@2x.png differ
diff --git a/bundles/org.eclipse.ui.editors/icons/full/etool16/prev_nav.png b/bundles/org.eclipse.ui.editors/icons/full/etool16/prev_nav.png
index 6917af94f0b..163c8a428ce 100644
Binary files a/bundles/org.eclipse.ui.editors/icons/full/etool16/prev_nav.png and b/bundles/org.eclipse.ui.editors/icons/full/etool16/prev_nav.png differ
diff --git a/bundles/org.eclipse.ui.editors/icons/full/etool16/prev_nav@2x.png b/bundles/org.eclipse.ui.editors/icons/full/etool16/prev_nav@2x.png
index 08824437313..f891945ec5d 100644
Binary files a/bundles/org.eclipse.ui.editors/icons/full/etool16/prev_nav@2x.png and b/bundles/org.eclipse.ui.editors/icons/full/etool16/prev_nav@2x.png differ
diff --git a/bundles/org.eclipse.ui.editors/plugin.properties b/bundles/org.eclipse.ui.editors/plugin.properties
index 5a246191f2b..777af9dbb87 100644
--- a/bundles/org.eclipse.ui.editors/plugin.properties
+++ b/bundles/org.eclipse.ui.editors/plugin.properties
@@ -151,3 +151,7 @@ HyperlinkDetectorsPreferencePage= Hyperlinking
#--- Unused label ---
dummy=
+
+#--- color definition for code mining annotations
+TEXT_EDITOR_CODE_MINING_COLOR= Text editor code mining color
+TEXT_EDITOR_CODE_MINING_COLOR_DESCRIPTION= The default color used for text editor code mining annotations.
diff --git a/bundles/org.eclipse.ui.editors/plugin.xml b/bundles/org.eclipse.ui.editors/plugin.xml
index e69aca3a288..ce60714504a 100644
--- a/bundles/org.eclipse.ui.editors/plugin.xml
+++ b/bundles/org.eclipse.ui.editors/plugin.xml
@@ -1119,6 +1119,16 @@
label="test"
value="232,232,232">
+
+
+ %TEXT_EDITOR_CODE_MINING_COLOR_DESCRIPTION
+
+
@@ -1161,4 +1171,13 @@
id="org.eclipse.ui.internal.editors.annotationCodeMiningProvider">
+
+
+
+
+
+
diff --git a/bundles/org.eclipse.ui.editors/src/org/eclipse/ui/editors/text/templates/ContributionTemplateStore.java b/bundles/org.eclipse.ui.editors/src/org/eclipse/ui/editors/text/templates/ContributionTemplateStore.java
index 4d6994e2c08..fd17f425122 100644
--- a/bundles/org.eclipse.ui.editors/src/org/eclipse/ui/editors/text/templates/ContributionTemplateStore.java
+++ b/bundles/org.eclipse.ui.editors/src/org/eclipse/ui/editors/text/templates/ContributionTemplateStore.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2024 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -102,8 +102,6 @@ public ContributionTemplateStore(ContextTypeRegistry registry, IPreferenceStore
/**
* Loads the templates contributed via the templates extension point.
- *
- * @throws IOException {@inheritDoc}
*/
@Override
protected void loadContributedTemplates() throws IOException {
diff --git a/bundles/org.eclipse.ui.editors/src/org/eclipse/ui/internal/editors/text/TabFolderLayout.java b/bundles/org.eclipse.ui.editors/src/org/eclipse/ui/internal/editors/text/TabFolderLayout.java
deleted file mode 100644
index ba477d723a1..00000000000
--- a/bundles/org.eclipse.ui.editors/src/org/eclipse/ui/internal/editors/text/TabFolderLayout.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation 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
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.editors.text;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Layout;
-
-/**
- * This layout controls the position and size
- * of the children of a tab folder.
- *
- * @since 2.1
- */
-class TabFolderLayout extends Layout {
-
- /*
- * @see org.eclipse.swt.widgets.Layout#computeSize(org.eclipse.swt.widgets.Composite, int, int, boolean)
- */
- @Override
- protected Point computeSize (Composite composite, int wHint, int hHint, boolean flushCache) {
- if (wHint != SWT.DEFAULT && hHint != SWT.DEFAULT)
- return new Point(wHint, hHint);
-
- Control [] children = composite.getChildren ();
- int count = children.length;
- int maxWidth = 0, maxHeight = 0;
- for (int i=0; i getStickyLines(ISourceViewer sourceViewer, StickyLinesProperties properties) {
- if (sourceViewer.getTopIndex() == 0) {
- return Collections.emptyList();
- }
-
+ public List getStickyLines(ISourceViewer sourceViewer, int lineNumber, StickyLinesProperties properties) {
this.fProperties= properties;
- LinkedList stickyLines= new LinkedList<>();
-
- try {
- StyledText textWidget= sourceViewer.getTextWidget();
- int startLine= textWidget.getTopIndex();
-
- calculateStickyLinesForLineNumber(stickyLines, sourceViewer, startLine);
- calculateStickyLinesUnderStickyLineControl(stickyLines, sourceViewer, startLine);
- } catch (IllegalArgumentException e) {
- stickyLines.clear();
- }
-
- return stickyLines;
- }
-
- private void calculateStickyLinesForLineNumber(LinkedList stickyLines, ISourceViewer sourceViewer, int lineNumber) {
- StyledText textWidget= sourceViewer.getTextWidget();
- int startIndetation= getStartIndentation(lineNumber, textWidget);
-
- for (int i= lineNumber, previousIndetation= startIndetation; i >= 0; i--) {
- String line= textWidget.getLine(i);
- int indentation= getIndentation(line);
-
- if (indentation == IGNORE_LINE_INDENTATION) {
- continue;
- }
-
- if (indentation < previousIndetation) {
- previousIndetation= indentation;
- stickyLines.addFirst(new StickyLine(line, mapLineNumberToSourceViewerLine(i, sourceViewer)));
- }
- }
- }
+ LinkedList stickyLines= new LinkedList<>();
- private void calculateStickyLinesUnderStickyLineControl(LinkedList stickyLines, ISourceViewer sourceViewer, int startLine) {
- int firstBelowControl= startLine + stickyLines.size();
StyledText textWidget= sourceViewer.getTextWidget();
- int lineCount= textWidget.getLineCount();
+ int textWidgetLineNumber= mapLineNumberToWidget(sourceViewer, lineNumber);
+ try {
+ int startIndetation= getStartIndentation(textWidgetLineNumber, textWidget);
- for (int i= startLine; i < firstBelowControl && i < lineCount; i++) {
+ for (int i= textWidgetLineNumber, previousIndetation= startIndetation; i >= 0; i--) {
+ String line= textWidget.getLine(i);
+ int indentation= getIndentation(line);
- String line= textWidget.getLine(i);
- int indentation= getIndentation(line);
- if (indentation == IGNORE_LINE_INDENTATION) {
- continue;
- }
+ if (indentation == IGNORE_LINE_INDENTATION) {
+ continue;
+ }
- while (!stickyLines.isEmpty() && indentation <= getLastStickyLineIndentation(stickyLines) && i < firstBelowControl) {
- stickyLines.removeLast();
- firstBelowControl--;
- }
-
- String nextContentLine= getNextContentLine(i, textWidget);
- if (getIndentation(nextContentLine) > indentation && i < firstBelowControl) {
- stickyLines.addLast(new StickyLine(line, mapLineNumberToSourceViewerLine(i, sourceViewer)));
- firstBelowControl++;
- continue;
+ if (indentation < previousIndetation) {
+ previousIndetation= indentation;
+ stickyLines.addFirst(new StickyLine(mapLineNumberToViewer(sourceViewer, i), sourceViewer));
+ }
}
+ } catch (IllegalArgumentException e) {
+ stickyLines.clear();
}
- }
- private int getLastStickyLineIndentation(LinkedList stickyLines) {
- String text= stickyLines.getLast().text();
- return getIndentation(text);
- }
-
- private int mapLineNumberToSourceViewerLine(int lineNumber, ISourceViewer sourceViewer) {
- if (sourceViewer instanceof ITextViewerExtension5 extension) {
- return extension.widgetLine2ModelLine(lineNumber);
- }
- return lineNumber;
+ return stickyLines;
}
private int getStartIndentation(int startFromLine, StyledText styledText) {
@@ -156,4 +106,18 @@ private int getIndentation(String line) {
return line.length() - line.stripLeading().length();
}
+ private int mapLineNumberToWidget(ISourceViewer sourceViewer, int line) {
+ if (sourceViewer instanceof ITextViewerExtension5 extension) {
+ return extension.modelLine2WidgetLine(line);
+ }
+ return line;
+ }
+
+ private int mapLineNumberToViewer(ISourceViewer sourceViewer, int line) {
+ if (sourceViewer instanceof ITextViewerExtension5 extension) {
+ return extension.widgetLine2ModelLine(line);
+ }
+ return line;
+ }
+
}
diff --git a/bundles/org.eclipse.ui.editors/src/org/eclipse/ui/internal/texteditor/stickyscroll/IStickyLine.java b/bundles/org.eclipse.ui.editors/src/org/eclipse/ui/internal/texteditor/stickyscroll/IStickyLine.java
new file mode 100644
index 00000000000..33e54dc9cc6
--- /dev/null
+++ b/bundles/org.eclipse.ui.editors/src/org/eclipse/ui/internal/texteditor/stickyscroll/IStickyLine.java
@@ -0,0 +1,44 @@
+/*******************************************************************************
+ * Copyright (c) 2024 SAP SE.
+ *
+ * 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:
+ * SAP SE - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.ui.internal.texteditor.stickyscroll;
+
+import org.eclipse.swt.custom.StyleRange;
+
+/**
+ * Representation of a sticky line.
+ */
+public interface IStickyLine {
+
+ /**
+ * Returns the line number of the sticky line.
+ *
+ * @return the line number of the sticky line
+ */
+ int getLineNumber();
+
+ /**
+ * Returns the text of the sticky line.
+ *
+ * @return the text of the sticky line
+ */
+ String getText();
+
+ /**
+ * Returns the style ranges of the sticky line.
+ *
+ * @return the style ranges of the sticky line
+ */
+ StyleRange[] getStyleRanges();
+
+}
diff --git a/bundles/org.eclipse.ui.editors/src/org/eclipse/ui/internal/texteditor/stickyscroll/IStickyLinesProvider.java b/bundles/org.eclipse.ui.editors/src/org/eclipse/ui/internal/texteditor/stickyscroll/IStickyLinesProvider.java
index 677ae114cd3..cb677202fca 100644
--- a/bundles/org.eclipse.ui.editors/src/org/eclipse/ui/internal/texteditor/stickyscroll/IStickyLinesProvider.java
+++ b/bundles/org.eclipse.ui.editors/src/org/eclipse/ui/internal/texteditor/stickyscroll/IStickyLinesProvider.java
@@ -15,8 +15,6 @@
import java.util.List;
-import org.eclipse.swt.custom.StyledText;
-
import org.eclipse.jface.text.source.ISourceViewer;
/**
@@ -29,21 +27,19 @@ public interface IStickyLinesProvider {
/**
* Calculate the sticky lines for the source code of the given sourceViewer. Specific
- * properties, such as the tabWidht can be retrieved from the
+ * properties, such as the tabWidht, can be retrieved from the
* properties.
*
- * @param sourceViewer The source viewer containing the source code and information about the
- * first visible line
+ * @param sourceViewer The source viewer containing the source code and gives access to the text
+ * widget
+ * @param lineNumber The line number to calculate the sticky lines for
+ * @param properties Properties for additional information
* @return The list of sticky lines to show
- *
- * @see ISourceViewer#getTopIndex()
- * @see ISourceViewer#getTextWidget()
- * @see StyledText#getTopIndex()
*/
- public List getStickyLines(ISourceViewer sourceViewer, StickyLinesProperties properties);
+ public List getStickyLines(ISourceViewer sourceViewer, int lineNumber, StickyLinesProperties properties);
/**
- * Properties required to calculate the sticky lines.
+ * Additional properties and access in order to calculate the sticky lines.
*
* @param tabWith The with of a tab
*/
diff --git a/bundles/org.eclipse.ui.editors/src/org/eclipse/ui/internal/texteditor/stickyscroll/StickyLine.java b/bundles/org.eclipse.ui.editors/src/org/eclipse/ui/internal/texteditor/stickyscroll/StickyLine.java
index 8dfb1441133..3533ad07c22 100644
--- a/bundles/org.eclipse.ui.editors/src/org/eclipse/ui/internal/texteditor/stickyscroll/StickyLine.java
+++ b/bundles/org.eclipse.ui.editors/src/org/eclipse/ui/internal/texteditor/stickyscroll/StickyLine.java
@@ -13,13 +13,59 @@
*******************************************************************************/
package org.eclipse.ui.internal.texteditor.stickyscroll;
+import org.eclipse.swt.custom.StyleRange;
+import org.eclipse.swt.custom.StyledText;
+
+import org.eclipse.jface.text.ITextViewerExtension5;
+import org.eclipse.jface.text.source.ISourceViewer;
+
/**
- *
- * A record representing a sticky line containing the text to display, and line number. It serves as
- * an abstraction to represent sticky line for sticky scrolling.
- *
- * @param text the text of the corresponding sticky line
- * @param lineNumber the specific line number of the sticky line
+ * Default implementation of {@link IStickyLine}. Information about the text and style ranges are
+ * calculated from the given text widget.
*/
-public record StickyLine(String text, int lineNumber) {
+public class StickyLine implements IStickyLine {
+
+ protected int lineNumber;
+
+ protected String text;
+
+ protected ISourceViewer sourceViewer;
+
+ public StickyLine(int lineNumber, ISourceViewer sourceViewer) {
+ this.lineNumber= lineNumber;
+ this.sourceViewer= sourceViewer;
+ }
+
+ @Override
+ public int getLineNumber() {
+ return this.lineNumber;
+ }
+
+ @Override
+ public String getText() {
+ if (text == null) {
+ StyledText textWidget= sourceViewer.getTextWidget();
+ text= textWidget.getLine(getWidgetLineNumber());
+ }
+ return text;
+ }
+
+ @Override
+ public StyleRange[] getStyleRanges() {
+ StyledText textWidget= sourceViewer.getTextWidget();
+ int offsetAtLine= textWidget.getOffsetAtLine(getWidgetLineNumber());
+ StyleRange[] styleRanges= textWidget.getStyleRanges(offsetAtLine, getText().length());
+ for (StyleRange styleRange : styleRanges) {
+ styleRange.start= styleRange.start - offsetAtLine;
+ }
+ return styleRanges;
+ }
+
+ private int getWidgetLineNumber() {
+ if (sourceViewer instanceof ITextViewerExtension5 extension) {
+ return extension.modelLine2WidgetLine(lineNumber);
+ }
+ return lineNumber;
+ }
+
}
diff --git a/bundles/org.eclipse.ui.editors/src/org/eclipse/ui/internal/texteditor/stickyscroll/StickyScrollingControl.java b/bundles/org.eclipse.ui.editors/src/org/eclipse/ui/internal/texteditor/stickyscroll/StickyScrollingControl.java
index 414abd5c19c..114aa88d7e4 100644
--- a/bundles/org.eclipse.ui.editors/src/org/eclipse/ui/internal/texteditor/stickyscroll/StickyScrollingControl.java
+++ b/bundles/org.eclipse.ui.editors/src/org/eclipse/ui/internal/texteditor/stickyscroll/StickyScrollingControl.java
@@ -14,8 +14,6 @@
package org.eclipse.ui.internal.texteditor.stickyscroll;
import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.StringJoiner;
@@ -43,9 +41,6 @@
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.ScrollBar;
-import org.eclipse.core.runtime.ICoreRunnable;
-import org.eclipse.core.runtime.jobs.Job;
-
import org.eclipse.jface.layout.GridDataFactory;
import org.eclipse.jface.layout.GridLayoutFactory;
@@ -65,7 +60,7 @@
/**
* This class builds a control that is rendered on top of the given source viewer. The controls
* shows the sticky lines that are set via {@link #setStickyLines(List)} on top of the source
- * viewer. The {@link StickyLine#lineNumber()} is linked to to corresponding line number in the
+ * viewer. The {@link StickyLine#getLineNumber()} is linked to to corresponding line number in the
* given source viewer, with index starting at 0.
*
* As part of its responsibilities, the class handles layout arrangement and styling of the sticky
@@ -87,7 +82,7 @@ public class StickyScrollingControl {
private static final String DISABLE_CSS= "org.eclipse.e4.ui.css.disabled"; //$NON-NLS-1$
- private List stickyLines;
+ private List stickyLines;
private ISourceViewer sourceViewer;
@@ -135,7 +130,7 @@ public StickyScrollingControl(ISourceViewer sourceViewer, IVerticalRuler vertica
*
* @param stickyLines The sticky lines to show
*/
- public void setStickyLines(List stickyLines) {
+ public void setStickyLines(List stickyLines) {
if (!stickyLines.equals(this.stickyLines)) {
this.stickyLines= stickyLines;
updateStickyScrollingControls();
@@ -206,9 +201,10 @@ private void updateStickyScrollingControls() {
StringJoiner stickyLineTextJoiner= new StringJoiner(System.lineSeparator());
StringJoiner stickyLineNumberJoiner= new StringJoiner(System.lineSeparator());
for (int i= 0; i < getNumberStickyLines(); i++) {
- StickyLine stickyLine= stickyLines.get(i);
- stickyLineTextJoiner.add(stickyLine.text());
- stickyLineNumberJoiner.add(fillLineNumberWithLeadingSpaces(stickyLine.lineNumber() + 1));
+ IStickyLine stickyLine= stickyLines.get(i);
+ stickyLineTextJoiner.add(stickyLine.getText());
+ int lineNumber= stickyLine.getLineNumber();
+ stickyLineNumberJoiner.add(fillLineNumberWithLeadingSpaces(lineNumber + 1));
}
String newStickyLineText= stickyLineTextJoiner.toString();
@@ -239,9 +235,15 @@ private void styleStickyLines() {
List stickyLinesStyleRanges= new ArrayList<>();
int stickyLineTextOffset= 0;
for (int i= 0; i < getNumberStickyLines(); i++) {
- StickyLine stickyLine= stickyLines.get(i);
- stickyLinesStyleRanges.addAll(getStickyLineStyleRanges(stickyLine, stickyLineTextOffset));
- stickyLineTextOffset+= stickyLine.text().length() + System.lineSeparator().length();
+ IStickyLine stickyLine= stickyLines.get(i);
+ StyleRange[] ranges= stickyLine.getStyleRanges();
+ if (ranges != null) {
+ for (StyleRange styleRange : ranges) {
+ styleRange.start+= stickyLineTextOffset;
+ stickyLinesStyleRanges.add(styleRange);
+ }
+ }
+ stickyLineTextOffset+= stickyLine.getText().length() + System.lineSeparator().length();
}
stickyLineText.setStyleRanges(stickyLinesStyleRanges.toArray(StyleRange[]::new));
@@ -255,25 +257,6 @@ private void styleStickyLines() {
stickyLineText.setLeftMargin(textWidget.getLeftMargin());
}
- private List getStickyLineStyleRanges(StickyLine stickyLine, int stickyLineTextOffset) {
- int lineNumber= stickyLine.lineNumber();
- if (sourceViewer instanceof ITextViewerExtension5 extension) {
- lineNumber= extension.modelLine2WidgetLine(lineNumber);
- }
- try {
- StyledText textWidget= sourceViewer.getTextWidget();
- int offsetAtLine= textWidget.getOffsetAtLine(lineNumber);
- StyleRange[] styleRanges= textWidget.getStyleRanges(offsetAtLine, stickyLine.text().length());
- for (StyleRange styleRange : styleRanges) {
- styleRange.start= styleRange.start - offsetAtLine + stickyLineTextOffset;
- }
- return Arrays.asList(styleRanges);
- } catch (IllegalArgumentException e) {
- //Styling could not be copied, skip!
- return Collections.emptyList();
- }
- }
-
private void layoutStickyLines() {
if (getNumberStickyLines() == 0) {
stickyLinesCanvas.setVisible(false);
@@ -360,12 +343,12 @@ private void calculateAndSetStickyLinesCanvasBounds() {
private void navigateToClickedLine(MouseEvent event) {
int clickedStickyLineIndex= stickyLineText.getLineIndex(event.y);
- StickyLine clickedStickyLine= stickyLines.get(clickedStickyLineIndex);
+ IStickyLine clickedStickyLine= stickyLines.get(clickedStickyLineIndex);
try {
- int offset= sourceViewer.getDocument().getLineOffset(clickedStickyLine.lineNumber());
+ int offset= sourceViewer.getDocument().getLineOffset(clickedStickyLine.getLineNumber());
sourceViewer.setSelectedRange(offset, 0);
- ensureSourceViewerLineVisible(clickedStickyLine.lineNumber());
+ ensureSourceViewerLineVisible(clickedStickyLine.getLineNumber());
} catch (BadLocationException e) {
//Do not navigate
}
@@ -406,25 +389,27 @@ private int getNumberStickyLines() {
* resized/moved.
*/
private void addSourceViewerListeners() {
+ StyledText textWidget= sourceViewer.getTextWidget();
+
if (sourceViewer instanceof ITextViewerExtension4 extension) {
- textPresentationListener= e -> {
- Job.create("Update sticky lines styling", (ICoreRunnable) monitor -> { //$NON-NLS-1$
- Display.getDefault().asyncExec(() -> {
- styleStickyLines();
- });
- }).schedule();
+ textPresentationListener = e -> {
+ Display.getDefault().asyncExec(() -> {
+ styleStickyLines();
+ });
};
extension.addTextPresentationListener(textPresentationListener);
}
caretListener= new StickyScollingCaretListener();
- sourceViewer.getTextWidget().addCaretListener(caretListener);
- sourceViewer.getTextWidget().addKeyListener(caretListener);
+ textWidget.addCaretListener(caretListener);
+ textWidget.addKeyListener(caretListener);
controlListener= new ControlListener() {
@Override
public void controlResized(ControlEvent e) {
- StyledText textWidget= sourceViewer.getTextWidget();
+ if (areStickyLinesOutDated(textWidget)) {
+ return;
+ }
limitVisibleStickyLinesToTextWidgetHeight(textWidget);
layoutStickyLines();
if (stickyScrollingHandler != null) {
@@ -437,7 +422,25 @@ public void controlMoved(ControlEvent e) {
layoutStickyLines();
}
};
- sourceViewer.getTextWidget().addControlListener(controlListener);
+ textWidget.addControlListener(controlListener);
+ }
+
+ /**
+ * Checks if the sticky lines are out dated. Specifically, it verifies that the
+ * line number of the last sticky line does not exceed the total line count of
+ * the source viewer.
+ *
+ * This situation can occur, for example, when an editor is opened via the
+ * search view and "reuse editor" is enabled. In such cases, the text in the
+ * source viewer is replaced, but the out dated sticky lines associated with the
+ * previous source code remain in the first call.
+ */
+ private boolean areStickyLinesOutDated(StyledText textWidget) {
+ if (stickyLines.size() > 0) {
+ int lastStickyLineNumber = stickyLines.get(stickyLines.size() - 1).getLineNumber();
+ return lastStickyLineNumber > textWidget.getLineCount();
+ }
+ return true;
}
private void limitVisibleStickyLinesToTextWidgetHeight(StyledText textWidget) {
diff --git a/bundles/org.eclipse.ui.editors/src/org/eclipse/ui/internal/texteditor/stickyscroll/StickyScrollingHandler.java b/bundles/org.eclipse.ui.editors/src/org/eclipse/ui/internal/texteditor/stickyscroll/StickyScrollingHandler.java
index 432ee38f381..316cca3a636 100644
--- a/bundles/org.eclipse.ui.editors/src/org/eclipse/ui/internal/texteditor/stickyscroll/StickyScrollingHandler.java
+++ b/bundles/org.eclipse.ui.editors/src/org/eclipse/ui/internal/texteditor/stickyscroll/StickyScrollingHandler.java
@@ -22,6 +22,7 @@
import java.time.Duration;
import java.util.Collections;
+import java.util.LinkedList;
import java.util.List;
import org.eclipse.swt.graphics.Color;
@@ -121,9 +122,7 @@ private StickyScrollingControlSettings loadControlSettings(IPreferenceStore stor
int stickyScrollingMaxCount= store.getInt(EDITOR_STICKY_SCROLLING_MAXIMUM_COUNT);
Color lineNumberColor= new Color(PreferenceConverter.getColor(store, EDITOR_LINE_NUMBER_RULER_COLOR));
- sourceViewer.getTextWidget().addDisposeListener(e -> lineNumberColor.dispose());
Color stickyLineHoverColor= new Color(PreferenceConverter.getColor(store, EDITOR_CURRENT_LINE_COLOR));
- sourceViewer.getTextWidget().addDisposeListener(e -> stickyLineHoverColor.dispose());
Color stickyLineBackgroundColor= sourceViewer.getTextWidget().getBackground();
boolean showLineNumbers= store.getBoolean(EDITOR_LINE_NUMBER_RULER);
Color stickyLineSeparatorColor= null;
@@ -151,13 +150,50 @@ public void viewportChanged(int newVerticalOffset) {
}
private void calculateAndShowStickyLines() {
- List stickyLines= stickyLinesProvider.getStickyLines(sourceViewer, stickyLinesProperties);
+ List stickyLines= Collections.emptyList();
+
+ int startLine= sourceViewer.getTopIndex();
+
+ if (startLine > 0) {
+ stickyLines= stickyLinesProvider.getStickyLines(sourceViewer, sourceViewer.getTopIndex(), stickyLinesProperties);
+ }
+
if (stickyLines == null) {
stickyLines= Collections.emptyList();
}
+
+ stickyLines= adaptStickyLinesToVisibleArea(stickyLines, startLine);
+
stickyScrollingControl.setStickyLines(stickyLines);
}
+ private List adaptStickyLinesToVisibleArea(List stickyLines, int startLine) {
+ if (stickyLines.isEmpty()) {
+ return stickyLines;
+ }
+
+ LinkedList adaptedStickyLines= new LinkedList<>(stickyLines);
+
+ int firstVisibleLine= startLine + adaptedStickyLines.size();
+ int numberOfLines= sourceViewer.getDocument().getNumberOfLines();
+
+ for (int i= startLine + 1; i <= firstVisibleLine && i < numberOfLines; i++) {
+ List stickyLinesInLineI= stickyLinesProvider.getStickyLines(sourceViewer, i, stickyLinesProperties);
+
+ if (stickyLinesInLineI.size() > adaptedStickyLines.size()) {
+ adaptedStickyLines= new LinkedList<>(stickyLinesInLineI);
+ firstVisibleLine= startLine + adaptedStickyLines.size();
+ }
+
+ while (stickyLinesInLineI.size() < adaptedStickyLines.size() && i < firstVisibleLine) {
+ adaptedStickyLines.removeLast();
+ firstVisibleLine--;
+ }
+ }
+
+ return adaptedStickyLines;
+ }
+
/**
* Uninstalls the sticky scrolling handler from the source viewer. This completely disposes the
* {@link StickyScrollingControl} and removes all corresponding listeners.
diff --git a/bundles/org.eclipse.ui.editors/src/org/eclipse/ui/texteditor/AbstractDecoratedTextEditor.java b/bundles/org.eclipse.ui.editors/src/org/eclipse/ui/texteditor/AbstractDecoratedTextEditor.java
index 60999aab116..e0b8c449331 100644
--- a/bundles/org.eclipse.ui.editors/src/org/eclipse/ui/texteditor/AbstractDecoratedTextEditor.java
+++ b/bundles/org.eclipse.ui.editors/src/org/eclipse/ui/texteditor/AbstractDecoratedTextEditor.java
@@ -196,6 +196,10 @@ public abstract class AbstractDecoratedTextEditor extends StatusTextEditor {
* Preference key for highlight color of current line.
*/
private final static String CURRENT_LINE_COLOR= AbstractDecoratedTextEditorPreferenceConstants.EDITOR_CURRENT_LINE_COLOR;
+ /**
+ * Preference key for inline annotation color
+ */
+ private final static String INLINE_ANNOTATION_COLOR= AbstractDecoratedTextEditorPreferenceConstants.EDITOR_INLINE_ANNOTATION_COLOR;
/**
* Preference key for showing print margin ruler.
*/
@@ -456,6 +460,7 @@ protected void configureSourceViewerDecorationSupport(SourceViewerDecorationSupp
support.setCursorLinePainterPreferenceKeys(CURRENT_LINE, CURRENT_LINE_COLOR);
support.setMarginPainterPreferenceKeys(PRINT_MARGIN, PRINT_MARGIN_COLOR, PRINT_MARGIN_COLUMN);
+ support.setInlineAnnotationColorPreferenceKey(INLINE_ANNOTATION_COLOR);
}
/*
diff --git a/bundles/org.eclipse.ui.editors/src/org/eclipse/ui/texteditor/AbstractDecoratedTextEditorPreferenceConstants.java b/bundles/org.eclipse.ui.editors/src/org/eclipse/ui/texteditor/AbstractDecoratedTextEditorPreferenceConstants.java
index ebae43ed79c..59555ff9880 100644
--- a/bundles/org.eclipse.ui.editors/src/org/eclipse/ui/texteditor/AbstractDecoratedTextEditorPreferenceConstants.java
+++ b/bundles/org.eclipse.ui.editors/src/org/eclipse/ui/texteditor/AbstractDecoratedTextEditorPreferenceConstants.java
@@ -71,11 +71,18 @@ private AbstractDecoratedTextEditorPreferenceConstants() {
*/
public final static String EDITOR_CURRENT_LINE_COLOR= "currentLineColor"; //$NON-NLS-1$
+ /**
+ * A named preference that holds the color used to render the text editor inline annotation
+ *
+ * @since 3.19
+ */
+ public final static String EDITOR_INLINE_ANNOTATION_COLOR= "org.eclipse.ui.editors.inlineAnnotationColor"; //$NON-NLS-1$
+
/**
* A named preference that holds the number of spaces used per tab in the text editor.
*
- * Value is of type int: positive int value specifying the number of
- * spaces per tab.
+ * Value is of type int: positive int value specifying the number of spaces per
+ * tab.
*
*/
public final static String EDITOR_TAB_WIDTH= "tabWidth"; //$NON-NLS-1$
diff --git a/bundles/org.eclipse.ui.ide.application/src/org/eclipse/ui/internal/ide/application/IDEApplication.java b/bundles/org.eclipse.ui.ide.application/src/org/eclipse/ui/internal/ide/application/IDEApplication.java
index 394cf65cfe9..c77bbbb1010 100644
--- a/bundles/org.eclipse.ui.ide.application/src/org/eclipse/ui/internal/ide/application/IDEApplication.java
+++ b/bundles/org.eclipse.ui.ide.application/src/org/eclipse/ui/internal/ide/application/IDEApplication.java
@@ -24,9 +24,14 @@
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
+import java.io.InputStream;
import java.io.OutputStream;
+import java.net.InetAddress;
import java.net.MalformedURLException;
+import java.net.URISyntaxException;
import java.net.URL;
+import java.nio.file.Files;
+import java.nio.file.Path;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Properties;
@@ -37,6 +42,7 @@
import org.eclipse.core.runtime.OperationCanceledException;
import org.eclipse.core.runtime.Platform;
import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.URIUtil;
import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.core.runtime.preferences.ConfigurationScope;
import org.eclipse.equinox.app.IApplication;
@@ -49,7 +55,11 @@
import org.eclipse.osgi.service.datalocation.Location;
import org.eclipse.osgi.util.NLS;
import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.FillLayout;
+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.ui.IWorkbench;
import org.eclipse.ui.PlatformUI;
@@ -79,6 +89,22 @@ public class IDEApplication implements IApplication, IExecutableExtension {
private static final String VERSION_FILENAME = "version.ini"; //$NON-NLS-1$
+ private static final Path LOCK_INFO_FILE = Path.of(METADATA_FOLDER, ".lock_info"); //$NON-NLS-1$
+
+ private static final String DISPLAY_VAR = "DISPLAY"; //$NON-NLS-1$
+
+ private static final String HOST_NAME_VAR = "HOSTNAME"; //$NON-NLS-1$
+
+ private static final String PROCESS_ID = "process-id"; //$NON-NLS-1$
+
+ private static final String DISPLAY = "display"; //$NON-NLS-1$
+
+ private static final String HOST = "host"; //$NON-NLS-1$
+
+ private static final String USER = "user"; //$NON-NLS-1$
+
+ private static final String USER_NAME = "user.name"; //$NON-NLS-1$
+
// Use the branding plug-in of the platform feature since this is most likely
// to change on an update of the IDE.
private static final String WORKSPACE_CHECK_REFERENCE_BUNDLE_NAME = "org.eclipse.platform"; //$NON-NLS-1$
@@ -225,6 +251,7 @@ protected Object checkInstanceLocation(Shell shell, Map applicationArguments) {
try {
if (instanceLoc.lock()) {
writeWorkspaceVersion();
+ writeWsLockInfo(instanceLoc.getURL());
return null;
}
@@ -237,10 +264,19 @@ protected Object checkInstanceLocation(Shell shell, Map applicationArguments) {
if (isDevLaunchMode(applicationArguments)) {
return EXIT_WORKSPACE_LOCKED;
}
+
+ String wsLockedError = NLS.bind(IDEWorkbenchMessages.IDEApplication_workspaceCannotLockMessage,
+ workspaceDirectory.getAbsolutePath());
+ // check if there is a lock info then append it to error message.
+ String lockInfo = getWorkspaceLockInfo(instanceLoc.getURL());
+ if (lockInfo != null && !lockInfo.isBlank()) {
+ wsLockedError = wsLockedError + System.lineSeparator() + System.lineSeparator()
+ + NLS.bind(IDEWorkbenchMessages.IDEApplication_Ws_Lock_Owner_Message, lockInfo);
+ }
MessageDialog.openError(
shell,
IDEWorkbenchMessages.IDEApplication_workspaceCannotLockTitle,
- NLS.bind(IDEWorkbenchMessages.IDEApplication_workspaceCannotLockMessage, workspaceDirectory.getAbsolutePath()));
+ wsLockedError);
} else {
MessageDialog.openError(
shell,
@@ -313,6 +349,7 @@ protected Object checkInstanceLocation(Shell shell, Map applicationArguments) {
if (instanceLoc.set(workspaceUrl, true)) {
launchData.writePersistedData();
writeWorkspaceVersion();
+ writeWsLockInfo(instanceLoc.getURL());
return null;
}
} catch (IllegalStateException e) {
@@ -332,10 +369,28 @@ protected Object checkInstanceLocation(Shell shell, Map applicationArguments) {
// by this point it has been determined that the workspace is
// already in use -- force the user to choose again
+
+ String lockInfo = getWorkspaceLockInfo(workspaceUrl);
+
MessageDialog dialog = new MessageDialog(null, IDEWorkbenchMessages.IDEApplication_workspaceInUseTitle,
null, NLS.bind(IDEWorkbenchMessages.IDEApplication_workspaceInUseMessage, workspaceUrl.getFile()),
MessageDialog.ERROR, 1, IDEWorkbenchMessages.IDEApplication_workspaceInUse_Retry,
- IDEWorkbenchMessages.IDEApplication_workspaceInUse_Choose);
+ IDEWorkbenchMessages.IDEApplication_workspaceInUse_Choose) {
+ @Override
+ protected Control createCustomArea(Composite parent) {
+ if (lockInfo == null || lockInfo.isBlank()) {
+ return null;
+ }
+
+ Composite container = new Composite(parent, SWT.NONE);
+ container.setLayout(new FillLayout());
+
+ Label multiLineText = new Label(container, SWT.NONE);
+ multiLineText.setText(NLS.bind(IDEWorkbenchMessages.IDEApplication_Ws_Lock_Owner_Message, lockInfo));
+
+ return container;
+ }
+ };
// the return value influences the next loop's iteration
returnValue = dialog.open();
// Remember the locked workspace as recent workspace
@@ -343,6 +398,154 @@ protected Object checkInstanceLocation(Shell shell, Map applicationArguments) {
}
}
+ /**
+ * Read workspace lock file and parse all the properties present. Based on the
+ * eclipse version and operating system some or all the properties may not
+ * present. In such scenario it will return empty string.
+ *
+ * @return Previous lock owner details.
+ */
+ protected String getWorkspaceLockInfo(URL workspaceUrl) {
+ try {
+ Path lockFile = getLockInfoFile(workspaceUrl);
+ if (!Files.exists(lockFile)) {
+ return null;
+ }
+
+ StringBuilder sb = new StringBuilder();
+ Properties props = new Properties();
+ try (InputStream is = Files.newInputStream(lockFile)) {
+ props.load(is);
+ String prop = props.getProperty(USER);
+ if (prop != null) {
+ sb.append(NLS.bind(IDEWorkbenchMessages.IDEApplication_Ws_Lock_Owner_User, prop));
+ }
+ prop = props.getProperty(HOST);
+ if (prop != null) {
+ sb.append(NLS.bind(IDEWorkbenchMessages.IDEApplication_Ws_Lock_Owner_Host, prop));
+ }
+ prop = props.getProperty(DISPLAY);
+ if (prop != null) {
+ sb.append(NLS.bind(IDEWorkbenchMessages.IDEApplication_Ws_Lock_Owner_Disp, prop));
+ }
+ prop = props.getProperty(PROCESS_ID);
+ if (prop != null) {
+ sb.append(NLS.bind(IDEWorkbenchMessages.IDEApplication_Ws_Lock_Owner_P_Id, prop));
+ }
+ return sb.toString();
+ }
+ } catch (Exception e) {
+ IDEWorkbenchPlugin.log("Could not read lock info file: ", e); //$NON-NLS-1$
+
+ }
+ return null;
+ }
+
+ /**
+ * Write lock owner details onto workspace lock file. Data includes user, host,
+ * display and current java process id.
+ */
+ protected void writeWsLockInfo(URL workspaceUrl) {
+ Properties props = new Properties();
+
+ String user = System.getProperty(USER_NAME);
+ if (user != null) {
+ props.setProperty(USER, user);
+ }
+ String host = getHostName();
+ if (host != null) {
+ props.setProperty(HOST, host);
+ }
+ String display = getDisplay();
+ if (display != null) {
+ props.setProperty(DISPLAY, display);
+ }
+ String pid = getProcessId();
+ if (pid != null) {
+ props.setProperty(PROCESS_ID, pid);
+ }
+
+ if (props.isEmpty()) {
+ return;
+ }
+
+ try (OutputStream output = Files.newOutputStream(createLockInfoFile(workspaceUrl))) {
+ props.store(output, null);
+ } catch (Exception e) {
+ IDEWorkbenchPlugin.log("Could not write lock info file", e); //$NON-NLS-1$
+ }
+ }
+
+ private String getDisplay() {
+ String displayEnv = null;
+ try {
+ displayEnv = System.getenv(DISPLAY_VAR);
+ } catch (Exception e) {
+ IDEWorkbenchPlugin.log("Failed to read DISPLAY variable.", e); //$NON-NLS-1$
+ }
+ return displayEnv;
+ }
+
+ private String getProcessId() {
+ Long pid = null;
+ try {
+ pid = ProcessHandle.current().pid();
+ } catch (Exception e) {
+ IDEWorkbenchPlugin.log("Failed to read Java process id.", e); //$NON-NLS-1$
+ }
+ return pid != null ? pid.toString() : null;
+ }
+
+ private String getHostName() {
+ String hostName = null;
+
+ // Try fast approach first. Some OS(Like Linux) has HOSTNAME environment
+ // variable set.
+ try {
+ hostName = System.getenv(HOST_NAME_VAR);
+ if (hostName != null && !hostName.isEmpty()) {
+ return hostName;
+ }
+ } catch (Exception e) {
+ // Ignore here because we will try another method in the next step.
+ }
+
+ try {
+ hostName = InetAddress.getLocalHost().getHostName();
+ } catch (Exception e) {
+ IDEWorkbenchPlugin.log("Failed to read host name.", e); //$NON-NLS-1$
+ }
+ return hostName;
+ }
+
+ /**
+ * Returns the .lock_info file. Does not check if it exists.
+ *
+ * @param workspaceUrl
+ * @return .lock_info file.
+ */
+ private static Path getLockInfoFile(URL workspaceUrl) {
+ try {
+ return Path.of(URIUtil.toURI(workspaceUrl)).resolve(LOCK_INFO_FILE);
+ } catch (URISyntaxException e) {
+ throw new IllegalArgumentException(e);
+ }
+ }
+
+ /**
+ * Creates the .lock_info file if it does not exist.
+ *
+ * @param workspaceUrl
+ * @return .lock_info file.
+ */
+ private static Path createLockInfoFile(URL workspaceUrl) throws Exception {
+ Path lockInfoFile = getLockInfoFile(workspaceUrl);
+ if (!Files.exists(lockInfoFile)) {
+ Files.createFile(lockInfoFile);
+ }
+ return lockInfoFile;
+ }
+
@SuppressWarnings("rawtypes")
private static boolean isDevLaunchMode(Map args) {
// see org.eclipse.pde.internal.core.PluginPathFinder.isDevLaunchMode()
diff --git a/bundles/org.eclipse.ui.ide.application/src/org/eclipse/ui/internal/ide/application/IDEWorkbenchAdvisor.java b/bundles/org.eclipse.ui.ide.application/src/org/eclipse/ui/internal/ide/application/IDEWorkbenchAdvisor.java
index 9052cfa1563..ceda5e16222 100644
--- a/bundles/org.eclipse.ui.ide.application/src/org/eclipse/ui/internal/ide/application/IDEWorkbenchAdvisor.java
+++ b/bundles/org.eclipse.ui.ide.application/src/org/eclipse/ui/internal/ide/application/IDEWorkbenchAdvisor.java
@@ -226,7 +226,7 @@ public void initialize(IWorkbenchConfigurer configurer) {
jfaceComparatorIsSet = true;
}
- if (!Platform.inDevelopmentMode()) {
+ if (!Platform.inDevelopmentMode() && !JUnitTestUtil.isJunitTestRunning()) {
new AutoRegisterSchemeHandlersJob().schedule();
}
}
diff --git a/bundles/org.eclipse.ui.ide.application/src/org/eclipse/ui/internal/ide/application/JUnitTestUtil.java b/bundles/org.eclipse.ui.ide.application/src/org/eclipse/ui/internal/ide/application/JUnitTestUtil.java
new file mode 100644
index 00000000000..df055af922b
--- /dev/null
+++ b/bundles/org.eclipse.ui.ide.application/src/org/eclipse/ui/internal/ide/application/JUnitTestUtil.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (c) 2024 SAP SE.
+ *
+ * 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:
+ * Matthias Becker / Sebastian Ratz - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.ui.internal.ide.application;
+
+import java.util.Set;
+import java.util.concurrent.atomic.AtomicBoolean;
+
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.ServiceCaller;
+import org.eclipse.osgi.service.environment.EnvironmentInfo;
+
+public class JUnitTestUtil {
+ private static Boolean cachedIsJunitTestRunning = null;
+
+ public static boolean isJunitTestRunning() {
+ if (cachedIsJunitTestRunning == null) {
+ try {
+ if (Platform.isRunning()) {
+ AtomicBoolean result = new AtomicBoolean();
+ cachedIsJunitTestRunning = ServiceCaller.callOnce(JUnitTestUtil.class, EnvironmentInfo.class, envInfo -> {
+ String application = envInfo.getProperty("eclipse.application"); //$NON-NLS-1$
+ result.set(application != null && Set.of( //
+ // see org.eclipse.pde.internal.launching.IPDEConstants
+ "org.eclipse.pde.junit.runtime.nonuithreadtestapplication", // //$NON-NLS-1$
+ "org.eclipse.pde.junit.runtime.uitestapplication", // //$NON-NLS-1$
+ "org.eclipse.pde.junit.runtime.coretestapplication", // //$NON-NLS-1$
+ // bundle "org.eclipse.test" (Platform tests)
+ "org.eclipse.test.uitestapplication", //$NON-NLS-1$
+ "org.eclipse.test.coretestapplication", // //$NON-NLS-1$
+ // see org.eclipse.tycho.surefire.AbstractTestMojo
+ "org.eclipse.tycho.surefire.osgibooter.uitest", //$NON-NLS-1$
+ "org.eclipse.tycho.surefire.osgibooter.headlesstest") // //$NON-NLS-1$
+ .contains(application));
+ });
+ cachedIsJunitTestRunning = result.get();
+ } else {
+ cachedIsJunitTestRunning = true; // probably
+ }
+ } catch (Throwable t) {
+ // log
+ cachedIsJunitTestRunning = false;
+ }
+ }
+
+ return cachedIsJunitTestRunning;
+ }
+
+}
\ No newline at end of file
diff --git a/bundles/org.eclipse.ui.ide/META-INF/MANIFEST.MF b/bundles/org.eclipse.ui.ide/META-INF/MANIFEST.MF
index c43ddcf24b9..29956309a34 100644
--- a/bundles/org.eclipse.ui.ide/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.ui.ide/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %Plugin.name
Bundle-SymbolicName: org.eclipse.ui.ide; singleton:=true
-Bundle-Version: 3.22.400.qualifier
+Bundle-Version: 3.22.500.qualifier
Bundle-Activator: org.eclipse.ui.internal.ide.IDEWorkbenchPlugin
Bundle-ActivationPolicy: lazy
Bundle-Vendor: %Plugin.providerName
diff --git a/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/CopyProjectAction.java b/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/CopyProjectAction.java
index 4e65ce8c4a3..597be0afd34 100644
--- a/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/CopyProjectAction.java
+++ b/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/CopyProjectAction.java
@@ -41,6 +41,7 @@
import org.eclipse.ui.internal.ide.IDEWorkbenchMessages;
import org.eclipse.ui.internal.ide.IDEWorkbenchPlugin;
import org.eclipse.ui.internal.ide.IIDEHelpContextIds;
+import org.eclipse.ui.internal.ide.actions.LTKLauncher;
import org.eclipse.ui.internal.progress.ProgressMonitorJobsDialog;
/**
@@ -303,6 +304,10 @@ public void run() {
String newName = (String) destinationPaths[0];
URI newLocation = URIUtil.toURI((String) destinationPaths[1]);
+ if (LTKLauncher.copyProject(project, newName, URIUtil.toPath(newLocation))) {
+ return;
+ }
+
boolean completed = performCopy(project, newName, newLocation);
if (!completed) {
diff --git a/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/CopyProjectOperation.java b/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/CopyProjectOperation.java
index fe8f11cb10c..4750c14988e 100644
--- a/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/CopyProjectOperation.java
+++ b/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/CopyProjectOperation.java
@@ -36,6 +36,7 @@
import org.eclipse.ui.ide.IDE;
import org.eclipse.ui.ide.undo.WorkspaceUndoUtil;
import org.eclipse.ui.internal.ide.IDEWorkbenchMessages;
+import org.eclipse.ui.internal.ide.actions.LTKLauncher;
import org.eclipse.ui.internal.progress.ProgressMonitorJobsDialog;
/**
@@ -127,6 +128,10 @@ public void copyProject(IProject project) {
String newName = (String) destinationPaths[0];
URI newLocation = URIUtil.toURI((String)destinationPaths[1]);
+ if (LTKLauncher.copyProject(project, newName, URIUtil.toPath(newLocation))) {
+ return;
+ }
+
boolean completed = performProjectCopy(project, newName, newLocation);
if (!completed) {
diff --git a/bundles/org.eclipse.ui.ide/icons/full/etool16/next_nav.png b/bundles/org.eclipse.ui.ide/icons/full/etool16/next_nav.png
index 80007d040d7..0deb92e7d01 100644
Binary files a/bundles/org.eclipse.ui.ide/icons/full/etool16/next_nav.png and b/bundles/org.eclipse.ui.ide/icons/full/etool16/next_nav.png differ
diff --git a/bundles/org.eclipse.ui.ide/icons/full/etool16/next_nav@2x.png b/bundles/org.eclipse.ui.ide/icons/full/etool16/next_nav@2x.png
index 9515e01a302..62f8e7ad9ac 100644
Binary files a/bundles/org.eclipse.ui.ide/icons/full/etool16/next_nav@2x.png and b/bundles/org.eclipse.ui.ide/icons/full/etool16/next_nav@2x.png differ
diff --git a/bundles/org.eclipse.ui.ide/icons/full/etool16/prev_nav.png b/bundles/org.eclipse.ui.ide/icons/full/etool16/prev_nav.png
index e5d90aa69f4..163c8a428ce 100644
Binary files a/bundles/org.eclipse.ui.ide/icons/full/etool16/prev_nav.png and b/bundles/org.eclipse.ui.ide/icons/full/etool16/prev_nav.png differ
diff --git a/bundles/org.eclipse.ui.ide/icons/full/etool16/prev_nav@2x.png b/bundles/org.eclipse.ui.ide/icons/full/etool16/prev_nav@2x.png
index f133db05201..f891945ec5d 100644
Binary files a/bundles/org.eclipse.ui.ide/icons/full/etool16/prev_nav@2x.png and b/bundles/org.eclipse.ui.ide/icons/full/etool16/prev_nav@2x.png differ
diff --git a/bundles/org.eclipse.ui.ide/plugin.properties b/bundles/org.eclipse.ui.ide/plugin.properties
index 6256c252eff..5223dbf0183 100644
--- a/bundles/org.eclipse.ui.ide/plugin.properties
+++ b/bundles/org.eclipse.ui.ide/plugin.properties
@@ -233,6 +233,8 @@ PreferenceKeywords.ColorLabels = color label
PreferenceKeywords.General = click background heap
PreferenceKeywords.ViewLimit = view limit maximum elements items
PreferenceKeywords.Themes = themes
+PreferenceKeywords.Icons = icons
+PreferenceKeywords.Titles = titles
PreferenceKeywords.AppearancePage = presentation MRU dark light tabs
PreferenceKeywords.Tabs = tab
PreferenceKeywords.Editors = editors
diff --git a/bundles/org.eclipse.ui.ide/plugin.xml b/bundles/org.eclipse.ui.ide/plugin.xml
index b170640a475..9b6518e3ba7 100644
--- a/bundles/org.eclipse.ui.ide/plugin.xml
+++ b/bundles/org.eclipse.ui.ide/plugin.xml
@@ -461,6 +461,12 @@
+
+
@@ -641,7 +647,9 @@
+
+
+
+
+
+ The application attribute describes how the reference should be applied.
+ i.e. Does it refer to type only, type and subtypes or subtypes only.
+ It is optionally included.
+ If it is not specified it defaults to typeAndSubTypes.
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/IDEWorkbenchMessages.java b/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/IDEWorkbenchMessages.java
index 78700035350..d7e7a933f04 100644
--- a/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/IDEWorkbenchMessages.java
+++ b/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/IDEWorkbenchMessages.java
@@ -1147,6 +1147,12 @@ public class IDEWorkbenchMessages extends NLS {
public static String WorkbenchPreference_maxSimultaneousBuilds;
public static String WorkbenchPreference_maxSimultaneousBuildIntervalError;
+ public static String IDEApplication_Ws_Lock_Owner_User;
+ public static String IDEApplication_Ws_Lock_Owner_Host;
+ public static String IDEApplication_Ws_Lock_Owner_Disp;
+ public static String IDEApplication_Ws_Lock_Owner_P_Id;
+ public static String IDEApplication_Ws_Lock_Owner_Message;
+
static {
// load message values from bundle file
NLS.initializeMessages(BUNDLE_NAME, IDEWorkbenchMessages.class);
diff --git a/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/actions/LTKLauncher.java b/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/actions/LTKLauncher.java
index f968602d68f..99f18dd0c94 100644
--- a/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/actions/LTKLauncher.java
+++ b/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/actions/LTKLauncher.java
@@ -27,7 +27,10 @@
import org.eclipse.core.commands.ParameterizedCommand;
import org.eclipse.core.commands.common.NotDefinedException;
import org.eclipse.core.expressions.EvaluationContext;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.IPath;
import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.ui.ISources;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.commands.ICommandService;
@@ -44,6 +47,10 @@ public class LTKLauncher {
private static final String LTK_RENAME_ID = "org.eclipse.ltk.ui.refactoring.commands.renameResource"; //$NON-NLS-1$
private static final String LTK_RENAME_COMMAND_NEWNAME_KEY = "org.eclipse.ltk.ui.refactoring.commands.renameResource.newName.parameter.key"; //$NON-NLS-1$
private static final String LTK_CHECK_COMPOSITE_RENAME_PARAMETER_KEY = "org.eclipse.ltk.ui.refactoring.commands.checkCompositeRename.parameter.key"; //$NON-NLS-1$
+ private static final String LTK_COPY_PROJECT_ID = "org.eclipse.ltk.ui.refactoring.commands.copyProject"; //$NON-NLS-1$
+ private static final String LTK_COPY_PROJECT_COMMAND_NEWNAME_KEY = "org.eclipse.ltk.ui.refactoring.commands.copyProject.newName.parameter.key"; //$NON-NLS-1$
+ private static final String LTK_COPY_PROJECT_COMMAND_NEWLOCATION_KEY = "org.eclipse.ltk.ui.refactoring.commands.copyProject.newLocation.parameter.key"; //$NON-NLS-1$
+
/**
* Open the LTK delete resources wizard if available.
*
@@ -113,6 +120,13 @@ public static boolean isCompositeRename(IStructuredSelection structuredSelection
return runCommand(LTK_RENAME_ID, structuredSelection, commandParameters);
}
+ public static boolean copyProject(IProject project, String newName, IPath newLocation) {
+ Map commandParameters = new HashMap<>();
+ commandParameters.put(LTK_COPY_PROJECT_COMMAND_NEWNAME_KEY, newName);
+ commandParameters.put(LTK_COPY_PROJECT_COMMAND_NEWLOCATION_KEY, newLocation);
+ return runCommand(LTK_COPY_PROJECT_ID, new StructuredSelection(project), commandParameters);
+ }
+
private static boolean runCommand(String commandId, IStructuredSelection selection,
Map commandParameters) {
diff --git a/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/IDEEditorsPreferencePage.java b/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/IDEEditorsPreferencePage.java
index 3283f29d763..13d631e8276 100644
--- a/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/IDEEditorsPreferencePage.java
+++ b/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/IDEEditorsPreferencePage.java
@@ -62,6 +62,7 @@ protected Control createContents(Composite parent) {
createUseIPersistablePref(composite);
createPromptWhenStillOpenPref(composite);
createEditorReuseGroup(composite);
+ createAlignMultiPageEditorTabs(composite);
applyDialogFont(composite);
diff --git a/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/messages.properties b/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/messages.properties
index 3f9b127093c..7bff4752fb9 100644
--- a/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/messages.properties
+++ b/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/messages.properties
@@ -1150,3 +1150,9 @@ OpenDelayedUrlAction_title=Open URL
editorAssociationOverride_error_couldNotCreate_message=The ''{0}'' extension from plug-in ''{1}'' to the ''org.eclipse.ui.ide.editorAssociationOverride'' extension point failed to load the editor association override class.
editorAssociationOverride_error_invalidElementName_message=An extension from plug-in ''{0}'' to the ''org.eclipse.ui.ide.editorAssociationOverride'' extension point was ignored because it contains the following invalid element: ''{1}''.
editorAssociationOverride_error_invalidExtension_message=The ''{0}'' extension from plug-in ''{1}'' to the ''org.eclipse.ui.ide.editorAssociationOverride'' extension point will be ignored because it contains invalid attributes.
+
+IDEApplication_Ws_Lock_Owner_User=User:\t\t{0}\n
+IDEApplication_Ws_Lock_Owner_Host=Host:\t\t{0}\n
+IDEApplication_Ws_Lock_Owner_Disp=Display:\t\t{0}\n
+IDEApplication_Ws_Lock_Owner_P_Id=Process ID:\t{0}\n
+IDEApplication_Ws_Lock_Owner_Message=Workspace lock is currently held by:\n{0}
diff --git a/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/FiltersConfigurationDialog.java b/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/FiltersConfigurationDialog.java
index 2c1bf5baf65..87eebc88c7a 100644
--- a/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/FiltersConfigurationDialog.java
+++ b/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/FiltersConfigurationDialog.java
@@ -707,7 +707,7 @@ protected void performDefaults() {
IPreferenceStore preferenceStore = IDEWorkbenchPlugin.getDefault().getPreferenceStore();
boolean useMarkerLimits = preferenceStore.getBoolean(IDEInternalPreferences.USE_MARKER_LIMITS);
- int markerLimits = useMarkerLimits ? preferenceStore.getInt(IDEInternalPreferences.MARKER_LIMITS_VALUE) : 1000;
+ int markerLimits = preferenceStore.getInt(IDEInternalPreferences.MARKER_LIMITS_VALUE);
limitButton.setSelection(useMarkerLimits);
updateLimitTextEnablement();
diff --git a/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/MarkerComparator.java b/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/MarkerComparator.java
index e84d3254602..1f6f876d76a 100644
--- a/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/MarkerComparator.java
+++ b/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/MarkerComparator.java
@@ -187,7 +187,9 @@ void restore(IMemento memento) {
* Save the current sort field in the memento.
*/
void saveState(IMemento memento) {
- memento.putString(PRIMARY_SORT_FIELD_TAG, MarkerSupportInternalUtilities.getId(fields[0]));
+ if (fields != null && fields.length > 0) {
+ memento.putString(PRIMARY_SORT_FIELD_TAG, MarkerSupportInternalUtilities.getId(fields[0]));
+ }
Iterator descendingIterator = descendingFields.iterator();
while (descendingIterator.hasNext()) {
memento.createChild(DESCENDING_FIELDS, (MarkerSupportInternalUtilities.getId(descendingIterator.next())));
diff --git a/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/MarkerSupportInternalUtilities.java b/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/MarkerSupportInternalUtilities.java
index b86038cdd7d..adcc3a58511 100644
--- a/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/MarkerSupportInternalUtilities.java
+++ b/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/MarkerSupportInternalUtilities.java
@@ -11,6 +11,7 @@
* Contributors:
* IBM Corporation - initial API and implementation
* Lars Vogel - Bug 430694
+ * Enda O'Brien, Pilz Ireland - PR #144
******************************************************************************/
package org.eclipse.ui.internal.views.markers;
@@ -71,6 +72,26 @@ public class MarkerSupportInternalUtilities {
*/
public static final String ATTRIBUTE_ID = "id"; //$NON-NLS-1$
+ /**
+ * The application attribute from a configuration element.
+ */
+ public static final String APPLICATION = "application"; //$NON-NLS-1$
+
+ /**
+ * The sub type only attribute value from the application attribute.
+ */
+ public static final String SUB_TYPES_ONLY = "subTypesOnly"; //$NON-NLS-1$
+
+ /**
+ * The type only attribute value from the application attribute.
+ */
+ public static final String TYPE_ONLY = "typeOnly"; //$NON-NLS-1$
+
+ /**
+ * The type and subtype attribute value from the application attribute.
+ */
+ public static final String TYPE_AND_SUBTYPE = "typeAndSubTypes"; //$NON-NLS-1$
+
/**
* The name attribute name from a configuration element.
*/
diff --git a/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/views/markers/internal/ContentGeneratorDescriptor.java b/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/views/markers/internal/ContentGeneratorDescriptor.java
index 9b1242f4c78..5a9e453b8cb 100644
--- a/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/views/markers/internal/ContentGeneratorDescriptor.java
+++ b/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/views/markers/internal/ContentGeneratorDescriptor.java
@@ -10,6 +10,7 @@
*
* Contributors:
* IBM Corporation - initial API and implementation
+ * Enda O'Brien, Pilz Ireland - PR #144
******************************************************************************/
package org.eclipse.ui.views.markers.internal;
@@ -20,6 +21,7 @@
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
+import java.util.List;
import java.util.Map;
import java.util.TreeSet;
import java.util.stream.Stream;
@@ -44,8 +46,10 @@ public class ContentGeneratorDescriptor {
private IConfigurationElement configurationElement;
private MarkerField[] allFields;
+ private MarkerField[] allFieldsWithExtensions;
private Collection markerTypes;
private MarkerField[] initialVisible;
+ private MarkerField[] initialVisibleWithExtensions;
private Collection groups;
private Collection generatorExtensions = new ArrayList<>();
private Map allTypesTable;
@@ -78,6 +82,7 @@ private void addDefinedGroups(Collection groupss) {
*/
public void addExtensions(Collection extensions) {
generatorExtensions = extensions;
+ clearCaches();
}
/**
@@ -96,7 +101,7 @@ private void addGroupsFrom(IConfigurationElement element, Collection selectedTypes) {
- return selectedTypes.containsAll(markerTypes);
+ return selectedTypes.containsAll(getMarkerTypes());
}
/**
@@ -105,7 +110,14 @@ public boolean allTypesSelected(Collection selectedTypes) {
* @return {@link MarkerField}[]
*/
public MarkerField[] getAllFields() {
- return allFields;
+ if (allFieldsWithExtensions == null) {
+ List fields = new ArrayList<>();
+ fields.addAll(Arrays.asList(allFields));
+ getExtensionsDescriptorsStream().map(d -> Arrays.asList(d.getAllFields())).flatMap(Collection::stream)
+ .forEach(fields::add);
+ allFieldsWithExtensions = fields.toArray(MarkerField[]::new);
+ }
+ return allFieldsWithExtensions;
}
/**
@@ -156,7 +168,14 @@ public String getId() {
* @return {@link MarkerField}[]
*/
public MarkerField[] getInitialVisible() {
- return initialVisible;
+ if (initialVisibleWithExtensions == null) {
+ List fields = new ArrayList<>();
+ fields.addAll(Arrays.asList(initialVisible));
+ getExtensionsDescriptorsStream().map(d -> Arrays.asList(d.getInitialVisible())).flatMap(Collection::stream)
+ .forEach(fields::add);
+ initialVisibleWithExtensions = fields.toArray(MarkerField[]::new);
+ }
+ return initialVisibleWithExtensions;
}
/**
@@ -190,14 +209,32 @@ public Collection getMarkerTypes() {
IConfigurationElement[] markerTypeElements = configurationElement.getChildren(MarkerSupportRegistry.MARKER_TYPE_REFERENCE);
for (IConfigurationElement configElement : markerTypeElements) {
String elementName = configElement.getAttribute(MarkerSupportInternalUtilities.ATTRIBUTE_ID);
- MarkerType[] types = MarkerTypesModel.getInstance().getType(elementName).getAllSubTypes();
- markerTypes.addAll(Arrays.asList(types));
- markerTypes.add(MarkerTypesModel.getInstance().getType(elementName));
+
+ String application = configElement.getAttribute(MarkerSupportInternalUtilities.APPLICATION) == null
+ ? MarkerSupportInternalUtilities.TYPE_AND_SUBTYPE
+ : configElement.getAttribute(MarkerSupportInternalUtilities.APPLICATION);
+
+ switch (application) {
+ case MarkerSupportInternalUtilities.TYPE_ONLY:
+ markerTypes.add(MarkerTypesModel.getInstance().getType(elementName));
+ break;
+ case MarkerSupportInternalUtilities.SUB_TYPES_ONLY:
+ markerTypes.addAll(
+ Arrays.asList(MarkerTypesModel.getInstance().getType(elementName).getAllSubTypes()));
+ break;
+ case MarkerSupportInternalUtilities.TYPE_AND_SUBTYPE:
+ default:
+ markerTypes.addAll(
+ Arrays.asList(MarkerTypesModel.getInstance().getType(elementName).getAllSubTypes()));
+ markerTypes.add(MarkerTypesModel.getInstance().getType(elementName));
+ }
}
if (markerTypes.isEmpty()) {
MarkerType[] types = MarkerTypesModel.getInstance().getType(IMarker.PROBLEM).getAllSubTypes();
markerTypes.addAll(Arrays.asList(types));
}
+ getExtensionsDescriptorsStream().map(ContentGeneratorDescriptor::getMarkerTypes).flatMap(Collection::stream)
+ .forEach(markerTypes::add);
}
return markerTypes;
}
@@ -230,7 +267,7 @@ public Map getTypesTable() {
if (allTypesTable == null) {
allTypesTable = new HashMap<>();
- Iterator allIterator = markerTypes.iterator();
+ Iterator allIterator = getMarkerTypes().iterator();
while (allIterator.hasNext()) {
MarkerType next = allIterator.next();
allTypesTable.put(next.getId(), next);
@@ -277,5 +314,28 @@ public void initializeFromConfigurationElement(
*/
public void removeExtension(IConfigurationElement element) {
generatorExtensions.remove(element);
+ clearCaches();
}
+
+ private void clearCaches() {
+ allFieldsWithExtensions = null;
+ initialVisibleWithExtensions = null;
+ markerTypes = null;
+ groups = null;
+ allTypesTable = null;
+ }
+
+ private Stream getExtensionsDescriptorsStream() {
+ if (generatorExtensions != null) {
+ MarkerSupportRegistry registry = MarkerSupportRegistry.getInstance();
+ return generatorExtensions.stream()
+ .map(extensionConfigElem -> extensionConfigElem
+ .getAttribute(MarkerSupportInternalUtilities.ATTRIBUTE_ID))
+ .filter(id -> id != null && !id.isBlank())
+ .map(contentGeneratorId -> registry.getContentGenDescriptor(contentGeneratorId))
+ .filter(generator -> generator != null);
+ }
+ return Stream.empty();
+ }
+
}
diff --git a/bundles/org.eclipse.ui.navigator.resources/META-INF/MANIFEST.MF b/bundles/org.eclipse.ui.navigator.resources/META-INF/MANIFEST.MF
index 4f37678762d..52eee57bc2d 100644
--- a/bundles/org.eclipse.ui.navigator.resources/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.ui.navigator.resources/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %Plugin.name
Bundle-SymbolicName: org.eclipse.ui.navigator.resources; singleton:=true
-Bundle-Version: 3.9.400.qualifier
+Bundle-Version: 3.9.600.qualifier
Bundle-Activator: org.eclipse.ui.internal.navigator.resources.plugin.WorkbenchNavigatorPlugin
Bundle-Vendor: %Plugin.providerName
Bundle-Localization: plugin
diff --git a/bundles/org.eclipse.ui.navigator.resources/src/org/eclipse/ui/internal/navigator/resources/actions/ResourceMgmtActionProvider.java b/bundles/org.eclipse.ui.navigator.resources/src/org/eclipse/ui/internal/navigator/resources/actions/ResourceMgmtActionProvider.java
index a8fcea10af4..5804c1d7241 100644
--- a/bundles/org.eclipse.ui.navigator.resources/src/org/eclipse/ui/internal/navigator/resources/actions/ResourceMgmtActionProvider.java
+++ b/bundles/org.eclipse.ui.navigator.resources/src/org/eclipse/ui/internal/navigator/resources/actions/ResourceMgmtActionProvider.java
@@ -18,7 +18,6 @@
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.Collections;
-import java.util.Iterator;
import java.util.List;
import org.eclipse.core.resources.ICommand;
@@ -114,20 +113,16 @@ public void fillActionBars(IActionBars actionBars) {
@Override
public void fillContextMenu(IMenuManager menu) {
IStructuredSelection selection = (IStructuredSelection) getContext().getSelection();
- boolean isProjectSelection = true;
boolean hasOpenProjects = false;
boolean hasClosedProjects = false;
- boolean hasBuilder = true; // false if any project is closed or does not
- // have builder
+ boolean hasBuilder = true; // false if any project is closed or does not have builder
+ List projects = selectionToProjects(selection);
+ boolean selectionContainsNonProject = projects.size() < selection.size();
- Iterator projects = selectionToProjects(selection).iterator();
-
- while (projects.hasNext() && (!hasOpenProjects || !hasClosedProjects || hasBuilder || isProjectSelection)) {
- IProject project = projects.next();
-
- if (project == null) {
- isProjectSelection = false;
- continue;
+ for (IProject project : projects) {
+ if (hasOpenProjects && hasClosedProjects && !hasBuilder) {
+ // we've set all booleans of interest; no need to loop any further
+ break;
}
if (project.isOpen()) {
hasOpenProjects = true;
@@ -139,30 +134,29 @@ public void fillContextMenu(IMenuManager menu) {
hasBuilder = false;
}
}
- if (!selection.isEmpty() && isProjectSelection && !ResourcesPlugin.getWorkspace().isAutoBuilding()
+ if (!selection.isEmpty() && !ResourcesPlugin.getWorkspace().isAutoBuilding()
&& hasBuilder) {
// Allow manual incremental build only if auto build is off.
buildAction.selectionChanged(selection);
menu.appendToGroup(ICommonMenuConstants.GROUP_BUILD, buildAction);
}
- // Add the 'refresh' item if any selection is either (a) an open project, or (b)
- // a non-project selection (so the 'refresh' item is not shown if all selections
- // are closed projects)
- if (hasOpenProjects || !isProjectSelection) {
+ // Add the 'refresh' item if ANY selection is either (a) an open project, or (b)
+ // a non-project selection.
+ // Put another way: the 'refresh' item is NOT shown if ALL selections are closed
+ // projects.
+ if (hasOpenProjects || selectionContainsNonProject) {
refreshAction.selectionChanged(selection);
menu.appendToGroup(ICommonMenuConstants.GROUP_BUILD, refreshAction);
}
- if (isProjectSelection) {
- if (hasClosedProjects) {
- openProjectAction.selectionChanged(selection);
- menu.appendToGroup(ICommonMenuConstants.GROUP_BUILD, openProjectAction);
- }
- if (hasOpenProjects) {
- closeProjectAction.selectionChanged(selection);
- menu.appendToGroup(ICommonMenuConstants.GROUP_BUILD, closeProjectAction);
- closeUnrelatedProjectsAction.selectionChanged(selection);
- menu.appendToGroup(ICommonMenuConstants.GROUP_BUILD, closeUnrelatedProjectsAction);
- }
+ if (hasClosedProjects) {
+ openProjectAction.selectionChanged(selection);
+ menu.appendToGroup(ICommonMenuConstants.GROUP_BUILD, openProjectAction);
+ }
+ if (hasOpenProjects) {
+ closeProjectAction.selectionChanged(selection);
+ menu.appendToGroup(ICommonMenuConstants.GROUP_BUILD, closeProjectAction);
+ closeUnrelatedProjectsAction.selectionChanged(selection);
+ menu.appendToGroup(ICommonMenuConstants.GROUP_BUILD, closeUnrelatedProjectsAction);
}
}
diff --git a/bundles/org.eclipse.ui.navigator.resources/src/org/eclipse/ui/internal/navigator/resources/actions/WorkingSetActionProvider.java b/bundles/org.eclipse.ui.navigator.resources/src/org/eclipse/ui/internal/navigator/resources/actions/WorkingSetActionProvider.java
index 5dcf02e7325..48fb4040805 100644
--- a/bundles/org.eclipse.ui.navigator.resources/src/org/eclipse/ui/internal/navigator/resources/actions/WorkingSetActionProvider.java
+++ b/bundles/org.eclipse.ui.navigator.resources/src/org/eclipse/ui/internal/navigator/resources/actions/WorkingSetActionProvider.java
@@ -329,6 +329,9 @@ public void restoreState(final IMemento aMemento) {
// Need to run this async to avoid being reentered when processing a selection change
viewer.getControl().getShell().getDisplay().asyncExec(() -> {
+ if (viewer.getControl().isDisposed()) {
+ return;
+ }
boolean showWorkingSets = true;
if (aMemento != null) {
Integer showWorkingSetsInt = aMemento
diff --git a/bundles/org.eclipse.ui.navigator.resources/src/org/eclipse/ui/internal/navigator/workingsets/WorkingSetSorter.java b/bundles/org.eclipse.ui.navigator.resources/src/org/eclipse/ui/internal/navigator/workingsets/WorkingSetSorter.java
index d2310a75799..68478519fca 100644
--- a/bundles/org.eclipse.ui.navigator.resources/src/org/eclipse/ui/internal/navigator/workingsets/WorkingSetSorter.java
+++ b/bundles/org.eclipse.ui.navigator.resources/src/org/eclipse/ui/internal/navigator/workingsets/WorkingSetSorter.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2006, 2016 IBM Corporation and others.
+ * Copyright (c) 2006, 2024 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -21,12 +21,12 @@
import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.StructuredViewer;
import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.viewers.ViewerSorter;
+import org.eclipse.jface.viewers.ViewerComparator;
/**
* @since 3.2
*/
-public class WorkingSetSorter extends ViewerSorter {
+public class WorkingSetSorter extends ViewerComparator {
@Override
public int compare(Viewer viewer, Object e1, Object e2) {
@@ -36,15 +36,14 @@ public int compare(Viewer viewer, Object e1, Object e2) {
} else if (e2 == WorkingSetsContentProvider.OTHERS_WORKING_SET) {
return -1;
}
- if(viewer instanceof StructuredViewer) {
- ILabelProvider labelProvider = (ILabelProvider) ((StructuredViewer) viewer).getLabelProvider();
+ if (viewer instanceof StructuredViewer sViewer) {
+ ILabelProvider labelProvider = (ILabelProvider) sViewer.getLabelProvider();
- if (labelProvider instanceof DecoratingStyledCellLabelProvider) {
+ if (labelProvider instanceof DecoratingStyledCellLabelProvider dprov) {
// Bug 512637: use the real label provider to avoid unstable
// sort behavior if the decoration is running while sorting.
// decorations are usually visual aids to the user and
// shouldn't be used in ordering.
- DecoratingStyledCellLabelProvider dprov = (DecoratingStyledCellLabelProvider) labelProvider;
IStyledLabelProvider styledLabelProvider = dprov.getStyledStringProvider();
String text1 = styledLabelProvider.getStyledText(e1).getString();
String text2 = styledLabelProvider.getStyledText(e2).getString();
@@ -54,12 +53,11 @@ public int compare(Viewer viewer, Object e1, Object e2) {
return -1;
}
- if (labelProvider instanceof DecoratingLabelProvider) {
+ if (labelProvider instanceof DecoratingLabelProvider dprov) {
// Bug 364735: use the real label provider to avoid unstable
// sort behavior if the decoration is running while sorting.
// decorations are usually visual aids to the user and
// shouldn't be used in ordering.
- DecoratingLabelProvider dprov = (DecoratingLabelProvider) labelProvider;
labelProvider = dprov.getLabelProvider();
}
diff --git a/bundles/org.eclipse.ui.themes/META-INF/MANIFEST.MF b/bundles/org.eclipse.ui.themes/META-INF/MANIFEST.MF
index 0338462b268..59abbfd238a 100644
--- a/bundles/org.eclipse.ui.themes/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.ui.themes/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %Plugin.name
Bundle-SymbolicName: org.eclipse.ui.themes;singleton:=true
-Bundle-Version: 1.2.2600.qualifier
+Bundle-Version: 1.2.2700.qualifier
Bundle-Vendor: %Plugin.providerName
Bundle-Localization: plugin
Require-Bundle: org.eclipse.e4.ui.css.swt.theme
diff --git a/bundles/org.eclipse.ui.themes/css/dark/e4-dark_ide_colorextensions.css b/bundles/org.eclipse.ui.themes/css/dark/e4-dark_ide_colorextensions.css
index e0304a3b7d4..bab4f2efab1 100644
--- a/bundles/org.eclipse.ui.themes/css/dark/e4-dark_ide_colorextensions.css
+++ b/bundles/org.eclipse.ui.themes/css/dark/e4-dark_ide_colorextensions.css
@@ -50,7 +50,8 @@ ThemesExtension { color-definition:
}
ColorDefinition#org-eclipse-ui-workbench-DARK_BACKGROUND {
- color: #515658;
+ /* color: #515658; */
+ color: #48484c;
category: '#org-eclipse-ui-presentation-default';
label: url('platform:/plugin/org.eclipse.ui.themes?message=DARK_BACKGROUND');
}
@@ -122,31 +123,31 @@ ColorDefinition#org-eclipse-ui-workbench-INACTIVE_TAB_SELECTED_TEXT_COLOR {
}
ColorDefinition#org-eclipse-ui-workbench-ACTIVE_UNSELECTED_TABS_COLOR_START {
- color: #494A4D;
+ color: #49484C;
category: '#org-eclipse-ui-presentation-default';
label: url('platform:/plugin/org.eclipse.ui.themes?message=ACTIVE_UNSELECTED_TABS_COLOR_START');
}
ColorDefinition#org-eclipse-ui-workbench-ACTIVE_UNSELECTED_TABS_COLOR_END {
- color: #404043;
+ color: #48484C;
category: '#org-eclipse-ui-presentation-default';
label: url('platform:/plugin/org.eclipse.ui.themes?message=ACTIVE_UNSELECTED_TABS_COLOR_END');
}
ColorDefinition#org-eclipse-ui-workbench-ACTIVE_TAB_BG_START {
- color: #2B2C2D;
+ color: #48484C;
category: '#org-eclipse-ui-presentation-default';
label: url('platform:/plugin/org.eclipse.ui.themes?message=ACTIVE_TAB_BG_START');
}
ColorDefinition#org-eclipse-ui-workbench-ACTIVE_TAB_BG_END {
- color: #292929;
+ color: #48484C;
category: '#org-eclipse-ui-presentation-default';
label: url('platform:/plugin/org.eclipse.ui.themes?message=ACTIVE_TAB_BG_END');
}
ColorDefinition#org-eclipse-ui-workbench-ACTIVE_TAB_OUTER_KEYLINE_COLOR {
- color: #4B4C4F;
+ color: #646464;
category: '#org-eclipse-ui-presentation-default';
label: url('platform:/plugin/org.eclipse.ui.themes?message=ACTIVE_TAB_OUTER_KEYLINE_COLOR');
}
@@ -158,25 +159,25 @@ ColorDefinition#org-eclipse-ui-workbench-ACTIVE_TAB_INNER_KEYLINE_COLOR {
}
ColorDefinition#org-eclipse-ui-workbench-ACTIVE_TAB_OUTLINE_COLOR {
- color: #4B4C4F;
+ color:#646464;
category: '#org-eclipse-ui-presentation-default';
label: url('platform:/plugin/org.eclipse.ui.themes?message=ACTIVE_TAB_OUTLINE_COLOR');
}
ColorDefinition#org-eclipse-ui-workbench-ACTIVE_TAB_TEXT_COLOR {
- color: #DDDDDD;
+ color: #BBBBBB;
category: '#org-eclipse-ui-presentation-default';
label: url('platform:/plugin/org.eclipse.ui.themes?message=ACTIVE_TAB_TEXT_COLOR');
}
ColorDefinition#org-eclipse-ui-workbench-ACTIVE_TAB_UNSELECTED_TEXT_COLOR {
- color: #DDDDDD;
+ color: #BBBBBB;
category: '#org-eclipse-ui-presentation-default';
label: url('platform:/plugin/org.eclipse.ui.themes?message=ACTIVE_TAB_UNSELECTED_TEXT_COLOR');
}
ColorDefinition#org-eclipse-ui-workbench-ACTIVE_TAB_SELECTED_TEXT_COLOR {
- color: #f7f8f8;
+ color: #FFFFFF;
category: '#org-eclipse-ui-presentation-default';
label: url('platform:/plugin/org.eclipse.ui.themes?message=ACTIVE_TAB_SELECTED_TEXT_COLOR');
}
@@ -194,13 +195,13 @@ ColorDefinition#org-eclipse-ui-workbench-ACTIVE_NOFOCUS_TAB_BG_END {
}
ColorDefinition#org-eclipse-ui-workbench-ACTIVE_NOFOCUS_TAB_TEXT_COLOR {
- color: #CCCCCC;
+ color: #FFFFFF;
category: '#org-eclipse-ui-presentation-default';
label: url('platform:/plugin/org.eclipse.ui.themes?message=ACTIVE_NOFOCUS_TAB_TEXT_COLOR');
}
ColorDefinition#org-eclipse-ui-workbench-ACTIVE_NOFOCUS_TAB_SELECTED_TEXT_COLOR {
- color: #CCCCCC;
+ color: #FFFFFF;
category: '#org-eclipse-ui-presentation-default';
label: url('platform:/plugin/org.eclipse.ui.themes?message=ACTIVE_NOFOCUS_TAB_SELECTED_TEXT_COLOR');
}
diff --git a/bundles/org.eclipse.ui.themes/css/dark/e4-dark_preferencestyle.css b/bundles/org.eclipse.ui.themes/css/dark/e4-dark_preferencestyle.css
index e08713009f9..6e74b61901a 100644
--- a/bundles/org.eclipse.ui.themes/css/dark/e4-dark_preferencestyle.css
+++ b/bundles/org.eclipse.ui.themes/css/dark/e4-dark_preferencestyle.css
@@ -22,7 +22,7 @@ IEclipsePreferences#org-eclipse-ui-editors:org-eclipse-ui-themes { /* pseudo att
'AbstractTextEditor.Color.Background.SystemDefault=false'
'AbstractTextEditor.Color.SelectionForeground.SystemDefault=false'
'AbstractTextEditor.Color.SelectionBackground.SystemDefault=false'
- 'AbstractTextEditor.Color.Background=47,47,47'
+ 'AbstractTextEditor.Color.Background=30,31,34'
'AbstractTextEditor.Color.Foreground.SystemDefault=false'
'AbstractTextEditor.Color.SelectionBackground=33,66,131'
'AbstractTextEditor.Color.SelectionForeground=147,161,161'
diff --git a/bundles/org.eclipse.ui.themes/css/dark/e4-dark_tabstyle.css b/bundles/org.eclipse.ui.themes/css/dark/e4-dark_tabstyle.css
index 7f5f5fb6ae3..1f6940f5634 100644
--- a/bundles/org.eclipse.ui.themes/css/dark/e4-dark_tabstyle.css
+++ b/bundles/org.eclipse.ui.themes/css/dark/e4-dark_tabstyle.css
@@ -40,12 +40,11 @@ CTabFolder {
CTabFolder[style~='SWT.DOWN'][style~='SWT.BOTTOM'] {
/* Set the styles for the bottom inner tabs (Bug 430051): */
swt-tab-renderer: url('bundleclass://org.eclipse.e4.ui.workbench.renderers.swt/org.eclipse.e4.ui.workbench.renderers.swt.CTabRendering');
- swt-unselected-hot-tab-color-background: #161616; /* Bug 465711 */
+ swt-unselected-hot-tab-color-background: #161616;/* Bug 465711 */
swt-selected-tab-highlight: #316c9b;
swt-selected-highlight-top: false;
}
-
CTabFolder.active {
swt-selected-tab-highlight: #316c9b;
swt-selected-highlight-top: false;
diff --git a/bundles/org.eclipse.ui.themes/css/e4-dark_linux.css b/bundles/org.eclipse.ui.themes/css/e4-dark_linux.css
index 3f9bf6cd768..346a75f553b 100644
--- a/bundles/org.eclipse.ui.themes/css/e4-dark_linux.css
+++ b/bundles/org.eclipse.ui.themes/css/e4-dark_linux.css
@@ -45,3 +45,76 @@ ImageBasedFrame,
#org-eclipse-ui-ProgressBar Canvas {
color:'#org-eclipse-ui-workbench-DARK_FOREGROUND';
}
+
+.MPart Form Section,
+.MPart Form Label,
+.MPart Form FormText,
+.MPartStack .MPart Form MasterDetailsBlock-MDSashForm,
+.MPartStack .MPart Form SashForm,
+.MPartStack .MPart Form Sash,
+.MPart Form Button[style~='SWT.CHECK'],
+.MPart Form Button[style~='SWT.RADIO'],
+.MPartStack.active .MPart Form Section,
+.MPartStack.active .MPart Form Label,
+.MPartStack.active .MPart Form FormText,
+.MPartStack.active .MPart Form MasterDetailsBlock-MDSashForm,
+.MPartStack.active .MPart Form SashForm,
+.MPartStack.active .MPart Form Sash,
+.MPartStack.active .MPart Form Button[style~='SWT.CHECK'],
+.MPartStack.active .MPart Form Button[style~='SWT.RADIO']
+{
+ background-color: inherit;
+ color: #f4f7f7;
+}
+
+/* Inactive view tabs */
+.MPartStack{
+ swt-selected-tab-highlight: #a6a6a6;
+ swt-selected-highlight-top: false;
+ swt-draw-custom-tab-content-background: true;
+ swt-unselected-hot-tab-color-background: #161616;
+}
+
+.MPartStack.active {
+ swt-selected-tab-highlight: #2b79d7;
+ swt-selected-highlight-top: false;
+}
+
+.MPartStack CTabFolder[style~='SWT.DOWN'][style~='SWT.BOTTOM'] {
+ /* Set the styles for the bottom inner tabs (Bug 430051): */
+ swt-tab-renderer: url('bundleclass://org.eclipse.e4.ui.workbench.renderers.swt/org.eclipse.e4.ui.workbench.renderers.swt.CTabRendering');
+ swt-unselected-hot-tab-color-background: #161616;/* Bug 465711 */
+ swt-selected-tab-highlight: #a6a6a6;
+ swt-selected-highlight-top: true;
+}
+.MPartStack.active CTabFolder[style~='SWT.DOWN'][style~='SWT.BOTTOM'] {
+ /* Set the styles for the bottom inner tabs (Bug 430051): */
+ swt-tab-renderer: url('bundleclass://org.eclipse.e4.ui.workbench.renderers.swt/org.eclipse.e4.ui.workbench.renderers.swt.CTabRendering');
+ swt-unselected-hot-tab-color-background: #161616;/* Bug 465711 */
+ swt-selected-tab-highlight: #2b97d7;
+ swt-selected-highlight-top: true;
+}
+
+/*text color of selected tab in editor */
+#org-eclipse-ui-editorss CTabItem:selected{
+ color: '#FFFFFF';
+}
+
+#org-eclipse-ui-editorss CTabFolder{
+ swt-selected-tab-fill : '#1E1F22';
+ swt-selected-highlight-top: true;
+ swt-draw-custom-tab-content-background: true;
+ swt-unselected-hot-tab-color-background:#161616;
+}
+
+#org-eclipse-ui-editorss CTabFolder.active {
+ swt-selected-tab-highlight: '#2b79d7';
+ swt-selected-highlight-top: true;
+}
+
+.Editor Form Composite,
+.Editor Form Composite Tree,
+.MPartStack.active .Editor Form Composite Tree
+{
+ background-color: #1E1F22;
+}
\ No newline at end of file
diff --git a/bundles/org.eclipse.ui.themes/css/e4-dark_mac.css b/bundles/org.eclipse.ui.themes/css/e4-dark_mac.css
index 9652be238bc..4e4cc742098 100644
--- a/bundles/org.eclipse.ui.themes/css/e4-dark_mac.css
+++ b/bundles/org.eclipse.ui.themes/css/e4-dark_mac.css
@@ -53,3 +53,54 @@ Button {
color: unset;
}
+/* Inactive view tabs */
+.MPartStack{
+ swt-selected-tab-highlight: #a6a6a6;
+ swt-selected-highlight-top: false;
+ swt-draw-custom-tab-content-background: true;
+ swt-unselected-hot-tab-color-background: #161616;
+}
+
+.MPartStack.active {
+ swt-selected-tab-highlight: #2b79d7;
+ swt-selected-highlight-top: false;
+}
+
+.MPartStack CTabFolder[style~='SWT.DOWN'][style~='SWT.BOTTOM'] {
+ /* Set the styles for the bottom inner tabs (Bug 430051): */
+ swt-tab-renderer: url('bundleclass://org.eclipse.e4.ui.workbench.renderers.swt/org.eclipse.e4.ui.workbench.renderers.swt.CTabRendering');
+ swt-unselected-hot-tab-color-background: #161616;/* Bug 465711 */
+ swt-selected-tab-highlight: #a6a6a6;
+ swt-selected-highlight-top: true;
+}
+.MPartStack.active CTabFolder[style~='SWT.DOWN'][style~='SWT.BOTTOM'] {
+ /* Set the styles for the bottom inner tabs (Bug 430051): */
+ swt-tab-renderer: url('bundleclass://org.eclipse.e4.ui.workbench.renderers.swt/org.eclipse.e4.ui.workbench.renderers.swt.CTabRendering');
+ swt-unselected-hot-tab-color-background: #161616;/* Bug 465711 */
+ swt-selected-tab-highlight: #2b97d7;
+ swt-selected-highlight-top: true;
+}
+
+/*text color of selected tab in editor */
+#org-eclipse-ui-editorss CTabItem:selected{
+ color: '#FFFFFF';
+}
+
+#org-eclipse-ui-editorss CTabFolder{
+ swt-selected-tab-fill : '#1E1F22';
+ swt-selected-highlight-top: true;
+ swt-draw-custom-tab-content-background: true;
+ swt-unselected-hot-tab-color-background:#161616;
+}
+
+#org-eclipse-ui-editorss CTabFolder.active {
+ swt-selected-tab-highlight: '#2b79d7';
+ swt-selected-highlight-top: true;
+}
+
+.Editor Form Composite,
+.Editor Form Composite Tree,
+.MPartStack.active .Editor Form Composite Tree
+{
+ background-color: #1E1F22;
+}
\ No newline at end of file
diff --git a/bundles/org.eclipse.ui.themes/css/e4-dark_win.css b/bundles/org.eclipse.ui.themes/css/e4-dark_win.css
index e9787311a9c..301c680ef8f 100644
--- a/bundles/org.eclipse.ui.themes/css/e4-dark_win.css
+++ b/bundles/org.eclipse.ui.themes/css/e4-dark_win.css
@@ -135,3 +135,54 @@ ImageBasedFrame,
color: #DDDDDD;
}
+/* Inactive view tabs */
+.MPartStack{
+ swt-selected-tab-highlight: #a6a6a6;
+ swt-selected-highlight-top: false;
+ swt-draw-custom-tab-content-background: true;
+ swt-unselected-hot-tab-color-background: #161616;
+}
+
+.MPartStack.active {
+ swt-selected-tab-highlight: #2b79d7;
+ swt-selected-highlight-top: false;
+}
+
+.MPartStack CTabFolder[style~='SWT.DOWN'][style~='SWT.BOTTOM'] {
+ /* Set the styles for the bottom inner tabs (Bug 430051): */
+ swt-tab-renderer: url('bundleclass://org.eclipse.e4.ui.workbench.renderers.swt/org.eclipse.e4.ui.workbench.renderers.swt.CTabRendering');
+ swt-unselected-hot-tab-color-background: #161616;/* Bug 465711 */
+ swt-selected-tab-highlight: #a6a6a6;
+ swt-selected-highlight-top: true;
+}
+.MPartStack.active CTabFolder[style~='SWT.DOWN'][style~='SWT.BOTTOM'] {
+ /* Set the styles for the bottom inner tabs (Bug 430051): */
+ swt-tab-renderer: url('bundleclass://org.eclipse.e4.ui.workbench.renderers.swt/org.eclipse.e4.ui.workbench.renderers.swt.CTabRendering');
+ swt-unselected-hot-tab-color-background: #161616;/* Bug 465711 */
+ swt-selected-tab-highlight: #2b97d7;
+ swt-selected-highlight-top: true;
+}
+
+/*text color of selected tab in editor */
+#org-eclipse-ui-editorss CTabItem:selected{
+ color: '#FFFFFF';
+}
+
+#org-eclipse-ui-editorss CTabFolder{
+ swt-selected-tab-fill : '#1E1F22';
+ swt-selected-highlight-top: true;
+ swt-draw-custom-tab-content-background: true;
+ swt-unselected-hot-tab-color-background:#161616;
+}
+
+#org-eclipse-ui-editorss CTabFolder.active {
+ swt-selected-tab-highlight: '#2b79d7';
+ swt-selected-highlight-top: true;
+}
+
+.Editor Form Composite,
+.Editor Form Composite Tree,
+.MPartStack.active .Editor Form Composite Tree
+{
+ background-color: #1E1F22;
+}
diff --git a/bundles/org.eclipse.ui.themes/css/e4_basestyle_preview.css b/bundles/org.eclipse.ui.themes/css/e4_basestyle_preview.css
deleted file mode 100644
index 641058cea44..00000000000
--- a/bundles/org.eclipse.ui.themes/css/e4_basestyle_preview.css
+++ /dev/null
@@ -1,20 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2024 SAP SE 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
- *
- * Contributors:
- * SAP SE - initial implementation
- *******************************************************************************/
-
-@import url("platform:/plugin/org.eclipse.ui.themes/css/common/e4_globalstyle.css");
-@import url("platform:/plugin/org.eclipse.ui.themes/css/light/e4-light_globalstyle.css");
-@import url("platform:/plugin/org.eclipse.ui.themes/css/light/e4-light_ide_colorextensions.css");
-@import url("platform:/plugin/org.eclipse.ui.themes/css/light/e4-light_partstyle.css");
-@import url("platform:/plugin/org.eclipse.ui.themes/css/light/e4-light_tabstyle_preview.css");
-@import url("platform:/plugin/org.eclipse.ui.themes/css/light/e4-light-drag-styling.css");
diff --git a/bundles/org.eclipse.ui.themes/css/e4_default_gtk.css b/bundles/org.eclipse.ui.themes/css/e4_default_gtk.css
index 607c0e78846..195c9a78739 100644
--- a/bundles/org.eclipse.ui.themes/css/e4_default_gtk.css
+++ b/bundles/org.eclipse.ui.themes/css/e4_default_gtk.css
@@ -13,74 +13,103 @@
* Lars Vogel - Bug 420836
* Mickael Istria - 325937
* Patrik Suzzi - Bug 501250
+ * SAP SE - light theme improvements
*******************************************************************************/
@import url("platform:/plugin/org.eclipse.ui.themes/css/e4_basestyle.css");
ColorDefinition#org-eclipse-ui-workbench-ACTIVE_UNSELECTED_TABS_COLOR_START {
- color: #E1DEDB;
+ color: #f8f8f8; /* same as '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND' cannot use it directly*/
}
ColorDefinition#org-eclipse-ui-workbench-ACTIVE_UNSELECTED_TABS_COLOR_END {
- color: #E1DEDB;
+ color: #F8F8F8; /* same as '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND' cannot use it directly*/
}
ColorDefinition#org-eclipse-ui-workbench-ACTIVE_TAB_OUTER_KEYLINE_COLOR {
- color: #CDC7C2;
+ color: #e5e5e5;
}
ColorDefinition#org-eclipse-ui-workbench-ACTIVE_TAB_INNER_KEYLINE_COLOR {
- color: #CDC7C2;
+ color: #f8f8f8; /* same as '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND' cannot use it directly*/
}
ColorDefinition#org-eclipse-ui-workbench-ACTIVE_TAB_OUTLINE_COLOR {
- color: #CDC7C2;
+ color: #e5e5e5;
}
ColorDefinition#org-eclipse-ui-workbench-INACTIVE_UNSELECTED_TABS_COLOR_START {
- color: #EAE8E6;
+ color: #f8f8f8; /* same as '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND' cannot use it directly*/
}
ColorDefinition#org-eclipse-ui-workbench-INACTIVE_UNSELECTED_TABS_COLOR_END {
- color: #EAE8E6;
+ color: #f8f8f8; /* same as '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND' cannot use it directly*/
}
ColorDefinition#org-eclipse-ui-workbench-INACTIVE_TAB_OUTER_KEYLINE_COLOR {
- color: #D5D0CC;
+ color: #e5e5e5;
}
ColorDefinition#org-eclipse-ui-workbench-INACTIVE_TAB_INNER_KEYLINE_COLOR {
- color: #D5D0CC;
+ color: #f8f8f8; /* same as '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND' cannot use it directly*/
}
ColorDefinition#org-eclipse-ui-workbench-INACTIVE_TAB_OUTLINE_COLOR {
- color: #D5D0CC;
+ color: #e5e5e5;
}
ColorDefinition#org-eclipse-ui-workbench-INACTIVE_TAB_BG_START {
- color: #F6F5F4;
+ color: #f8f8f8; /* same as '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND' cannot use it directly*/
}
ColorDefinition#org-eclipse-ui-workbench-INACTIVE_TAB_BG_END {
- color: #F6F5F4;
+ color: #f8f8f8; /* same as '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND' cannot use it directly*/
+}
+
+ColorDefinition#org-eclipse-ui-workbench-ACTIVE_TAB_BG_START{
+ color: #f8f8f8; /* same as '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND' cannot use it directly*/
+}
+
+ColorDefinition#org-eclipse-ui-workbench-ACTIVE_TAB_BG_END {
+ color: #f8f8f8; /* same as '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND' cannot use it directly*/
}
ColorDefinition#org-eclipse-ui-workbench-INACTIVE_NOFOCUS_TAB_BG_START {
- color: #EAE8E6;
+ color: #f8f8f8; /* same as '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND' cannot use it directly*/
}
ColorDefinition#org-eclipse-ui-workbench-INACTIVE_NOFOCUS_TAB_BG_END {
- color: #EAE8E6;
+ color: #f8f8f8; /* same as '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND' cannot use it directly*/
+}
+
+ColorDefinition#org-eclipse-ui-workbench-ACTIVE_NOFOCUS_TAB_BG_START {
+ color: #f8f8f8; /* same as '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND' cannot use it directly*/
+}
+
+ColorDefinition#org-eclipse-ui-workbench-ACTIVE_NOFOCUS_TAB_BG_END {
+ color: #f8f8f8; /* same as '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND' cannot use it directly*/
+}
+
+ColorDefinition#org-eclipse-ui-workbench-ACTIVE_NOFOCUS_TAB_TEXT_COLOR {
+ color: #000000;
+}
+
+ColorDefinition#org-eclipse-ui-workbench-ACTIVE_TAB_TEXT_COLOR {
+ color: #000000;
+}
+
+ColorDefinition#org-eclipse-ui-workbench-INACTIVE_TAB_TEXT_COLOR {
+ color: #000000;
}
.MTrimmedWindow {
- background-color: #F6F5F4;
+ background-color: #f6f5f4;
}
.MTrimBar {
- background-color: #F6F5F4;
+ background-color: #f6f5f4;
}
.MTrimBar#org-eclipse-ui-main-toolbar {
- background-color: COLOR-WIDGET-BACKGROUND #F6F5F4 100%;
+ background-color: COLOR-WIDGET-BACKGROUND #f6f5f4 100%;
}
.MPartStack {
@@ -88,14 +117,127 @@ ColorDefinition#org-eclipse-ui-workbench-INACTIVE_NOFOCUS_TAB_BG_END {
}
CTabFolder.MArea {
- background-color: #F6F5F4;
- swt-selected-tab-fill: #F6F5F4;
- swt-unselected-tabs-color: #F6F5F4;
- swt-outer-keyline-color: #F6F5F4;
- swt-inner-keyline-color: #F6F5F4;
- swt-tab-outline: #F6F5F4;
+ background-color: '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND';
+ swt-selected-tab-fill: '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND';
+ swt-unselected-tabs-color: '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND';
+ swt-outer-keyline-color: '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND';
+ swt-inner-keyline-color: '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND';
+ swt-tab-outline: #ffffff;
}
CTabFolder Canvas {
- background-color: #F8F7F6;
+ background-color: '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND';
+}
+
+.MTrimBar#org-eclipse-ui-main-toolbar {
+ background-color: '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND';
+}
+
+.MTrimBar#org-eclipse-ui-trim-status {
+ background-color: '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND';
+}
+
+.View Composite,
+.View Composite Tree,
+.View Composite Label,
+.View ToolBar,
+.View Group,
+.View Group Label,
+.View Section,
+.View BusyIndicator,
+.View Text[style~='SWT.READ_ONLY'],
+.View SashForm,
+.View OleFrame,
+.View Browser,
+.View WebSite,
+.View StyledText[style~='SWT.READ_ONLY'],
+.View Link,
+.View FormText,
+.View Hyperlink,
+.View Canvas,
+.View FigureCanvas
+{
+ background-color: '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND';
+}
+
+.View TitleRegion{
+ background-color: '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND';
+}
+
+.MPartStack.active .View TitleRegion{
+ background-color: '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND';
+}
+
+.View Button[style~='SWT.CHECK']{
+ background-color: inherit;
+}
+
+.View Toolbar ToolItem{
+ background-color: #eaeaea;
+}
+
+.View TabbedPropertyList{
+ swt-tabBackground-color: #ffffff;
+}
+
+.View Composite PrependingAsteriskFilteredTree,
+.View PrependingAsteriskFilteredTree Text,
+.View Group Text,
+.View Group Combo,
+.View Composite Text,
+.View Button[style~='SWT.PUSH']{
+ background-color: #ffffff;
+}
+
+.MPartStack{
+ swt-selected-tab-highlight: #8a8a8a;
+ swt-selected-highlight-top: false;
+}
+
+.MPartStack.active {
+ swt-selected-tab-highlight: #2160bb;
+ swt-selected-highlight-top: false;
+}
+
+/* text color and background color of unselected tabs in editor*/
+#org-eclipse-ui-editorss CTabItem{
+ color: #000000;
+ background-color: #f8f8f8;
+}
+
+/*text color and background color of selected tab in editor */
+#org-eclipse-ui-editorss CTabItem:selected{
+ color: #000000;
+ background-color: #ffffff;
+}
+
+#org-eclipse-ui-editorss CTabFolder{
+ swt-selected-tab-fill : #ffffff;
+ swt-selected-tab-highlight: #8a8a8a;
+ swt-selected-highlight-top: true;
+ swt-tab-outline:#e5e5e5;
+ swt-tab-outer-keyline: #e5e5e5;
+ swt-draw-custom-tab-content-background: true;
+ swt-unselected-hot-tab-color-background:#ffffff;
+}
+
+#org-eclipse-ui-editorss CTabFolder.active {
+ swt-selected-tab-highlight: #2160bb;
+ swt-selected-highlight-top: true;
+}
+
+#org-eclipse-e4-ui-compatibility-editor Composite{
+ background-color: #ffffff;
+}
+
+Composite.MPartSashContainer{
+ background-color: '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND';
+}
+
+Composite.MArea{
+ background-color: #ffffff;
+}
+
+.MPart CTabFolder{
+ swt-outer-keyline-color: #ffffff;
}
diff --git a/bundles/org.eclipse.ui.themes/css/e4_default_mac.css b/bundles/org.eclipse.ui.themes/css/e4_default_mac.css
index 157aaff6450..542766200ef 100644
--- a/bundles/org.eclipse.ui.themes/css/e4_default_mac.css
+++ b/bundles/org.eclipse.ui.themes/css/e4_default_mac.css
@@ -13,93 +13,204 @@
* Lars Vogel - Bug 420836
* Patrik Suzzi - Bug 497591, 501250, 512385
* Ingo Mohr - Bug 566842
+ * SAP SE - light theme improvements
*******************************************************************************/
@import url("platform:/plugin/org.eclipse.ui.themes/css/e4_basestyle.css");
ColorDefinition#org-eclipse-ui-workbench-ACTIVE_UNSELECTED_TABS_COLOR_START {
- color: rgb(255, 255, 255);
+ color: #f8f8f8; /* same as '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND' cannot use it directly*/
}
ColorDefinition#org-eclipse-ui-workbench-ACTIVE_UNSELECTED_TABS_COLOR_END {
- color: rgb(255, 255, 255);
+ color: #f8f8f8; /* same as '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND' cannot use it directly*/
}
ColorDefinition#org-eclipse-ui-workbench-INACTIVE_UNSELECTED_TABS_COLOR_START {
- color: rgb(255, 255, 255);
+ color: #f8f8f8; /* same as '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND' cannot use it directly*/
}
ColorDefinition#org-eclipse-ui-workbench-INACTIVE_UNSELECTED_TABS_COLOR_END {
- color: rgb(255, 255, 255);
+ color: #f8f8f8; /* same as '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND' cannot use it directly*/
}
ColorDefinition#org-eclipse-ui-workbench-ACTIVE_TAB_OUTER_KEYLINE_COLOR {
- color: rgb(230, 230, 230);
+ color: #eaeaea;
+}
+
+ColorDefinition#org-eclipse-ui-workbench-ACTIVE_TAB_OUTLINE_COLOR {
+ color: #eaeaea;
}
ColorDefinition#org-eclipse-ui-workbench-ACTIVE_TAB_BG_START {
- color: rgb(230, 230, 230);
+ color: #f8f8f8; /* same as '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND' cannot use it directly*/
}
ColorDefinition#org-eclipse-ui-workbench-ACTIVE_TAB_BG_END {
- color: rgb(255, 255, 255);
+ color: #f8f8f8; /* same as '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND' cannot use it directly*/
+}
+
+ColorDefinition#org-eclipse-ui-workbench-INACTIVE_TAB_OUTER_KEYLINE_COLOR {
+ color: #eaeaea;
+}
+
+ColorDefinition#org-eclipse-ui-workbench-INACTIVE_TAB_OUTLINE_COLOR {
+ color: #eaeaea;
}
ColorDefinition#org-eclipse-ui-workbench-INACTIVE_TAB_BG_START {
- color: rgb(240, 240, 240);
+ color: #f8f8f8; /* same as '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND' cannot use it directly*/
}
ColorDefinition#org-eclipse-ui-workbench-INACTIVE_TAB_BG_END {
- color: rgb(255, 255, 255);
+ color: #f8f8f8; /* same as '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND' cannot use it directly*/
+}
+
+ColorDefinition#org-eclipse-ui-workbench-ACTIVE_NOFOCUS_TAB_BG_START {
+ color: #f8f8f8; /* same as '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND' cannot use it directly*/
+}
+
+ColorDefinition#org-eclipse-ui-workbench-ACTIVE_NOFOCUS_TAB_BG_END {
+ color: #f8f8f8; /* same as '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND' cannot use it directly*/
+}
+
+ColorDefinition#org-eclipse-ui-workbench-ACTIVE_NOFOCUS_TAB_TEXT_COLOR {
+ color: #000000;
+}
+
+ColorDefinition#org-eclipse-ui-workbench-ACTIVE_TAB_TEXT_COLOR {
+ color: #000000;
+}
+
+ColorDefinition#org-eclipse-ui-workbench-INACTIVE_TAB_TEXT_COLOR {
+ color: #000000;
}
.MTrimmedWindow {
- background-color: rgb(255, 255, 255);
+ background-color: '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND';
}
.MTrimBar {
- background-color: rgb(255, 255, 255);
+ background-color: '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND';
}
.MTrimBar#org-eclipse-ui-main-toolbar {
- background-color: rgb(255, 255, 255);
+ background-color: '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND';
+}
+
+CTabFolder Canvas {
+ background-color: '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND';
+}
+
+.MTrimBar#org-eclipse-ui-trim-status {
+ background-color: '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND';
+}
+
+.View Composite,
+.View Composite Label,
+.View ToolBar,
+.View Group,
+.View Group Label,
+.View Section,
+.View BusyIndicator,
+.View Text[style~='SWT.READ_ONLY'],
+.View SashForm,
+.View OleFrame,
+.View Browser,
+.View WebSite,
+.View StyledText[style~='SWT.READ_ONLY'],
+.View Link,
+.View FormText,
+.View Hyperlink,
+.View Canvas,
+.View FigureCanvas
+{
+ background-color: '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND';
}
-.MPartStack {
- swt-simple: false;
- swt-unselected-tabs-color: rgb(255, 255, 255);
- swt-outer-keyline-color: rgb(230, 230, 230);
- swt-inner-keyline-color: rgb(200, 200, 200);
- swt-tab-outline: rgb(230, 230, 230);
+.View TitleRegion{
+ background-color: '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND';
}
-.MPartStack.active > Composite {
- swt-selected-tab-fill: '#org-eclipse-ui-workbench-ACTIVE_TAB_BG_START' '#org-eclipse-ui-workbench-ACTIVE_TAB_BG_END' 100% 5%;
- background-color: rgb(255, 255, 255);
+.MPartStack.active .View TitleRegion{
+ background-color: '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND';
+}
+
+.View Button[style~='SWT.CHECK']{
+ background-color: inherit;
+}
+
+.View Toolbar ToolItem{
+ background-color: #eaeaea;
+}
+
+.View TabbedPropertyList{
+ swt-tabBackground-color: #ffffff;
+}
+
+
+.View Composite Tree[swt-lines-visible=false]{
+ background-color: '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND';
+}
+
+.View Composite PrependingAsteriskFilteredTree,
+.View PrependingAsteriskFilteredTree Text,
+.View Group Text,
+.View Group Combo,
+.View Composite Text,
+.View Button[style~='SWT.PUSH']{
+ background-color: #ffffff;
+}
+
+.MPartStack{
+ swt-selected-tab-highlight: #8a8a8a;
+ swt-selected-highlight-top: false;
}
.MPartStack.active {
- swt-tab-outline: rgb(180, 180, 180);
- swt-outer-keyline-color: rgb(180, 180, 180);
+ swt-selected-tab-highlight: #5983c5;
+ swt-selected-highlight-top: false;
}
-CTabFolder.MArea {
- background-color: rgb(255, 255, 255);
- swt-selected-tab-fill: rgb(255, 255, 255);
- swt-unselected-tabs-color: rgb(255, 255, 255);
- swt-outer-keyline-color: rgb(230, 230, 230);
- swt-inner-keyline-color: rgb(230, 230, 230);
- swt-tab-outline: rgb(230, 230, 230);
+/* text color of unselected tabs in editor*/
+#org-eclipse-ui-editorss CTabItem{
+ color: #000000;
+ background-color: '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND';
}
-CTabFolder {
- swt-selected-tabs-background: rgb(255, 255, 255);
+/*text color and background color of selected tab in editor */
+#org-eclipse-ui-editorss CTabItem:selected{
+ color: #000000;
+ background-color: #ffffff;
}
-CTabFolder CTabItem:selected {
- background-color: rgb(230, 230, 230);
+#org-eclipse-ui-editorss CTabFolder{
+ swt-selected-tab-fill : #ffffff;
+ swt-selected-tab-highlight: #8a8a8a;
+ swt-selected-highlight-top: true;
+ swt-tab-outline:#eaeaea;
+ swt-tab-outer-keyline: #eaeaea;
+ swt-draw-custom-tab-content-background: true;
+ swt-unselected-hot-tab-color-background:#ffffff;
}
-CTabFolder Canvas {
- background-color: rgb(255, 255, 255);
+#org-eclipse-ui-editorss CTabFolder.active {
+ swt-selected-tab-highlight: #5983c5;
+ swt-selected-highlight-top: true;
+}
+
+#org-eclipse-e4-ui-compatibility-editor Composite{
+ background-color: #ffffff;
+}
+
+Composite.MPartSashContainer{
+ background-color: '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND';
+}
+
+Composite.MArea{
+ background-color: #ffffff;
+}
+
+.MPart CTabFolder{
+ swt-outer-keyline-color: #ffffff;
}
diff --git a/bundles/org.eclipse.ui.themes/css/e4_default_win.css b/bundles/org.eclipse.ui.themes/css/e4_default_win.css
index 6e66f99f665..5b29c031379 100644
--- a/bundles/org.eclipse.ui.themes/css/e4_default_win.css
+++ b/bundles/org.eclipse.ui.themes/css/e4_default_win.css
@@ -14,48 +14,77 @@
* Frank Appel - Bug 325937
* Patrik Suzzi - Bug 501250
* Pierre-Yves B. - Bug 551462, bug 563079
+ * SAP SE - light theme improvements
*******************************************************************************/
@import url("platform:/plugin/org.eclipse.ui.themes/css/e4_basestyle.css");
ColorDefinition#org-eclipse-ui-workbench-ACTIVE_UNSELECTED_TABS_COLOR_START {
- color: #F2F2F2;
+ color: #f8f8f8; /* same as '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND' cannot use it directly*/
}
ColorDefinition#org-eclipse-ui-workbench-ACTIVE_UNSELECTED_TABS_COLOR_END {
- color: #F0F0F0;
+ color: #f8f8f8; /* same as '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND' cannot use it directly*/
}
ColorDefinition#org-eclipse-ui-workbench-ACTIVE_TAB_OUTER_KEYLINE_COLOR {
- color: #DADADA;
+ color: #e5e5e5;
}
ColorDefinition#org-eclipse-ui-workbench-ACTIVE_TAB_OUTLINE_COLOR {
- color: #DADADA;
+ color: #e5e5e5;
}
ColorDefinition#org-eclipse-ui-workbench-INACTIVE_UNSELECTED_TABS_COLOR_START {
- color: #E8E8E8;
+ color: #f8f8f8; /* same as '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND' cannot use it directly*/
}
ColorDefinition#org-eclipse-ui-workbench-INACTIVE_UNSELECTED_TABS_COLOR_END {
- color: #E4E4E4;
+ color: #f8f8f8; /* same as '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND' cannot use it directly*/
}
ColorDefinition#org-eclipse-ui-workbench-INACTIVE_TAB_OUTER_KEYLINE_COLOR {
- color: #DADADA;
+ color: #e5e5e5;
}
ColorDefinition#org-eclipse-ui-workbench-INACTIVE_TAB_OUTLINE_COLOR {
- color: #DADADA;
+ color: #e5e5e5;
}
ColorDefinition#org-eclipse-ui-workbench-INACTIVE_TAB_BG_START {
- color: #F2F2F2;
+ color: #f8f8f8; /* same as '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND' cannot use it directly*/
}
ColorDefinition#org-eclipse-ui-workbench-INACTIVE_TAB_BG_END {
- color: #F0F0F0;
+ color: #f8f8f8; /* same as '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND' cannot use it directly*/
+}
+
+ColorDefinition#org-eclipse-ui-workbench-ACTIVE_TAB_BG_START{
+ color: #f8f8f8; /* same as '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND' cannot use it directly*/
+}
+
+ColorDefinition#org-eclipse-ui-workbench-ACTIVE_TAB_BG_END {
+ color: #f8f8f8; /* same as '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND' cannot use it directly*/
+}
+
+ColorDefinition#org-eclipse-ui-workbench-ACTIVE_NOFOCUS_TAB_BG_START {
+ color: #f8f8f8; /* same as '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND' cannot use it directly*/
+}
+
+ColorDefinition#org-eclipse-ui-workbench-ACTIVE_NOFOCUS_TAB_BG_END {
+ color: #f8f8f8; /* same as '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND' cannot use it directly*/
+}
+
+ColorDefinition#org-eclipse-ui-workbench-ACTIVE_NOFOCUS_TAB_TEXT_COLOR {
+ color: #000000;
+}
+
+ColorDefinition#org-eclipse-ui-workbench-ACTIVE_TAB_TEXT_COLOR {
+ color: #000000;
+}
+
+ColorDefinition#org-eclipse-ui-workbench-INACTIVE_TAB_TEXT_COLOR {
+ color: #000000;
}
.MPartStack {
@@ -63,14 +92,127 @@ ColorDefinition#org-eclipse-ui-workbench-INACTIVE_TAB_BG_END {
}
CTabFolder.MArea {
- background-color: #F0F0F0;
- swt-selected-tab-fill: #F0F0F0;
- swt-unselected-tabs-color: #F0F0F0;
- swt-outer-keyline-color: #F0F0F0;
- swt-inner-keyline-color: #F0F0F0;
- swt-tab-outline: #F0F0F0;
+ background-color: '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND';
+ swt-selected-tab-fill: '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND';
+ swt-unselected-tabs-color: '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND';
+ swt-outer-keyline-color: '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND';
+ swt-inner-keyline-color: '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND';
+ swt-tab-outline: #ffffff;
}
CTabFolder Canvas {
- background-color: #F8F8F8;
+ background-color: '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND';
+}
+
+.MTrimBar#org-eclipse-ui-main-toolbar {
+ background-color: '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND';
+}
+
+.MTrimBar#org-eclipse-ui-trim-status {
+ background-color: '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND';
+}
+
+.View Composite,
+.View Composite Tree,
+.View Composite Label,
+.View ToolBar,
+.View Group,
+.View Group Label,
+.View Section,
+.View BusyIndicator,
+.View Text[style~='SWT.READ_ONLY'],
+.View SashForm,
+.View OleFrame,
+.View Browser,
+.View WebSite,
+.View StyledText[style~='SWT.READ_ONLY'],
+.View Link,
+.View FormText,
+.View Hyperlink,
+.View Canvas,
+.View FigureCanvas
+{
+ background-color: '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND';
+}
+
+.View TitleRegion{
+ background-color: '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND';
+}
+
+.MPartStack.active .View TitleRegion{
+ background-color: '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND';
+}
+
+.View Button[style~='SWT.CHECK']{
+ background-color: inherit;
+}
+
+.View Toolbar ToolItem{
+ background-color: #eaeaea;
+}
+
+.View TabbedPropertyList{
+ swt-tabBackground-color: #ffffff;
+}
+
+.View Composite PrependingAsteriskFilteredTree,
+.View PrependingAsteriskFilteredTree Text,
+.View Group Text,
+.View Group Combo,
+.View Composite Text,
+.View Button[style~='SWT.PUSH']{
+ background-color: #ffffff;
+}
+
+.MPartStack{
+ swt-selected-tab-highlight: #8a8a8a;
+ swt-selected-highlight-top: false;
+}
+
+.MPartStack.active {
+ swt-selected-tab-highlight: #2160bb;
+ swt-selected-highlight-top: false;
+}
+
+/* text color and background color of unselected tabs in editor*/
+#org-eclipse-ui-editorss CTabItem{
+ color: #000000;
+ background-color: '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND';
+}
+
+/*text color and background color of selected tab in editor */
+#org-eclipse-ui-editorss CTabItem:selected{
+ color: #000000;
+ background-color: #FFFFFF;
+}
+
+#org-eclipse-ui-editorss CTabFolder{
+ swt-selected-tab-fill : #ffffff;
+ swt-selected-tab-highlight: #8a8a8a;
+ swt-selected-highlight-top: true;
+ swt-tab-outline:#e5e5e5;
+ swt-tab-outer-keyline: #e5e5e5;
+ swt-draw-custom-tab-content-background: true;
+ swt-unselected-hot-tab-color-background:#ffffff;
+}
+
+#org-eclipse-ui-editorss CTabFolder.active {
+ swt-selected-tab-highlight: #2160bb;
+ swt-selected-highlight-top: true;
+}
+
+#org-eclipse-e4-ui-compatibility-editor Composite{
+ background-color: #ffffff;
+}
+
+Composite.MPartSashContainer{
+ background-color: '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND';
+}
+
+Composite.MArea{
+ background-color: #ffffff;
+}
+
+.MPart CTabFolder{
+ swt-outer-keyline-color: #ffffff;
}
diff --git a/bundles/org.eclipse.ui.themes/css/e4_preview_gtk.css b/bundles/org.eclipse.ui.themes/css/e4_preview_gtk.css
deleted file mode 100644
index c8dd132df1d..00000000000
--- a/bundles/org.eclipse.ui.themes/css/e4_preview_gtk.css
+++ /dev/null
@@ -1,239 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2024 SAP SE 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
- *
- * Contributors:
- * SAP SE - initial implementation
- *******************************************************************************/
-
-@import url("platform:/plugin/org.eclipse.ui.themes/css/e4_basestyle_preview.css");
-
-ColorDefinition#org-eclipse-ui-workbench-ACTIVE_UNSELECTED_TABS_COLOR_START {
- color: #F8F8F8;
-}
-
-ColorDefinition#org-eclipse-ui-workbench-ACTIVE_UNSELECTED_TABS_COLOR_END {
- color: #F8F8F8;
-}
-
-ColorDefinition#org-eclipse-ui-workbench-ACTIVE_TAB_OUTER_KEYLINE_COLOR {
- color: #E5E5E5;
-}
-ColorDefinition#org-eclipse-ui-workbench-ACTIVE_TAB_INNER_KEYLINE_COLOR {
- color: #f8f8f8;
-}
-ColorDefinition#org-eclipse-ui-workbench-ACTIVE_TAB_OUTLINE_COLOR {
- color: #E5E5E5;
-}
-
-ColorDefinition#org-eclipse-ui-workbench-INACTIVE_UNSELECTED_TABS_COLOR_START {
- color: #F8F8F8;
-}
-
-ColorDefinition#org-eclipse-ui-workbench-INACTIVE_UNSELECTED_TABS_COLOR_END {
- color: #F8F8F8;
-}
-
-ColorDefinition#org-eclipse-ui-workbench-INACTIVE_TAB_OUTER_KEYLINE_COLOR {
- color: #E5E5E5;
-}
-
-ColorDefinition#org-eclipse-ui-workbench-INACTIVE_TAB_INNER_KEYLINE_COLOR {
- color: #f8f8f8;
-}
-
-ColorDefinition#org-eclipse-ui-workbench-INACTIVE_TAB_OUTLINE_COLOR {
- color: #E5E5E5;
-}
-
-ColorDefinition#org-eclipse-ui-workbench-INACTIVE_TAB_BG_START {
- color: #F8F8F8;
-}
-
-ColorDefinition#org-eclipse-ui-workbench-INACTIVE_TAB_BG_END {
- color: #F8F8F8;
-}
-
-ColorDefinition#org-eclipse-ui-workbench-ACTIVE_TAB_BG_START{
- color: #f8f8f8;
-}
-
-ColorDefinition#org-eclipse-ui-workbench-ACTIVE_TAB_BG_END {
- color: #f8f8f8;
-}
-
-ColorDefinition#org-eclipse-ui-workbench-INACTIVE_NOFOCUS_TAB_BG_START {
- color: #f8f8f8;
-}
-
-ColorDefinition#org-eclipse-ui-workbench-INACTIVE_NOFOCUS_TAB_BG_END {
- color: #F8F8F8;
-}
-
-ColorDefinition#org-eclipse-ui-workbench-ACTIVE_NOFOCUS_TAB_BG_START {
- color: #F8F8F8;
-}
-
-ColorDefinition#org-eclipse-ui-workbench-ACTIVE_NOFOCUS_TAB_BG_END {
- color: #F8F8F8;
-}
-
-ColorDefinition#org-eclipse-ui-workbench-ACTIVE_NOFOCUS_TAB_TEXT_COLOR {
- color: #000000;
-}
-
-ColorDefinition#org-eclipse-ui-workbench-ACTIVE_TAB_TEXT_COLOR {
- color: #000000;
-}
-
-ColorDefinition#org-eclipse-ui-workbench-INACTIVE_TAB_TEXT_COLOR {
- color: #000000;
-}
-
-.MTrimmedWindow {
- background-color: #F6F5F4;
-}
-
-.MTrimBar {
- background-color: #F6F5F4;
-}
-
-.MTrimBar#org-eclipse-ui-main-toolbar {
- background-color: COLOR-WIDGET-BACKGROUND #F6F5F4 100%;
-}
-
-.MPartStack {
- swt-simple: false;
-}
-
-CTabFolder.MArea {
- background-color: #f8f8f8;
- swt-selected-tab-fill: #f8f8f8;
- swt-unselected-tabs-color: #f8f8f8;
- swt-outer-keyline-color: #f8f8f8;
- swt-inner-keyline-color: #f8f8f8;
- swt-tab-outline: #ffffff;
-}
-
-CTabFolder Canvas {
- background-color: #ffffff;
-}
-
-.MTrimBar#org-eclipse-ui-main-toolbar {
- background-color: #f8f8f8;
-}
-
-.MTrimBar#org-eclipse-ui-trim-status {
- background-color: #f8f8f8;
-}
-
-.View Composite,
-.View Composite Tree,
-.View Composite Label,
-.View ToolBar,
-.View Group,
-.View Group Label,
-.View Section,
-.View BusyIndicator,
-.View Text[style~='SWT.READ_ONLY'],
-.View SashForm,
-.View OleFrame,
-.View Browser,
-.View WebSite,
-.View StyledText[style~='SWT.READ_ONLY'],
-.View Link,
-.View FormText,
-.View Hyperlink,
-.View Canvas,
-.View FigureCanvas
-{
- background-color: #f8f8f8;
-}
-
-.View TitleRegion{
- background-color:#f8f8f8;
-}
-
-.MPartStack.active .View TitleRegion{
- background-color:#f8f8f8;
-}
-
-.View Button[style~='SWT.CHECK']{
- background-color: inherit;
-}
-
-.View Toolbar ToolItem{
- background-color: #eaeaea;
-}
-
-.View TabbedPropertyList{
- swt-tabBackground-color: #ffffff;
-}
-
-.View Composite PrependingAsteriskFilteredTree,
-.View PrependingAsteriskFilteredTree Text,
-.View Group Text,
-.View Group Combo,
-.View Composite Text,
-.View Button[style~='SWT.PUSH']{
- background-color: #ffffff;
-}
-
-.MPartStack{
- swt-selected-tab-highlight: #A0A0A0;
- swt-selected-highlight-top: false;
-}
-
-.MPartStack.active {
- swt-selected-tab-highlight: #2160bb;
- swt-selected-highlight-top: false;
-}
-
-/* text color and background color of unselected tabs in editor*/
-#org-eclipse-ui-editorss CTabItem{
- color: #000000;
- background-color: #f8f8f8;
-}
-
-/*text color and background color of selected tab in editor */
-#org-eclipse-ui-editorss CTabItem:selected{
- color: #000000;
- background-color: #FFFFFF;
-}
-
-#org-eclipse-ui-editorss CTabFolder{
- swt-selected-tab-fill : #ffffff;
- swt-selected-tab-highlight: #8a8a8a;
- swt-selected-highlight-top: true;
- swt-tab-outline:#e5e5e5;
- swt-tab-outer-keyline: #e5e5e5;
- swt-draw-custom-tab-content-background: true;
- swt-unselected-hot-tab-color-background:#ffffff;
-}
-
-#org-eclipse-ui-editorss CTabFolder.active {
- swt-selected-tab-highlight: #2160bb;
- swt-selected-highlight-top: true;
-}
-
-#org-eclipse-e4-ui-compatibility-editor Composite{
- background-color: #ffffff;
-}
-
-Composite.MPartSashContainer{
- background-color: #f8f8f8;
-}
-
-Composite.MArea{
- background-color: #ffffff;
-}
-
-.MPart CTabFolder{
- swt-outer-keyline-color: #ffffff;
-}
diff --git a/bundles/org.eclipse.ui.themes/css/e4_preview_mac.css b/bundles/org.eclipse.ui.themes/css/e4_preview_mac.css
deleted file mode 100644
index 3a869957874..00000000000
--- a/bundles/org.eclipse.ui.themes/css/e4_preview_mac.css
+++ /dev/null
@@ -1,209 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2024 SAP SE 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
- *
- * Contributors:
- * SAP SE - initial implementation
- *******************************************************************************/
-
-@import url("platform:/plugin/org.eclipse.ui.themes/css/e4_basestyle_preview.css");
-
-ColorDefinition#org-eclipse-ui-workbench-ACTIVE_UNSELECTED_TABS_COLOR_START {
- color: #F8F8F8;
-}
-
-ColorDefinition#org-eclipse-ui-workbench-ACTIVE_UNSELECTED_TABS_COLOR_END {
- color: #F8F8F8;
-}
-
-ColorDefinition#org-eclipse-ui-workbench-INACTIVE_UNSELECTED_TABS_COLOR_START {
- color: #F8F8F8;
-}
-
-ColorDefinition#org-eclipse-ui-workbench-INACTIVE_UNSELECTED_TABS_COLOR_END {
- color: #F8F8F8;
-}
-
-ColorDefinition#org-eclipse-ui-workbench-ACTIVE_TAB_OUTER_KEYLINE_COLOR {
- color: #EAEAEA;
-}
-
-ColorDefinition#org-eclipse-ui-workbench-ACTIVE_TAB_OUTLINE_COLOR {
- color: #EAEAEA;
-}
-
-ColorDefinition#org-eclipse-ui-workbench-ACTIVE_TAB_BG_START {
- color: #f8f8f8;
-}
-
-ColorDefinition#org-eclipse-ui-workbench-ACTIVE_TAB_BG_END {
- color: #f8f8f8;
-}
-
-ColorDefinition#org-eclipse-ui-workbench-INACTIVE_TAB_OUTER_KEYLINE_COLOR {
- color: #EAEAEA;
-}
-
-ColorDefinition#org-eclipse-ui-workbench-INACTIVE_TAB_OUTLINE_COLOR {
- color: #EAEAEA;
-}
-
-ColorDefinition#org-eclipse-ui-workbench-INACTIVE_TAB_BG_START {
- color: #F8F8F8;
-}
-
-ColorDefinition#org-eclipse-ui-workbench-INACTIVE_TAB_BG_END {
- color: #F8F8F8;
-}
-
-ColorDefinition#org-eclipse-ui-workbench-ACTIVE_NOFOCUS_TAB_BG_START {
- color: #F8F8F8;
-}
-
-ColorDefinition#org-eclipse-ui-workbench-ACTIVE_NOFOCUS_TAB_BG_END {
- color: #F8F8F8;
-}
-
-ColorDefinition#org-eclipse-ui-workbench-ACTIVE_NOFOCUS_TAB_TEXT_COLOR {
- color: #000000;
-}
-
-ColorDefinition#org-eclipse-ui-workbench-ACTIVE_TAB_TEXT_COLOR {
- color: #000000;
-}
-
-ColorDefinition#org-eclipse-ui-workbench-INACTIVE_TAB_TEXT_COLOR {
- color: #000000;
-}
-
-.MTrimmedWindow {
- background-color: #f8f8f8;
-}
-
-.MTrimBar {
- background-color: #f8f8f8;
-}
-
-.MTrimBar#org-eclipse-ui-main-toolbar {
- background-color: #f8f8f8;
-}
-
-CTabFolder Canvas {
- background-color: rgb(255, 255, 255);
-}
-
-
-.MTrimBar#org-eclipse-ui-trim-status {
- background-color: #f8f8f8;
-}
-
-.View Composite,
-.View Composite Tree,
-.View Composite Label,
-.View ToolBar,
-.View Group,
-.View Group Label,
-.View Section,
-.View BusyIndicator,
-.View Text[style~='SWT.READ_ONLY'],
-.View SashForm,
-.View OleFrame,
-.View Browser,
-.View WebSite,
-.View StyledText[style~='SWT.READ_ONLY'],
-.View Link,
-.View FormText,
-.View Hyperlink,
-.View Canvas,
-.View FigureCanvas
-{
- background-color: #f8f8f8;
-}
-
-.View TitleRegion{
- background-color:#f8f8f8;
-}
-
-.MPartStack.active .View TitleRegion{
- background-color:#f8f8f8;
-}
-
-.View Button[style~='SWT.CHECK']{
- background-color: inherit;
-}
-
-.View Toolbar ToolItem{
- background-color: #eaeaea;
-}
-
-.View TabbedPropertyList{
- swt-tabBackground-color: #ffffff;
-}
-
-.View Composite PrependingAsteriskFilteredTree,
-.View PrependingAsteriskFilteredTree Text,
-.View Group Text,
-.View Group Combo,
-.View Composite Text,
-.View Button[style~='SWT.PUSH']{
- background-color: #ffffff;
-}
-
-.MPartStack{
- swt-selected-tab-highlight: #8a8a8a;
- swt-selected-highlight-top: false;
-}
-
-.MPartStack.active {
- swt-selected-tab-highlight: #5983c5;
- swt-selected-highlight-top: false;
-}
-
-/* text color of unselected tabs in editor*/
-#org-eclipse-ui-editorss CTabItem{
- color: #000000;
- background-color: #f8f8f8;
-}
-
-/*text color and background color of selected tab in editor */
-#org-eclipse-ui-editorss CTabItem:selected{
- color: #000000;
- background-color: #FFFFFF;
-}
-
-#org-eclipse-ui-editorss CTabFolder{
- swt-selected-tab-fill : #ffffff;
- swt-selected-tab-highlight: #8a8a8a;
- swt-selected-highlight-top: true;
- swt-tab-outline:#eaeaea;
- swt-tab-outer-keyline: #eaeaea;
- swt-draw-custom-tab-content-background: true;
- swt-unselected-hot-tab-color-background:#ffffff;
-}
-
-#org-eclipse-ui-editorss CTabFolder.active {
- swt-selected-tab-highlight: #5983c5;
- swt-selected-highlight-top: true;
-}
-
-#org-eclipse-e4-ui-compatibility-editor Composite{
- background-color: #ffffff;
-}
-
-Composite.MPartSashContainer{
- background-color: #f8f8f8;
-}
-
-Composite.MArea{
- background-color: #ffffff;
-}
-
-.MPart CTabFolder{
- swt-outer-keyline-color: #ffffff;
-}
diff --git a/bundles/org.eclipse.ui.themes/css/e4_preview_win.css b/bundles/org.eclipse.ui.themes/css/e4_preview_win.css
deleted file mode 100644
index 713844c0a8d..00000000000
--- a/bundles/org.eclipse.ui.themes/css/e4_preview_win.css
+++ /dev/null
@@ -1,213 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2024 SAP SE 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
- *
- * Contributors:
- * SAP SE - initial implementation
- *******************************************************************************/
-
-@import url("platform:/plugin/org.eclipse.ui.themes/css/e4_basestyle_preview.css");
-
-ColorDefinition#org-eclipse-ui-workbench-ACTIVE_UNSELECTED_TABS_COLOR_START {
- color: #F8F8F8;
-}
-
-ColorDefinition#org-eclipse-ui-workbench-ACTIVE_UNSELECTED_TABS_COLOR_END {
- color: #F8F8F8;
-}
-
-ColorDefinition#org-eclipse-ui-workbench-ACTIVE_TAB_OUTER_KEYLINE_COLOR {
- color: #E5E5E5;
-}
-
-ColorDefinition#org-eclipse-ui-workbench-ACTIVE_TAB_OUTLINE_COLOR {
- color: #E5E5E5;
-}
-
-ColorDefinition#org-eclipse-ui-workbench-INACTIVE_UNSELECTED_TABS_COLOR_START {
- color: #F8F8F8;
-}
-
-ColorDefinition#org-eclipse-ui-workbench-INACTIVE_UNSELECTED_TABS_COLOR_END {
- color: #F8F8F8;
-}
-
-ColorDefinition#org-eclipse-ui-workbench-INACTIVE_TAB_OUTER_KEYLINE_COLOR {
- color: #E5E5E5;
-}
-
-ColorDefinition#org-eclipse-ui-workbench-INACTIVE_TAB_OUTLINE_COLOR {
- color: #E5E5E5;
-}
-
-ColorDefinition#org-eclipse-ui-workbench-INACTIVE_TAB_BG_START {
- color: #F8F8F8;
-}
-
-ColorDefinition#org-eclipse-ui-workbench-INACTIVE_TAB_BG_END {
- color: #F8F8F8;
-}
-
-ColorDefinition#org-eclipse-ui-workbench-ACTIVE_TAB_BG_START{
- color: #f8f8f8;
-}
-
-ColorDefinition#org-eclipse-ui-workbench-ACTIVE_TAB_BG_END {
- color: #f8f8f8;
-}
-
-ColorDefinition#org-eclipse-ui-workbench-ACTIVE_NOFOCUS_TAB_BG_START {
- color: #F8F8F8;
-}
-
-ColorDefinition#org-eclipse-ui-workbench-ACTIVE_NOFOCUS_TAB_BG_END {
- color: #F8F8F8;
-}
-
-ColorDefinition#org-eclipse-ui-workbench-ACTIVE_NOFOCUS_TAB_TEXT_COLOR {
- color: #000000;
-}
-
-ColorDefinition#org-eclipse-ui-workbench-ACTIVE_TAB_TEXT_COLOR {
- color: #000000;
-}
-
-ColorDefinition#org-eclipse-ui-workbench-INACTIVE_TAB_TEXT_COLOR {
- color: #000000;
-}
-
-.MPartStack {
- swt-simple: true;
-}
-
-CTabFolder.MArea {
- background-color: #f8f8f8;
- swt-selected-tab-fill: #f8f8f8;
- swt-unselected-tabs-color: #f8f8f8;
- swt-outer-keyline-color: #f8f8f8;
- swt-inner-keyline-color: #f8f8f8;
- swt-tab-outline: #ffffff;
-}
-
-CTabFolder Canvas {
- background-color: #ffffff;
-}
-
-.MTrimBar#org-eclipse-ui-main-toolbar {
- background-color: #f8f8f8;
-}
-
-.MTrimBar#org-eclipse-ui-trim-status {
- background-color: #f8f8f8;
-}
-
-.View Composite,
-.View Composite Tree,
-.View Composite Label,
-.View ToolBar,
-.View Group,
-.View Group Label,
-.View Section,
-.View BusyIndicator,
-.View Text[style~='SWT.READ_ONLY'],
-.View SashForm,
-.View OleFrame,
-.View Browser,
-.View WebSite,
-.View StyledText[style~='SWT.READ_ONLY'],
-.View Link,
-.View FormText,
-.View Hyperlink,
-.View Canvas,
-.View FigureCanvas
-{
- background-color: #f8f8f8;
-}
-
-.View TitleRegion{
- background-color:#f8f8f8;
-}
-
-.MPartStack.active .View TitleRegion{
- background-color:#f8f8f8;
-}
-
-.View Button[style~='SWT.CHECK']{
- background-color: inherit;
-}
-
-.View Toolbar ToolItem{
- background-color: #eaeaea;
-}
-
-.View TabbedPropertyList{
- swt-tabBackground-color: #ffffff;
-}
-
-.View Composite PrependingAsteriskFilteredTree,
-.View PrependingAsteriskFilteredTree Text,
-.View Group Text,
-.View Group Combo,
-.View Composite Text,
-.View Button[style~='SWT.PUSH']{
- background-color: #ffffff;
-}
-
-.MPartStack{
- swt-selected-tab-highlight: #8a8a8a;
- swt-selected-highlight-top: false;
-}
-
-.MPartStack.active {
- swt-selected-tab-highlight: #2160bb;
- swt-selected-highlight-top: false;
-}
-
-/* text color and background color of unselected tabs in editor*/
-#org-eclipse-ui-editorss CTabItem{
- color: #000000;
- background-color: #f8f8f8;
-}
-
-/*text color and background color of selected tab in editor */
-#org-eclipse-ui-editorss CTabItem:selected{
- color: #000000;
- background-color: #FFFFFF;
-}
-
-#org-eclipse-ui-editorss CTabFolder{
- swt-selected-tab-fill : #ffffff;
- swt-selected-tab-highlight: #8a8a8a;
- swt-selected-highlight-top: true;
- swt-tab-outline:#e5e5e5;
- swt-tab-outer-keyline: #e5e5e5;
- swt-draw-custom-tab-content-background: true;
- swt-unselected-hot-tab-color-background:#ffffff;
-}
-
-#org-eclipse-ui-editorss CTabFolder.active {
- swt-selected-tab-highlight: #2160bb;
- swt-selected-highlight-top: true;
-}
-
-#org-eclipse-e4-ui-compatibility-editor Composite{
- background-color: #ffffff;
-}
-
-Composite.MPartSashContainer{
- background-color: #f8f8f8;
-}
-
-Composite.MArea{
- background-color: #ffffff;
-}
-
-.MPart CTabFolder{
- swt-outer-keyline-color: #ffffff;
-}
diff --git a/bundles/org.eclipse.ui.themes/css/light/e4-light_ide_colorextensions.css b/bundles/org.eclipse.ui.themes/css/light/e4-light_ide_colorextensions.css
index a12bc4df22d..836ac2965ef 100644
--- a/bundles/org.eclipse.ui.themes/css/light/e4-light_ide_colorextensions.css
+++ b/bundles/org.eclipse.ui.themes/css/light/e4-light_ide_colorextensions.css
@@ -32,84 +32,92 @@ ThemesExtension { color-definition:
'#org-eclipse-ui-workbench-ACTIVE_TAB_INNER_KEYLINE_COLOR',
'#org-eclipse-ui-workbench-ACTIVE_TAB_OUTLINE_COLOR',
'#org-eclipse-ui-workbench-ACTIVE_TAB_TEXT_COLOR',
- '#org-eclipse-ui-workbench-INACTIVE_TAB_TEXT_COLOR';
+ '#org-eclipse-ui-workbench-INACTIVE_TAB_TEXT_COLOR',
+ '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND';
}
ColorDefinition#org-eclipse-ui-workbench-INACTIVE_UNSELECTED_TABS_COLOR_START {
- color: #FFFFFF;
+ color: #ffffff;
category: '#org-eclipse-ui-presentation-default';
label: url('platform:/plugin/org.eclipse.ui.themes?message=INACTIVE_UNSELECTED_TABS_COLOR_START')
}
ColorDefinition#org-eclipse-ui-workbench-INACTIVE_UNSELECTED_TABS_COLOR_END {
- color: #FFFFFF;
+ color: #ffffff;
category: '#org-eclipse-ui-presentation-default';
label: url('platform:/plugin/org.eclipse.ui.themes?message=INACTIVE_UNSELECTED_TABS_COLOR_END');
}
ColorDefinition#org-eclipse-ui-workbench-INACTIVE_TAB_OUTER_KEYLINE_COLOR {
- color: #FFFFFF;
+ color: #ffffff;
category: '#org-eclipse-ui-presentation-default';
label: url('platform:/plugin/org.eclipse.ui.themes?message=INACTIVE_TAB_OUTER_KEYLINE_COLOR');
}
ColorDefinition#org-eclipse-ui-workbench-INACTIVE_TAB_INNER_KEYLINE_COLOR {
- color: #FFFFFF;
+ color: #ffffff;
category: '#org-eclipse-ui-presentation-default';
label: url('platform:/plugin/org.eclipse.ui.themes?message=INACTIVE_TAB_INNER_KEYLINE_COLOR');
}
ColorDefinition#org-eclipse-ui-workbench-INACTIVE_TAB_OUTLINE_COLOR {
- color: #B6BCCC;
+ color: #b6bccc;
category: '#org-eclipse-ui-presentation-default';
label: url('platform:/plugin/org.eclipse.ui.themes?message=INACTIVE_TAB_OUTLINE_COLOR');
}
ColorDefinition#org-eclipse-ui-workbench-ACTIVE_UNSELECTED_TABS_COLOR_START {
- color: #FFFFFF;
+ color: #ffffff;
category: '#org-eclipse-ui-presentation-default';
label: url('platform:/plugin/org.eclipse.ui.themes?message=ACTIVE_UNSELECTED_TABS_COLOR_START');
}
ColorDefinition#org-eclipse-ui-workbench-ACTIVE_UNSELECTED_TABS_COLOR_END {
- color: #FFFFFF;
+ color: #ffffff;
category: '#org-eclipse-ui-presentation-default';
label: url('platform:/plugin/org.eclipse.ui.themes?message=ACTIVE_UNSELECTED_TABS_COLOR_END');
}
ColorDefinition#org-eclipse-ui-workbench-ACTIVE_TAB_OUTER_KEYLINE_COLOR {
- color: #CCCCCC;
+ color: #cccccc;
category: '#org-eclipse-ui-presentation-default';
label: url('platform:/plugin/org.eclipse.ui.themes?message=ACTIVE_TAB_OUTER_KEYLINE_COLOR');
}
ColorDefinition#org-eclipse-ui-workbench-ACTIVE_TAB_INNER_KEYLINE_COLOR {
- color: #FFFFFF;
+ color: #ffffff;
category: '#org-eclipse-ui-presentation-default';
label: url('platform:/plugin/org.eclipse.ui.themes?message=ACTIVE_TAB_INNER_KEYLINE_COLOR');
}
ColorDefinition#org-eclipse-ui-workbench-ACTIVE_TAB_OUTLINE_COLOR {
- color: #B6BCCC;
+ color: #b6bccc;
category: '#org-eclipse-ui-presentation-default';
label: url('platform:/plugin/org.eclipse.ui.themes?message=ACTIVE_TAB_OUTLINE_COLOR');
}
+ColorDefinition#org-eclipse-ui-workbench-SECONDARY_BACKGROUND {
+ color: #f8f8f8;
+ category: '#org-eclipse-ui-presentation-default';
+ label: url('platform:/plugin/org.eclipse.ui.themes?message=SECONDARY_BACKGROUND');
+ editable: false;
+}
+
/* Already existing ColorDefinitions overridden for the E4 default theme */
ColorDefinition#org-eclipse-ui-workbench-INACTIVE_TAB_BG_START {
color: #dddfe5;
}
ColorDefinition#org-eclipse-ui-workbench-INACTIVE_TAB_BG_END {
- color: #FFFFFF;
+ color: #ffffff;
}
ColorDefinition#org-eclipse-ui-workbench-ACTIVE_TAB_BG_START{
- color: #FFFFFF;
+ color: #ffffff;
}
ColorDefinition#org-eclipse-ui-workbench-ACTIVE_TAB_BG_END {
- color: #FFFFFF;
+ color: #ffffff;
}
ColorDefinition#org-eclipse-ui-workbench-ACTIVE_NOFOCUS_TAB_BG_START {
diff --git a/bundles/org.eclipse.ui.themes/css/light/e4-light_tabstyle.css b/bundles/org.eclipse.ui.themes/css/light/e4-light_tabstyle.css
index fc38261d82b..865e51330aa 100644
--- a/bundles/org.eclipse.ui.themes/css/light/e4-light_tabstyle.css
+++ b/bundles/org.eclipse.ui.themes/css/light/e4-light_tabstyle.css
@@ -11,6 +11,7 @@
* Contributors:
* IBM Corporation - initial API and implementation
* Lars Vogel - Bug 420836
+ * SAP SE - light theme improvements
*******************************************************************************/
@@ -30,7 +31,7 @@
padding: 0px;
color: '#org-eclipse-ui-workbench-INACTIVE_TAB_TEXT_COLOR';
swt-draw-custom-tab-content-background: true;
- swt-unselected-hot-tab-color-background:'#org-eclipse-ui-workbench-ACTIVE_TAB_BG_START';
+ swt-unselected-hot-tab-color-background:#EAEAEA;
}
.MPartStack.active {
diff --git a/bundles/org.eclipse.ui.themes/css/light/e4-light_tabstyle_preview.css b/bundles/org.eclipse.ui.themes/css/light/e4-light_tabstyle_preview.css
deleted file mode 100644
index 9ca78886a82..00000000000
--- a/bundles/org.eclipse.ui.themes/css/light/e4-light_tabstyle_preview.css
+++ /dev/null
@@ -1,79 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2024 SAP SE 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
- *
- * Contributors:
- * SAP SE - initial implementation
- *******************************************************************************/
-
-/* ################################ CSS for Tabs ########################## */
-
-#org-eclipse-ui-editorss {
- swt-tab-height: 8px;
-}
-
-.MPartStack {
- swt-tab-renderer: url('bundleclass://org.eclipse.e4.ui.workbench.renderers.swt/org.eclipse.e4.ui.workbench.renderers.swt.CTabRendering');
- swt-selected-tab-fill: '#org-eclipse-ui-workbench-INACTIVE_TAB_BG_START' '#org-eclipse-ui-workbench-INACTIVE_TAB_BG_END' 100% 100%;
- swt-unselected-tabs-color: '#org-eclipse-ui-workbench-INACTIVE_UNSELECTED_TABS_COLOR_START' '#org-eclipse-ui-workbench-INACTIVE_UNSELECTED_TABS_COLOR_END' 100% 100%;
- swt-outer-keyline-color: '#org-eclipse-ui-workbench-INACTIVE_TAB_OUTER_KEYLINE_COLOR';
- swt-inner-keyline-color: '#org-eclipse-ui-workbench-INACTIVE_TAB_INNER_KEYLINE_COLOR';
- swt-tab-outline: '#org-eclipse-ui-workbench-INACTIVE_TAB_OUTLINE_COLOR';
- padding: 0px;
- color: '#org-eclipse-ui-workbench-INACTIVE_TAB_TEXT_COLOR';
- swt-draw-custom-tab-content-background: true;
- swt-unselected-hot-tab-color-background:#EAEAEA;
-}
-
-.MPartStack.active {
- swt-selected-tab-fill: '#org-eclipse-ui-workbench-ACTIVE_TAB_BG_START' '#org-eclipse-ui-workbench-ACTIVE_TAB_BG_END' 100% 100%;
- swt-unselected-tabs-color: '#org-eclipse-ui-workbench-ACTIVE_UNSELECTED_TABS_COLOR_START' '#org-eclipse-ui-workbench-ACTIVE_UNSELECTED_TABS_COLOR_END' 100% 100%;
- swt-outer-keyline-color: '#org-eclipse-ui-workbench-ACTIVE_TAB_OUTER_KEYLINE_COLOR';
- swt-inner-keyline-color: '#org-eclipse-ui-workbench-ACTIVE_TAB_INNER_KEYLINE_COLOR';
- swt-tab-outline: '#org-eclipse-ui-workbench-ACTIVE_TAB_OUTLINE_COLOR';
- swt-draw-custom-tab-content-background: true;
-}
-
-.MPartStack.active.noFocus {
- swt-selected-tab-fill: '#org-eclipse-ui-workbench-ACTIVE_NOFOCUS_TAB_BG_START' '#org-eclipse-ui-workbench-ACTIVE_NOFOCUS_TAB_BG_END' 100% 100%;
-}
-
-CTabItem:selected {
- color: '#org-eclipse-ui-workbench-ACTIVE_TAB_TEXT_COLOR';
-}
-
-CTabFolder.MArea {
- swt-tab-renderer: url('bundleclass://org.eclipse.e4.ui.workbench.renderers.swt/org.eclipse.e4.ui.workbench.renderers.swt.CTabRendering');
- padding: 0px;
-}
-
-CTabFolder {
- swt-selected-tab-highlight: none;
-}
-
-CTabFolder.active {
- swt-selected-tab-highlight: rgb(103,145,230);
- swt-selected-highlight-top: false;
-}
-
-.MPartStack.active.noFocus > CTabItem:selected {
- color: '#org-eclipse-ui-workbench-ACTIVE_NOFOCUS_TAB_TEXT_COLOR';
-}
-
-.MPartStack > Composite {
- background-color: '#org-eclipse-ui-workbench-INACTIVE_TAB_BG_END';
-}
-
-.MPartStack.active > Composite {
- background-color: '#org-eclipse-ui-workbench-ACTIVE_TAB_BG_END';
-}
-
-.MPartStack.active.noFocus > Composite {
- background-color: '#org-eclipse-ui-workbench-ACTIVE_NOFOCUS_TAB_BG_END';
-}
diff --git a/bundles/org.eclipse.ui.themes/plugin.properties b/bundles/org.eclipse.ui.themes/plugin.properties
index c4e8ad6e805..47e27d7e4fe 100644
--- a/bundles/org.eclipse.ui.themes/plugin.properties
+++ b/bundles/org.eclipse.ui.themes/plugin.properties
@@ -16,12 +16,7 @@ Plugin.name = Eclipse SDK Themes
Plugin.providerName = Eclipse.org
theme.classic = Classic
-theme.gtk = Light
-theme.mac = Light
-theme.win = Light
-theme.preview.gtk = Light (Preview)
-theme.preview.mac = Light (Preview)
-theme.preview.win = Light (Preview)
+theme.light = Light
theme.dark = Dark
theme.high-contrast = High Contrast
@@ -29,6 +24,7 @@ theme.high-contrast = High Contrast
#New theme element definitions
DARK_BACKGROUND=Dark Background Color
DARK_FOREGROUND=Dark Foreground Color
+SECONDARY_BACKGROUND=Background color of secondary part
INACTIVE_UNSELECTED_TABS_COLOR_START=Inactive, unselected part color begin
INACTIVE_UNSELECTED_TABS_COLOR_START=Inactive, unselected part color begin
INACTIVE_UNSELECTED_TABS_COLOR_END=Inactive, unselected part color end
diff --git a/bundles/org.eclipse.ui.themes/plugin.xml b/bundles/org.eclipse.ui.themes/plugin.xml
index f9e728b750e..8d12cceadef 100644
--- a/bundles/org.eclipse.ui.themes/plugin.xml
+++ b/bundles/org.eclipse.ui.themes/plugin.xml
@@ -36,37 +36,19 @@
-
-
-
-
-
- = IStatus.WARNING && fActivateViewWarnAction.isChecked())
- || (severity >= IStatus.ERROR && fActivateViewErrorAction.isChecked())) {
+ if ((fActivateViewAction != null && fActivateViewAction.isChecked())
+ || (severity >= IStatus.WARNING && fActivateViewWarnAction != null && fActivateViewWarnAction.isChecked())
+ || (severity >= IStatus.ERROR && fActivateViewErrorAction != null && fActivateViewErrorAction.isChecked())) {
mutualActivate.throttledExec();
}
}
diff --git a/bundles/org.eclipse.ui.workbench.texteditor/META-INF/MANIFEST.MF b/bundles/org.eclipse.ui.workbench.texteditor/META-INF/MANIFEST.MF
index b58b26bfbfc..2e7b7c5380c 100644
--- a/bundles/org.eclipse.ui.workbench.texteditor/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.ui.workbench.texteditor/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.ui.workbench.texteditor; singleton:=true
-Bundle-Version: 3.18.100.qualifier
+Bundle-Version: 3.19.100.qualifier
Bundle-Activator: org.eclipse.ui.internal.texteditor.TextEditorPlugin
Bundle-ActivationPolicy: lazy
Bundle-Vendor: %providerName
diff --git a/bundles/org.eclipse.ui.workbench.texteditor/forceQualifierUpdate.txt b/bundles/org.eclipse.ui.workbench.texteditor/forceQualifierUpdate.txt
index 56d588b441a..73c2457c4eb 100644
--- a/bundles/org.eclipse.ui.workbench.texteditor/forceQualifierUpdate.txt
+++ b/bundles/org.eclipse.ui.workbench.texteditor/forceQualifierUpdate.txt
@@ -3,4 +3,5 @@ Bug 509931: Comparator errors in M20170104-0545
https://github.com/eclipse-platform/eclipse.platform.releng.aggregator/issues/1184
https://github.com/eclipse-platform/eclipse.platform.releng.aggregator/issues/1659
https://github.com/eclipse-platform/eclipse.platform.releng.aggregator/issues/1781
-https://github.com/eclipse-platform/eclipse.platform.releng.aggregator/issues/2044
\ No newline at end of file
+https://github.com/eclipse-platform/eclipse.platform.releng.aggregator/issues/2044
+https://github.com/eclipse-platform/eclipse.platform.releng.aggregator/issues/2595
\ No newline at end of file
diff --git a/bundles/org.eclipse.ui.workbench.texteditor/icons/full/etool16/block_selection_mode.png b/bundles/org.eclipse.ui.workbench.texteditor/icons/full/etool16/block_selection_mode.png
index f1645896f35..96e8de5f1f2 100644
Binary files a/bundles/org.eclipse.ui.workbench.texteditor/icons/full/etool16/block_selection_mode.png and b/bundles/org.eclipse.ui.workbench.texteditor/icons/full/etool16/block_selection_mode.png differ
diff --git a/bundles/org.eclipse.ui.workbench.texteditor/icons/full/etool16/block_selection_mode@2x.png b/bundles/org.eclipse.ui.workbench.texteditor/icons/full/etool16/block_selection_mode@2x.png
index 64ec962a85e..b063fe9d8d6 100644
Binary files a/bundles/org.eclipse.ui.workbench.texteditor/icons/full/etool16/block_selection_mode@2x.png and b/bundles/org.eclipse.ui.workbench.texteditor/icons/full/etool16/block_selection_mode@2x.png differ
diff --git a/bundles/org.eclipse.ui.workbench.texteditor/icons/full/etool16/wordwrap.png b/bundles/org.eclipse.ui.workbench.texteditor/icons/full/etool16/wordwrap.png
index ae3b77de6e1..79d19fac0a3 100644
Binary files a/bundles/org.eclipse.ui.workbench.texteditor/icons/full/etool16/wordwrap.png and b/bundles/org.eclipse.ui.workbench.texteditor/icons/full/etool16/wordwrap.png differ
diff --git a/bundles/org.eclipse.ui.workbench.texteditor/icons/full/etool16/wordwrap@2x.png b/bundles/org.eclipse.ui.workbench.texteditor/icons/full/etool16/wordwrap@2x.png
index bb604a4a216..6e9c33518cf 100644
Binary files a/bundles/org.eclipse.ui.workbench.texteditor/icons/full/etool16/wordwrap@2x.png and b/bundles/org.eclipse.ui.workbench.texteditor/icons/full/etool16/wordwrap@2x.png differ
diff --git a/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/findandreplace/FindReplaceLogic.java b/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/findandreplace/FindReplaceLogic.java
index 812787f7a86..53640118526 100644
--- a/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/findandreplace/FindReplaceLogic.java
+++ b/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/findandreplace/FindReplaceLogic.java
@@ -132,12 +132,11 @@ private void resetStatus() {
@Override
public boolean isAvailable(SearchOptions searchOption) {
switch (searchOption) {
- case INCREMENTAL:
- return !isAvailableAndActive(SearchOptions.REGEX);
case REGEX:
return isTargetSupportingRegEx;
case WHOLE_WORD:
return !isAvailableAndActive(SearchOptions.REGEX) && isWord(findString);
+ case INCREMENTAL:
case CASE_SENSITIVE:
case FORWARD:
case GLOBAL:
@@ -568,7 +567,10 @@ private boolean isFindStringSelected() {
Pattern pattern = Pattern.compile(findString, patternFlags);
return pattern.matcher(selectedString).find();
} else {
- return getCurrentSelection().equals(findString);
+ if (isAvailableAndActive(SearchOptions.CASE_SENSITIVE)) {
+ return getCurrentSelection().equals(findString);
+ }
+ return getCurrentSelection().equalsIgnoreCase(findString);
}
}
diff --git a/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/findandreplace/HistoryStore.java b/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/findandreplace/HistoryStore.java
index 2d5e063a745..d0d0ca022c3 100644
--- a/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/findandreplace/HistoryStore.java
+++ b/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/findandreplace/HistoryStore.java
@@ -28,7 +28,6 @@
public class HistoryStore {
private IDialogSettings settingsManager;
private int historySize;
- private List history;
private String sectionName;
/**
@@ -38,56 +37,58 @@ public class HistoryStore {
* @param historySize how many entries to keep in the history
*/
public HistoryStore(IDialogSettings settingsManager, String sectionName, int historySize) {
+ if (sectionName == null) {
+ throw new IllegalStateException("No section loaded"); //$NON-NLS-1$
+ }
+
this.settingsManager = settingsManager;
this.historySize = historySize;
- loadSection(sectionName);
+ this.sectionName = sectionName;
}
public Iterable get() {
- return history;
+ return getHistory();
}
public String get(int index) {
- return history.get(index);
+ return getHistory().get(index);
}
public void add(String historyItem) {
- if (sectionName == null) {
- throw new IllegalStateException("No section loaded"); //$NON-NLS-1$
- }
+ List history = getHistory();
if (historyItem != null && !historyItem.isEmpty()) {
history.add(0, historyItem);
}
-
- writeHistory();
+ write(history);
}
public void remove(String historyItem) {
+ List history = getHistory();
int indexInHistory = history.indexOf(historyItem);
if (indexInHistory >= 0) {
history.remove(indexInHistory);
}
+ write(history);
}
public boolean isEmpty() {
- return history.isEmpty();
+ return getHistory().isEmpty();
}
- private void loadSection(String newSectionName) {
- this.sectionName = newSectionName;
- history = new ArrayList<>();
-
- String[] newHistoryEntries = settingsManager.getArray(newSectionName);
- if (newHistoryEntries != null) {
- history.addAll(Arrays.asList(newHistoryEntries));
+ private List getHistory() {
+ String[] historyEntries = settingsManager.getArray(sectionName);
+ List result = new ArrayList<>();
+ if (historyEntries != null) {
+ result.addAll(Arrays.asList(historyEntries));
}
+ return result;
}
/**
* Writes the given history into the given dialog store.
*/
- private void writeHistory() {
+ private void write(List history) {
int itemCount = history.size();
Set distinctItems = new HashSet<>(itemCount);
for (int i = 0; i < itemCount; i++) {
@@ -110,10 +111,10 @@ private void writeHistory() {
}
public int indexOf(String entry) {
- return history.indexOf(entry);
+ return getHistory().indexOf(entry);
}
public int size() {
- return history.size();
+ return getHistory().size();
}
}
diff --git a/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/findandreplace/overlay/AccessibleToolBar.java b/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/findandreplace/overlay/AccessibleToolBar.java
index 63053127871..5c3cc32fd02 100644
--- a/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/findandreplace/overlay/AccessibleToolBar.java
+++ b/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/findandreplace/overlay/AccessibleToolBar.java
@@ -74,4 +74,9 @@ void registerActionShortcutsAtControl(Control control) {
}
}
+ Control getFirstControl() {
+ Control[] children = getChildren();
+ return children.length == 0 ? null : getChildren()[0];
+ }
+
}
diff --git a/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/findandreplace/overlay/AccessibleToolItem.java b/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/findandreplace/overlay/AccessibleToolItem.java
index ea68f106fa1..d2490d8c5c9 100644
--- a/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/findandreplace/overlay/AccessibleToolItem.java
+++ b/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/findandreplace/overlay/AccessibleToolItem.java
@@ -22,6 +22,7 @@
import org.eclipse.swt.widgets.ToolItem;
import org.eclipse.jface.bindings.keys.KeyStroke;
+import org.eclipse.jface.layout.GridDataFactory;
class AccessibleToolItem {
private final ToolItem toolItem;
@@ -30,6 +31,7 @@ class AccessibleToolItem {
AccessibleToolItem(Composite parent, int styleBits) {
ToolBar toolbar = new ToolBar(parent, SWT.FLAT | SWT.HORIZONTAL);
+ GridDataFactory.fillDefaults().grab(true, true).align(SWT.CENTER, SWT.CENTER).applyTo(toolbar);
toolItem = new ToolItem(toolbar, styleBits);
addToolItemTraverseListener(toolbar);
}
diff --git a/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/findandreplace/overlay/FindReplaceOverlay.java b/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/findandreplace/overlay/FindReplaceOverlay.java
index 26dfad8358b..aa728bf0626 100644
--- a/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/findandreplace/overlay/FindReplaceOverlay.java
+++ b/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/findandreplace/overlay/FindReplaceOverlay.java
@@ -13,31 +13,28 @@
*******************************************************************************/
package org.eclipse.ui.internal.findandreplace.overlay;
-import static org.eclipse.ui.internal.findandreplace.overlay.FindReplaceShortcutUtil.registerActionShortcutsAtControl;
-
+import java.lang.reflect.Method;
+import java.util.HashMap;
import java.util.List;
-import java.util.function.Consumer;
+import java.util.Map;
+import java.util.concurrent.atomic.AtomicReference;
import org.osgi.framework.FrameworkUtil;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.BusyIndicator;
import org.eclipse.swt.custom.StyledText;
-import org.eclipse.swt.events.ControlEvent;
import org.eclipse.swt.events.ControlListener;
import org.eclipse.swt.events.FocusEvent;
import org.eclipse.swt.events.FocusListener;
import org.eclipse.swt.events.KeyListener;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.events.ShellAdapter;
-import org.eclipse.swt.events.ShellEvent;
+import org.eclipse.swt.events.MouseListener;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.GC;
import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.RGBA;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
@@ -49,39 +46,43 @@
import org.eclipse.swt.widgets.ToolItem;
import org.eclipse.swt.widgets.Widget;
+import org.eclipse.core.runtime.Status;
+
+import org.eclipse.jface.action.IAction;
import org.eclipse.jface.bindings.keys.KeyStroke;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.dialogs.IDialogSettings;
-import org.eclipse.jface.dialogs.IPageChangedListener;
-import org.eclipse.jface.dialogs.PageChangedEvent;
+import org.eclipse.jface.fieldassist.ControlDecoration;
import org.eclipse.jface.fieldassist.TextContentAdapter;
import org.eclipse.jface.layout.GridDataFactory;
import org.eclipse.jface.layout.GridLayoutFactory;
import org.eclipse.jface.resource.JFaceColors;
-import org.eclipse.jface.window.Window;
import org.eclipse.jface.text.FindReplaceDocumentAdapter;
import org.eclipse.jface.text.FindReplaceDocumentAdapterContentProposalProvider;
import org.eclipse.jface.text.IFindReplaceTarget;
import org.eclipse.jface.text.ITextViewer;
-import org.eclipse.ui.IPartListener2;
+import org.eclipse.ui.IActionBars;
import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.IWorkbenchPartReference;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.fieldassist.ContentAssistCommandAdapter;
+import org.eclipse.ui.internal.SearchDecoration;
import org.eclipse.ui.internal.findandreplace.FindReplaceLogic;
import org.eclipse.ui.internal.findandreplace.FindReplaceMessages;
import org.eclipse.ui.internal.findandreplace.HistoryStore;
import org.eclipse.ui.internal.findandreplace.SearchOptions;
-import org.eclipse.ui.internal.findandreplace.status.IFindReplaceStatus;
+import org.eclipse.ui.internal.texteditor.TextEditorPlugin;
import org.eclipse.ui.part.MultiPageEditorSite;
+import org.eclipse.ui.texteditor.AbstractTextEditor;
+import org.eclipse.ui.texteditor.FindReplaceAction;
import org.eclipse.ui.texteditor.IAbstractTextEditorHelpContextIds;
+import org.eclipse.ui.texteditor.ITextEditorActionConstants;
import org.eclipse.ui.texteditor.ITextEditorActionDefinitionIds;
import org.eclipse.ui.texteditor.StatusTextEditor;
-public class FindReplaceOverlay extends Dialog {
+public class FindReplaceOverlay {
private final class KeyboardShortcuts {
private static final List SEARCH_FORWARD = List.of( //
KeyStroke.getInstance(SWT.CR), KeyStroke.getInstance(SWT.KEYPAD_CR));
@@ -92,11 +93,11 @@ private final class KeyboardShortcuts {
private static final List OPTION_CASE_SENSITIVE = List.of( //
KeyStroke.getInstance(SWT.MOD1 | SWT.SHIFT, 'C'), KeyStroke.getInstance(SWT.MOD1 | SWT.SHIFT, 'c'));
private static final List OPTION_WHOLE_WORD = List.of( //
- KeyStroke.getInstance(SWT.MOD1 | SWT.SHIFT, 'W'), KeyStroke.getInstance(SWT.MOD1 | SWT.SHIFT, 'w'));
+ KeyStroke.getInstance(SWT.MOD1 | SWT.SHIFT, 'D'), KeyStroke.getInstance(SWT.MOD1 | SWT.SHIFT, 'd'));
private static final List OPTION_REGEX = List.of( //
KeyStroke.getInstance(SWT.MOD1 | SWT.SHIFT, 'P'), KeyStroke.getInstance(SWT.MOD1 | SWT.SHIFT, 'p'));
private static final List OPTION_SEARCH_IN_SELECTION = List.of( //
- KeyStroke.getInstance(SWT.MOD1 | SWT.SHIFT, 'A'), KeyStroke.getInstance(SWT.MOD1 | SWT.SHIFT, 'a'));
+ KeyStroke.getInstance(SWT.MOD1 | SWT.SHIFT, 'I'), KeyStroke.getInstance(SWT.MOD1 | SWT.SHIFT, 'i'));
private static final List CLOSE = List.of( //
KeyStroke.getInstance(SWT.ESC), KeyStroke.getInstance(SWT.MOD1, 'F'),
KeyStroke.getInstance(SWT.MOD1, 'f'));
@@ -104,6 +105,8 @@ private final class KeyboardShortcuts {
KeyStroke.getInstance(SWT.MOD1, 'R'), KeyStroke.getInstance(SWT.MOD1, 'r'));
}
+ public static final String ID_DATA_KEY = "org.eclipse.ui.internal.findreplace.overlay.FindReplaceOverlay.id"; //$NON-NLS-1$
+
private static final String REPLACE_BAR_OPEN_DIALOG_SETTING = "replaceBarOpen"; //$NON-NLS-1$
private static final double WORST_CASE_RATIO_EDITOR_TO_OVERLAY = 0.95;
private static final double BIG_WIDTH_RATIO_EDITOR_TO_OVERLAY = 0.7;
@@ -113,12 +116,12 @@ private final class KeyboardShortcuts {
private FindReplaceLogic findReplaceLogic;
private final IWorkbenchPart targetPart;
- private boolean overlayOpen;
private boolean replaceBarOpen;
- private Composite container;
- private Button replaceToggle;
- private FindReplaceOverlayAction replaceToggleShortcut;
+ private final Composite targetControl;
+ private Composite containerControl;
+ private AccessibleToolBar replaceToggleTools;
+ private ToolItem replaceToggle;
private Composite contentGroup;
@@ -130,11 +133,10 @@ private final class KeyboardShortcuts {
private ToolItem wholeWordSearchButton;
private ToolItem caseSensitiveSearchButton;
private ToolItem regexSearchButton;
- private ToolItem searchUpButton;
- private ToolItem searchDownButton;
- private ToolItem searchAllButton;
+ private ToolItem searchBackwardButton;
+ private ToolItem searchForwardButton;
+ private ToolItem selectAllButton;
private AccessibleToolBar closeTools;
- private ToolItem closeButton;
private Composite replaceContainer;
private Composite replaceBarContainer;
@@ -143,26 +145,176 @@ private final class KeyboardShortcuts {
private ToolItem replaceButton;
private ToolItem replaceAllButton;
- private Color backgroundToUse;
+ private Color widgetBackgroundColor;
+ private Color overlayBackgroundColor;
private Color normalTextForegroundColor;
+ private Color errorTextForegroundColor;
+
private boolean positionAtTop = true;
- private final TargetPartVisibilityHandler targetPartVisibilityHandler;
+ private ControlDecoration searchBarDecoration;
private ContentAssistCommandAdapter contentAssistSearchField, contentAssistReplaceField;
+ private FocusListener targetActionActivationHandling = new FocusListener() {
+ private DeactivateGlobalActionHandlers globalActionHandlerDeaction;
+
+ @Override
+ public void focusGained(FocusEvent e) {
+ setTextEditorActionsActivated(false);
+ }
+
+ @Override
+ public void focusLost(FocusEvent e) {
+ setTextEditorActionsActivated(true);
+ }
+
+ /*
+ * Adapted from
+ * org.eclipse.jdt.internal.ui.javaeditor.JavaEditor#setActionsActivated(
+ * boolean)
+ */
+ private void setTextEditorActionsActivated(boolean state) {
+ if (!(targetPart instanceof AbstractTextEditor) || targetPart.getSite().getWorkbenchWindow().isClosing()) {
+ return;
+ }
+ if (targetPart.getSite() instanceof MultiPageEditorSite multiEditorSite) {
+ if (!state && globalActionHandlerDeaction == null) {
+ globalActionHandlerDeaction = new DeactivateGlobalActionHandlers(multiEditorSite.getActionBars());
+ } else if (state && globalActionHandlerDeaction != null) {
+ globalActionHandlerDeaction.reactivate();
+ globalActionHandlerDeaction = null;
+ }
+ }
+ try {
+ Method method = AbstractTextEditor.class.getDeclaredMethod("setActionActivation", boolean.class); //$NON-NLS-1$
+ method.setAccessible(true);
+ method.invoke(targetPart, Boolean.valueOf(state));
+ } catch (IllegalArgumentException | ReflectiveOperationException ex) {
+ TextEditorPlugin.getDefault().getLog()
+ .log(Status.error("cannot (de-)activate actions for text editor", ex)); //$NON-NLS-1$
+ }
+ }
+
+ static final class DeactivateGlobalActionHandlers {
+ private final static List ACTIONS = List.of(ITextEditorActionConstants.CUT,
+ ITextEditorActionConstants.COPY, ITextEditorActionConstants.PASTE,
+ ITextEditorActionConstants.DELETE, ITextEditorActionConstants.SELECT_ALL,
+ ITextEditorActionConstants.FIND);
+
+ private final Map deactivatedActions = new HashMap<>();
+ private final IActionBars actionBars;
+
+ public DeactivateGlobalActionHandlers(IActionBars actionBars) {
+ this.actionBars = actionBars;
+ for (String actionID : ACTIONS) {
+ deactivatedActions.putIfAbsent(actionID, actionBars.getGlobalActionHandler(actionID));
+ actionBars.setGlobalActionHandler(actionID, null);
+ }
+ }
+
+ public void reactivate() {
+ for (String actionID : deactivatedActions.keySet()) {
+ actionBars.setGlobalActionHandler(actionID, deactivatedActions.get(actionID));
+ }
+ }
+ }
+
+ };
+
+ private final CustomFocusOrder customFocusOrder = new CustomFocusOrder();
+
+ private class CustomFocusOrder {
+ private final Listener searchBarToReplaceBar = e -> {
+ if (e.detail == SWT.TRAVERSE_TAB_NEXT) {
+ e.doit = false;
+ replaceBar.forceFocus();
+ }
+ };
+
+ private final Listener replaceBarToSearchBarAndTools = e -> {
+ switch (e.detail) {
+ case SWT.TRAVERSE_TAB_NEXT:
+ e.doit = false;
+ searchBar.getDropDownTool().getFirstControl().forceFocus();
+ break;
+ case SWT.TRAVERSE_TAB_PREVIOUS:
+ e.doit = false;
+ searchBar.getTextBar().forceFocus();
+ break;
+ default:
+ // Proceed as normal
+ }
+ };
+
+ private final Listener searchToolsToReplaceBar = e -> {
+ switch (e.detail) {
+ case SWT.TRAVERSE_TAB_PREVIOUS:
+ e.doit = false;
+ replaceBar.forceFocus();
+ break;
+ default:
+ // Proceed as normal
+ }
+ };
+
+ private final Listener closeToolsToReplaceTools = e -> {
+ switch (e.detail) {
+ case SWT.TRAVERSE_TAB_NEXT:
+ e.doit = false;
+ replaceBar.getDropDownTool().getFirstControl().forceFocus();
+ break;
+ default:
+ // Proceed as normal
+ }
+ };
+
+ private final Listener replaceToolsToCloseTools = e -> {
+ switch (e.detail) {
+ case SWT.TRAVERSE_TAB_PREVIOUS:
+ e.doit = false;
+ closeTools.getFirstControl().forceFocus();
+ break;
+ default:
+ // Proceed as normal
+ }
+ };
+
+ void apply() {
+ searchBar.getTextBar().addListener(SWT.Traverse, searchBarToReplaceBar);
+ replaceBar.getTextBar().addListener(SWT.Traverse, replaceBarToSearchBarAndTools);
+ searchBar.getDropDownTool().getFirstControl().addListener(SWT.Traverse, searchToolsToReplaceBar);
+ closeTools.getFirstControl().addListener(SWT.Traverse, closeToolsToReplaceTools);
+ replaceBar.getDropDownTool().getFirstControl().addListener(SWT.Traverse, replaceToolsToCloseTools);
+ }
+
+ void dispose() {
+ searchBar.getTextBar().removeListener(SWT.Traverse, searchBarToReplaceBar);
+ replaceBar.getTextBar().removeListener(SWT.Traverse, replaceBarToSearchBarAndTools);
+ searchBar.getDropDownTool().getFirstControl().removeListener(SWT.Traverse, searchToolsToReplaceBar);
+ closeTools.getFirstControl().removeListener(SWT.Traverse, closeToolsToReplaceTools);
+ replaceBar.getDropDownTool().getFirstControl().removeListener(SWT.Traverse, replaceToolsToCloseTools);
+ }
+ }
+
public FindReplaceOverlay(Shell parent, IWorkbenchPart part, IFindReplaceTarget target) {
- super(parent);
+ targetPart = part;
+ targetControl = getTargetControl(parent, part);
createFindReplaceLogic(target);
+ createContainerAndSearchControls(targetControl);
+ containerControl.setVisible(false);
+ PlatformUI.getWorkbench().getHelpSystem().setHelp(containerControl,
+ IAbstractTextEditorHelpContextIds.FIND_REPLACE_OVERLAY);
+ }
- setShellStyle(SWT.MODELESS);
- setBlockOnOpen(false);
- targetPart = part;
- targetPartVisibilityHandler = new TargetPartVisibilityHandler(targetPart, this::asyncExecIfOpen, this::close,
- this::updatePlacementAndVisibility);
+ private static Composite getTargetControl(Shell targetShell, IWorkbenchPart targetPart) {
+ if (targetPart instanceof StatusTextEditor textEditor) {
+ return textEditor.getAdapter(ITextViewer.class).getTextWidget();
+ } else {
+ return targetShell;
+ }
}
- @Override
- protected boolean isResizable() {
- return false;
+ private boolean insertedInTargetParent() {
+ return targetControl instanceof StyledText;
}
private void createFindReplaceLogic(IFindReplaceTarget target) {
@@ -178,151 +330,41 @@ private void createFindReplaceLogic(IFindReplaceTarget target) {
findReplaceLogic.activate(SearchOptions.FORWARD);
}
+ public Composite getContainerControl() {
+ return containerControl;
+ }
+
private void performReplaceAll() {
- BusyIndicator.showWhile(getShell() != null ? getShell().getDisplay() : Display.getCurrent(),
+ BusyIndicator.showWhile(containerControl.getShell() != null ? containerControl.getShell().getDisplay() : Display.getCurrent(),
findReplaceLogic::performReplaceAll);
- evaluateFindReplaceStatus();
+ evaluateStatusAfterReplace();
replaceBar.storeHistory();
searchBar.storeHistory();
}
private void performSelectAll() {
- BusyIndicator.showWhile(getShell() != null ? getShell().getDisplay() : Display.getCurrent(),
+ BusyIndicator.showWhile(containerControl.getShell() != null ? containerControl.getShell().getDisplay() : Display.getCurrent(),
findReplaceLogic::performSelectAll);
searchBar.storeHistory();
}
- private ControlListener shellMovementListener = new ControlListener() {
- @Override
- public void controlMoved(ControlEvent e) {
- asyncExecIfOpen(FindReplaceOverlay.this::updatePlacementAndVisibility);
- }
-
- @Override
- public void controlResized(ControlEvent e) {
- asyncExecIfOpen(FindReplaceOverlay.this::updatePlacementAndVisibility);
- }
- };
-
- private Listener targetRelocationListener = __ -> asyncExecIfOpen(
- FindReplaceOverlay.this::updatePlacementAndVisibility);
+ private ControlListener targetMovementListener = ControlListener
+ .controlResizedAdapter(__ -> asyncExecIfOpen(FindReplaceOverlay.this::updatePlacementAndVisibility));
private void asyncExecIfOpen(Runnable operation) {
- Shell shell = getShell();
- if (shell != null) {
- shell.getDisplay().asyncExec(() -> {
- if (getShell() != null) {
+ if (!containerControl.isDisposed()) {
+ containerControl.getDisplay().asyncExec(() -> {
+ if (containerControl != null || containerControl.isDisposed()) {
operation.run();
}
});
}
}
- private ShellAdapter overlayDeactivationListener = new ShellAdapter() {
- @Override
- public void shellActivated(ShellEvent e) {
- // Do nothing
- }
-
- @Override
- public void shellDeactivated(ShellEvent e) {
+ private FocusListener targetFocusListener = FocusListener.focusGainedAdapter(__ -> {
removeSearchScope();
searchBar.storeHistory();
- }
- };
-
- private static class TargetPartVisibilityHandler implements IPartListener2, IPageChangedListener {
- private final IWorkbenchPart targetPart;
- private final IWorkbenchPart topLevelPart;
- private final Consumer asyncExecIfOpen;
- private final Runnable closeCallback;
- private final Runnable placementUpdateCallback;
-
- private boolean isTopLevelVisible = true;
- private boolean isNestedLevelVisible = true;
-
- TargetPartVisibilityHandler(IWorkbenchPart targetPart, Consumer asyncExecIfOpen,
- Runnable closeCallback,
- Runnable placementUpdateCallback) {
- this.targetPart = targetPart;
- this.asyncExecIfOpen = asyncExecIfOpen;
- this.closeCallback = closeCallback;
- this.placementUpdateCallback = placementUpdateCallback;
- if (targetPart != null && targetPart.getSite() instanceof MultiPageEditorSite multiEditorSite) {
- topLevelPart = multiEditorSite.getMultiPageEditor();
- } else {
- topLevelPart = targetPart;
- }
- }
-
- @Override
- public void partBroughtToTop(IWorkbenchPartReference partRef) {
- if (partRef.getPart(false) == topLevelPart && !isTopLevelVisible) {
- this.isTopLevelVisible = true;
- asyncExecIfOpen.accept(this::adaptToPartActivationChange);
- }
- }
-
- @Override
- public void partVisible(IWorkbenchPartReference partRef) {
- if (partRef.getPart(false) == topLevelPart && !isTopLevelVisible) {
- this.isTopLevelVisible = true;
- asyncExecIfOpen.accept(this::adaptToPartActivationChange);
- }
- }
-
- @Override
- public void partHidden(IWorkbenchPartReference partRef) {
- if (partRef.getPart(false) == topLevelPart && isTopLevelVisible) {
- this.isTopLevelVisible = false;
- asyncExecIfOpen.accept(this::adaptToPartActivationChange);
- }
- }
-
- @Override
- public void partClosed(IWorkbenchPartReference partRef) {
- if (partRef.getPart(false) == topLevelPart) {
- closeCallback.run();
- }
- }
-
- @Override
- public void pageChanged(PageChangedEvent event) {
- if (event.getSource() == topLevelPart) {
- boolean isPageVisible = event.getSelectedPage() == targetPart;
- if (isNestedLevelVisible != isPageVisible) {
- this.isNestedLevelVisible = isPageVisible;
- asyncExecIfOpen.accept(this::adaptToPartActivationChange);
- }
- }
- }
-
- private void adaptToPartActivationChange() {
- if (targetPart.getSite().getPart() == null) {
- return;
- }
- placementUpdateCallback.run();
-
- if (!isTargetVisible()) {
- targetPart.getSite().getShell().setActive();
- targetPart.setFocus();
- asyncExecIfOpen.accept(this::focusTargetWidget);
- }
- }
-
- private void focusTargetWidget() {
- if (targetPart.getSite().getPart() == null) {
- return;
- }
- if (targetPart instanceof StatusTextEditor textEditor) {
- textEditor.getAdapter(ITextViewer.class).getTextWidget().forceFocus();
- }
- }
-
- public boolean isTargetVisible() {
- return isTopLevelVisible && isNestedLevelVisible;
- }
- }
+ });
private KeyListener closeOnTargetEscapeListener = KeyListener.keyPressedAdapter(c -> {
if (c.keyCode == SWT.ESC) {
@@ -336,16 +378,18 @@ public boolean isTargetVisible() {
*
* @return the dialog settings to be used
*/
- private static IDialogSettings getDialogSettings() {
+ private IDialogSettings getDialogSettings() {
IDialogSettings settings = PlatformUI
- .getDialogSettingsProvider(FrameworkUtil.getBundle(FindReplaceOverlay.class)).getDialogSettings();
- return settings;
+ .getDialogSettingsProvider(FrameworkUtil.getBundle(FindReplaceAction.class)).getDialogSettings();
+ IDialogSettings dialogSettings = settings.getSection(FindReplaceAction.class.getClass().getName());
+ if (dialogSettings == null)
+ dialogSettings = settings.addNewSection(FindReplaceAction.class.getClass().getName());
+ return dialogSettings;
}
- @Override
- public boolean close() {
- if (!overlayOpen) {
- return true;
+ public void close() {
+ if (containerControl.isDisposed() || !containerControl.isVisible()) {
+ return;
}
if (targetPart != null) {
targetPart.setFocus();
@@ -353,31 +397,24 @@ public boolean close() {
storeOverlaySettings();
findReplaceLogic.activate(SearchOptions.GLOBAL);
- overlayOpen = false;
- replaceBarOpen = false;
unbindListeners();
- container.dispose();
- return super.close();
+ containerControl.setVisible(false);
}
- @Override
- public int open() {
- int returnCode = Window.OK;
- if (!overlayOpen) {
- returnCode = super.open();
+ public void open() {
+ if (!containerControl.isVisible()) {
+ containerControl.setVisible(true);
bindListeners();
restoreOverlaySettings();
}
- overlayOpen = true;
- applyOverlayColors(backgroundToUse, true);
- updateFromTargetSelection();
- searchBar.forceFocus();
-
- getShell().layout();
+ assignIDs();
+ containerControl.layout();
+ containerControl.moveAbove(null);
updatePlacementAndVisibility();
updateContentAssistAvailability();
- return returnCode;
+ searchBar.setFocus();
+ updateFromTargetSelection();
}
private void storeOverlaySettings() {
@@ -386,117 +423,143 @@ private void storeOverlaySettings() {
private void restoreOverlaySettings() {
Boolean shouldOpenReplaceBar = getDialogSettings().getBoolean(REPLACE_BAR_OPEN_DIALOG_SETTING);
- if (shouldOpenReplaceBar) {
- toggleReplace();
- }
+ setReplaceVisible(shouldOpenReplaceBar);
}
- private void applyOverlayColors(Color color, boolean tryToColorReplaceBar) {
- closeTools.setBackground(color);
- closeButton.setBackground(color);
-
- searchTools.setBackground(color);
- searchInSelectionButton.setBackground(color);
- wholeWordSearchButton.setBackground(color);
- regexSearchButton.setBackground(color);
- caseSensitiveSearchButton.setBackground(color);
- searchAllButton.setBackground(color);
- searchUpButton.setBackground(color);
- searchDownButton.setBackground(color);
-
- searchBarContainer.setBackground(color);
- searchBar.setBackground(color);
- searchContainer.setBackground(color);
-
- if (replaceBarOpen && tryToColorReplaceBar) {
- replaceContainer.setBackground(color);
- replaceBar.setBackground(color);
- replaceBarContainer.setBackground(color);
- replaceTools.setBackground(color);
- replaceAllButton.setBackground(color);
- replaceButton.setBackground(color);
+ @SuppressWarnings("nls")
+ private void assignIDs() {
+ replaceToggle.setData(ID_DATA_KEY, "replaceToggle");
+ searchBar.setData(ID_DATA_KEY, "searchInput");
+ searchBackwardButton.setData(ID_DATA_KEY, "searchBackward");
+ searchForwardButton.setData(ID_DATA_KEY, "searchForward");
+ selectAllButton.setData(ID_DATA_KEY, "selectAll");
+ searchInSelectionButton.setData(ID_DATA_KEY, "searchInSelection");
+ wholeWordSearchButton.setData(ID_DATA_KEY, "wholeWordSearch");
+ regexSearchButton.setData(ID_DATA_KEY, "regExSearch");
+ caseSensitiveSearchButton.setData(ID_DATA_KEY, "caseSensitiveSearch");
+
+ if (replaceBarOpen) {
+ replaceBar.setData(ID_DATA_KEY, "replaceInput");
+ replaceButton.setData(ID_DATA_KEY, "replaceOne");
+ replaceAllButton.setData(ID_DATA_KEY, "replaceAll");
}
}
private void unbindListeners() {
- getShell().removeShellListener(overlayDeactivationListener);
- if (targetPart != null && targetPart instanceof StatusTextEditor textEditor) {
- Control targetWidget = textEditor.getAdapter(ITextViewer.class).getTextWidget();
- if (targetWidget != null) {
- targetWidget.getShell().removeControlListener(shellMovementListener);
- targetWidget.removeListener(SWT.Move, targetRelocationListener);
- targetWidget.removeListener(SWT.Resize, targetRelocationListener);
- targetWidget.removeKeyListener(closeOnTargetEscapeListener);
- targetPart.getSite().getPage().removePartListener(targetPartVisibilityHandler);
- }
- }
+ targetControl.removeFocusListener(targetFocusListener);
+ targetControl.removeControlListener(targetMovementListener);
+ targetControl.removeKeyListener(closeOnTargetEscapeListener);
}
private void bindListeners() {
- getShell().addShellListener(overlayDeactivationListener);
- if (targetPart instanceof StatusTextEditor textEditor) {
- Control targetWidget = textEditor.getAdapter(ITextViewer.class).getTextWidget();
-
- targetWidget.getShell().addControlListener(shellMovementListener);
- targetWidget.addListener(SWT.Move, targetRelocationListener);
- targetWidget.addListener(SWT.Resize, targetRelocationListener);
- targetWidget.addKeyListener(closeOnTargetEscapeListener);
- targetPart.getSite().getPage().addPartListener(targetPartVisibilityHandler);
- }
- }
-
- @Override
- public Control createContents(Composite parent) {
- PlatformUI.getWorkbench().getHelpSystem().setHelp(getShell(),
- IAbstractTextEditorHelpContextIds.FIND_REPLACE_OVERLAY);
-
- backgroundToUse = new Color(getShell().getDisplay(), new RGBA(0, 0, 0, 0));
- return createDialog(parent);
+ targetControl.addFocusListener(targetFocusListener);
+ targetControl.addControlListener(targetMovementListener);
+ targetControl.addKeyListener(closeOnTargetEscapeListener);
}
- private Control createDialog(final Composite parent) {
+ private void createContainerAndSearchControls(Composite parent) {
+ if (insertedInTargetParent()) {
+ parent = parent.getParent();
+ }
+ retrieveColors();
createMainContainer(parent);
-
- retrieveBackgroundColor();
-
- createFindContainer();
- createSearchBar();
- createSearchTools();
- createCloseTools();
initializeSearchShortcutHandlers();
- container.layout();
-
- applyDialogFont(container);
- return container;
+ containerControl.layout();
}
private void initializeSearchShortcutHandlers() {
searchTools.registerActionShortcutsAtControl(searchBar);
closeTools.registerActionShortcutsAtControl(searchBar);
- registerActionShortcutsAtControl(replaceToggleShortcut, searchBar);
+ replaceToggleTools.registerActionShortcutsAtControl(searchBar);
}
/**
* HACK: In order to not introduce a hard-coded color, we need to retrieve the
- * color of the "SWT.SEARCH"-Text. Since that search-bar has a border, we don't
- * want to have it in our own form. Instead, we create such a bar at start-up,
- * grab it's color and then immediately dispose of that bar.
+ * background color of text widgets and composite to color those widgets that
+ * would otherwise inherit non-fitting custom colors from the containing
+ * StyledText.
*/
- private void retrieveBackgroundColor() {
+ private void retrieveColors() {
if (targetPart instanceof StatusTextEditor textEditor) {
Control targetWidget = textEditor.getAdapter(ITextViewer.class).getTextWidget();
- backgroundToUse = targetWidget.getBackground();
+ widgetBackgroundColor = targetWidget.getBackground();
normalTextForegroundColor = targetWidget.getForeground();
} else {
- Text textBarForRetrievingTheRightColor = new Text(container, SWT.SINGLE | SWT.SEARCH);
- container.layout();
- backgroundToUse = textBarForRetrievingTheRightColor.getBackground();
+ Text textBarForRetrievingTheRightColor = new Text(targetControl.getShell(), SWT.SINGLE | SWT.SEARCH);
+ targetControl.getShell().layout();
+ widgetBackgroundColor = textBarForRetrievingTheRightColor.getBackground();
normalTextForegroundColor = textBarForRetrievingTheRightColor.getForeground();
textBarForRetrievingTheRightColor.dispose();
}
+ overlayBackgroundColor = retrieveDefaultCompositeBackground();
+ errorTextForegroundColor = JFaceColors.getErrorText(targetControl.getShell().getDisplay());
+ }
+
+ private Color retrieveDefaultCompositeBackground() {
+ AtomicReference colorReference = new AtomicReference<>();
+ Dialog dummyDialogForColorRetrieval = new Dialog(targetControl.getShell()) {
+ @Override
+ public void create() {
+ super.create();
+ colorReference.set(getContents().getBackground());
+ }
+
+ };
+ dummyDialogForColorRetrieval.create();
+ dummyDialogForColorRetrieval.close();
+ return colorReference.get();
+ }
+
+ /**
+ * A composite with a fixed background color, not adapting to theming.
+ */
+ private class FixedColorComposite extends Composite {
+ private Color fixColor;
+
+ public FixedColorComposite(Composite parent, int style, Color backgroundColor) {
+ super(parent, style);
+ this.fixColor = backgroundColor;
+ setBackground(backgroundColor);
+ }
+
+ @Override
+ public void setBackground(Color unusedColor) {
+ super.setBackground(fixColor);
+ }
}
+ private void createMainContainer(final Composite parent) {
+ containerControl = new FixedColorComposite(parent, SWT.NONE, overlayBackgroundColor);
+ GridDataFactory.fillDefaults().grab(true, true).align(GridData.FILL, GridData.FILL).applyTo(containerControl);
+ GridLayoutFactory.fillDefaults().numColumns(2).equalWidth(false).margins(2, 2).spacing(2, 0)
+ .applyTo(containerControl);
+
+ createReplaceToggle();
+ createContentsContainer();
+ }
+
+ private void createReplaceToggle() {
+ replaceToggleTools = new AccessibleToolBar(containerControl);
+ GridDataFactory.fillDefaults().grab(false, true).align(GridData.FILL, GridData.FILL)
+ .applyTo(replaceToggleTools);
+ replaceToggleTools.addMouseListener(MouseListener.mouseDownAdapter(__ -> setReplaceVisible(!replaceBarOpen)));
+
+ replaceToggle = new AccessibleToolItemBuilder(replaceToggleTools)
+ .withShortcuts(KeyboardShortcuts.TOGGLE_REPLACE)
+ .withImage(FindReplaceOverlayImages.get(FindReplaceOverlayImages.KEY_OPEN_REPLACE_AREA))
+ .withToolTipText(FindReplaceMessages.FindReplaceOverlay_replaceToggle_toolTip)
+ .withOperation(() -> setReplaceVisible(!replaceBarOpen)).withShortcuts(KeyboardShortcuts.TOGGLE_REPLACE)
+ .build();
+ }
+
+ private void createContentsContainer() {
+ contentGroup = new FixedColorComposite(containerControl, SWT.NONE, overlayBackgroundColor);
+ GridLayoutFactory.fillDefaults().numColumns(1).equalWidth(false).spacing(0, 2).applyTo(contentGroup);
+ GridDataFactory.fillDefaults().grab(true, true).align(GridData.FILL, GridData.FILL).applyTo(contentGroup);
+
+ createSearchContainer();
+ }
private void createSearchTools() {
searchTools = new AccessibleToolBar(searchContainer);
@@ -511,20 +574,20 @@ private void createSearchTools() {
searchTools.createToolItem(SWT.SEPARATOR);
- searchUpButton = new AccessibleToolItemBuilder(searchTools).withStyleBits(SWT.PUSH)
+ searchBackwardButton = new AccessibleToolItemBuilder(searchTools).withStyleBits(SWT.PUSH)
.withImage(FindReplaceOverlayImages.get(FindReplaceOverlayImages.KEY_FIND_PREV))
.withToolTipText(FindReplaceMessages.FindReplaceOverlay_upSearchButton_toolTip)
.withOperation(() -> performSearch(false))
.withShortcuts(KeyboardShortcuts.SEARCH_BACKWARD).build();
- searchDownButton = new AccessibleToolItemBuilder(searchTools).withStyleBits(SWT.PUSH)
+ searchForwardButton = new AccessibleToolItemBuilder(searchTools).withStyleBits(SWT.PUSH)
.withImage(FindReplaceOverlayImages.get(FindReplaceOverlayImages.KEY_FIND_NEXT))
.withToolTipText(FindReplaceMessages.FindReplaceOverlay_downSearchButton_toolTip)
.withOperation(() -> performSearch(true))
.withShortcuts(KeyboardShortcuts.SEARCH_FORWARD).build();
- searchDownButton.setSelection(true); // by default, search down
+ searchForwardButton.setSelection(true); // by default, search down
- searchAllButton = new AccessibleToolItemBuilder(searchTools).withStyleBits(SWT.PUSH)
+ selectAllButton = new AccessibleToolItemBuilder(searchTools).withStyleBits(SWT.PUSH)
.withImage(FindReplaceOverlayImages.get(FindReplaceOverlayImages.KEY_SEARCH_ALL))
.withToolTipText(FindReplaceMessages.FindReplaceOverlay_searchAllButton_toolTip)
.withOperation(this::performSelectAll).withShortcuts(KeyboardShortcuts.SEARCH_ALL).build();
@@ -534,7 +597,8 @@ private void createCloseTools() {
closeTools = new AccessibleToolBar(searchContainer);
GridDataFactory.fillDefaults().grab(false, true).align(GridData.END, GridData.END).applyTo(closeTools);
- closeButton = new AccessibleToolItemBuilder(closeTools).withStyleBits(SWT.PUSH)
+ // Close button
+ new AccessibleToolItemBuilder(closeTools).withStyleBits(SWT.PUSH)
.withImage(FindReplaceOverlayImages.get(FindReplaceOverlayImages.KEY_CLOSE))
.withToolTipText(FindReplaceMessages.FindReplaceOverlay_closeButton_toolTip) //
.withOperation(this::close)
@@ -562,6 +626,7 @@ private void createRegexSearchButton() {
wholeWordSearchButton.setEnabled(findReplaceLogic.isAvailable(SearchOptions.WHOLE_WORD));
updateIncrementalSearch();
updateContentAssistAvailability();
+ decorate();
}).withShortcuts(KeyboardShortcuts.OPTION_REGEX).build();
regexSearchButton.setSelection(findReplaceLogic.isActive(SearchOptions.REGEX));
}
@@ -589,8 +654,6 @@ private void createWholeWordsButton() {
}
private void createReplaceTools() {
- Color warningColor = JFaceColors.getErrorText(getShell().getDisplay());
-
replaceTools = new AccessibleToolBar(replaceContainer);
replaceTools.createToolItem(SWT.SEPARATOR);
@@ -601,7 +664,7 @@ private void createReplaceTools() {
.withToolTipText(FindReplaceMessages.FindReplaceOverlay_replaceButton_toolTip)
.withOperation(() -> {
if (getFindString().isEmpty()) {
- showUserFeedback(warningColor, true);
+ applyErrorColor(replaceBar);
return;
}
performSingleReplace();
@@ -612,7 +675,7 @@ private void createReplaceTools() {
.withToolTipText(FindReplaceMessages.FindReplaceOverlay_replaceAllButton_toolTip)
.withOperation(() -> {
if (getFindString().isEmpty()) {
- showUserFeedback(warningColor, true);
+ applyErrorColor(replaceBar);
return;
}
performReplaceAll();
@@ -628,111 +691,89 @@ private ContentAssistCommandAdapter createContentAssistField(HistoryTextWrapper
}
private void createSearchBar() {
- HistoryStore searchHistory = new HistoryStore(getDialogSettings(), "searchhistory", //$NON-NLS-1$
+ searchBarContainer = new Composite(searchContainer, SWT.NONE);
+ GridDataFactory.fillDefaults().grab(true, true).align(GridData.FILL, GridData.FILL).applyTo(searchBarContainer);
+ GridLayoutFactory.fillDefaults().numColumns(1).applyTo(searchBarContainer);
+ HistoryStore searchHistory = new HistoryStore(getDialogSettings(), "findhistory", //$NON-NLS-1$
HISTORY_SIZE);
searchBar = new HistoryTextWrapper(searchHistory, searchBarContainer, SWT.SINGLE);
+ searchBarDecoration = new ControlDecoration(searchBar, SWT.BOTTOM | SWT.LEFT);
GridDataFactory.fillDefaults().grab(true, true).align(GridData.FILL, GridData.FILL).applyTo(searchBar);
searchBar.forceFocus();
searchBar.selectAll();
searchBar.addModifyListener(e -> {
wholeWordSearchButton.setEnabled(findReplaceLogic.isAvailable(SearchOptions.WHOLE_WORD));
-
- showUserFeedback(normalTextForegroundColor, true);
updateIncrementalSearch();
+ decorate();
});
searchBar.addFocusListener(new FocusListener() {
-
@Override
public void focusGained(FocusEvent e) {
findReplaceLogic.resetIncrementalBaseLocation();
}
-
@Override
public void focusLost(FocusEvent e) {
- showUserFeedback(normalTextForegroundColor, false);
+ resetErrorColoring();
}
-
});
+ searchBar.addFocusListener(targetActionActivationHandling);
searchBar.setMessage(FindReplaceMessages.FindReplaceOverlay_searchBar_message);
contentAssistSearchField = createContentAssistField(searchBar, true);
+ searchBar.setTabList(null);
}
private void updateIncrementalSearch() {
findReplaceLogic.setFindString(searchBar.getText());
- evaluateFindReplaceStatus();
+ evaluateStatusAfterFind();
}
private void createReplaceBar() {
+ replaceBarContainer = new Composite(replaceContainer, SWT.NONE);
+ GridDataFactory.fillDefaults().grab(true, true).align(GridData.FILL, GridData.END).applyTo(replaceBarContainer);
+ GridLayoutFactory.fillDefaults().numColumns(1).equalWidth(false).applyTo(replaceBarContainer);
+
HistoryStore replaceHistory = new HistoryStore(getDialogSettings(), "replacehistory", HISTORY_SIZE); //$NON-NLS-1$
replaceBar = new HistoryTextWrapper(replaceHistory, replaceBarContainer, SWT.SINGLE);
GridDataFactory.fillDefaults().grab(true, false).align(SWT.FILL, SWT.END).applyTo(replaceBar);
replaceBar.setMessage(FindReplaceMessages.FindReplaceOverlay_replaceBar_message);
replaceBar.addModifyListener(e -> {
findReplaceLogic.setReplaceString(replaceBar.getText());
+ resetErrorColoring();
});
- replaceBar.addFocusListener(FocusListener.focusLostAdapter(e -> {
- replaceBar.setForeground(normalTextForegroundColor);
- searchBar.setForeground(normalTextForegroundColor);
- }));
+ replaceBar.addFocusListener(targetActionActivationHandling);
+ replaceBar.addFocusListener(FocusListener.focusLostAdapter(e -> resetErrorColoring()));
contentAssistReplaceField = createContentAssistField(replaceBar, false);
}
- private void createFindContainer() {
- searchContainer = new Composite(contentGroup, SWT.NONE);
+ private void createSearchContainer() {
+ searchContainer = new FixedColorComposite(contentGroup, SWT.NONE, widgetBackgroundColor);
GridDataFactory.fillDefaults().grab(true, true).align(GridData.FILL, GridData.FILL).applyTo(searchContainer);
- GridLayoutFactory.fillDefaults().numColumns(3).extendedMargins(4, 4, 3, 5).equalWidth(false)
+ GridLayoutFactory.fillDefaults().numColumns(3).extendedMargins(7, 4, 3, 5).equalWidth(false)
.applyTo(searchContainer);
- searchContainer.setBackground(getShell().getDisplay().getSystemColor(SWT.COLOR_WIDGET_LIGHT_SHADOW));
- searchBarContainer = new Composite(searchContainer, SWT.NONE);
- GridDataFactory.fillDefaults().grab(true, true).align(GridData.FILL, GridData.FILL).applyTo(searchBarContainer);
- GridLayoutFactory.fillDefaults().numColumns(1).applyTo(searchBarContainer);
+
+ createSearchBar();
+ createSearchTools();
+ createCloseTools();
}
private void createReplaceContainer() {
- replaceContainer = new Composite(contentGroup, SWT.NONE);
+ replaceContainer = new FixedColorComposite(contentGroup, SWT.NONE, widgetBackgroundColor);
GridDataFactory.fillDefaults().grab(true, true).align(GridData.FILL, GridData.FILL).applyTo(replaceContainer);
- GridLayoutFactory.fillDefaults().margins(0, 1).numColumns(2).extendedMargins(4, 4, 3, 5).equalWidth(false)
+ GridLayoutFactory.fillDefaults().margins(0, 0).numColumns(2).extendedMargins(7, 4, 3, 5).equalWidth(false)
.applyTo(replaceContainer);
- replaceContainer.setBackground(getShell().getDisplay().getSystemColor(SWT.COLOR_WIDGET_LIGHT_SHADOW));
- replaceBarContainer = new Composite(replaceContainer, SWT.NONE);
- GridDataFactory.fillDefaults().grab(true, true).align(GridData.FILL, GridData.END).applyTo(replaceBarContainer);
- GridLayoutFactory.fillDefaults().numColumns(1).equalWidth(false).applyTo(replaceBarContainer);
- }
- private void createMainContainer(final Composite parent) {
- container = new Composite(parent, SWT.NONE);
- GridLayoutFactory.fillDefaults().numColumns(2).equalWidth(false).margins(2, 2).spacing(2, 0).applyTo(container);
- GridDataFactory.fillDefaults().grab(true, true).align(GridData.FILL, GridData.FILL).applyTo(container);
-
- createReplaceToggle();
-
- contentGroup = new Composite(container, SWT.NULL);
- GridLayoutFactory.fillDefaults().numColumns(1).equalWidth(false).spacing(2, 3).applyTo(contentGroup);
- GridDataFactory.fillDefaults().grab(true, true).align(GridData.FILL, GridData.FILL).applyTo(contentGroup);
+ createReplaceBar();
+ createReplaceTools();
}
- private void createReplaceToggle() {
- replaceToggleShortcut = new FindReplaceOverlayAction(this::toggleReplace);
- replaceToggleShortcut.addShortcuts(KeyboardShortcuts.TOGGLE_REPLACE);
- replaceToggle = new Button(container, SWT.FLAT | SWT.PUSH);
- GridDataFactory.fillDefaults().grab(false, true).align(GridData.BEGINNING, GridData.FILL)
- .applyTo(replaceToggle);
- replaceToggle.setToolTipText(replaceToggleShortcut
- .addShortcutHintToTooltipText(FindReplaceMessages.FindReplaceOverlay_replaceToggle_toolTip));
- replaceToggle.setImage(FindReplaceOverlayImages.get(FindReplaceOverlayImages.KEY_OPEN_REPLACE_AREA));
- replaceToggle.addSelectionListener(SelectionListener.widgetSelectedAdapter(e -> toggleReplace()));
- }
-
- private void toggleReplace() {
- if (!replaceBarOpen && findReplaceLogic.getTarget().isEditable()) {
+ private void setReplaceVisible(boolean visible) {
+ if (findReplaceLogic.getTarget().isEditable() && visible) {
createReplaceDialog();
replaceToggle.setImage(FindReplaceOverlayImages.get(FindReplaceOverlayImages.KEY_CLOSE_REPLACE_AREA));
} else {
hideReplace();
replaceToggle.setImage(FindReplaceOverlayImages.get(FindReplaceOverlayImages.KEY_OPEN_REPLACE_AREA));
}
- replaceToggle.setSelection(false); // We don't want the button to look "locked in", so don't
- // use it's selectionState
updateContentAssistAvailability();
}
@@ -740,6 +781,7 @@ private void hideReplace() {
if (!replaceBarOpen) {
return;
}
+ customFocusOrder.dispose();
searchBar.forceFocus();
contentAssistReplaceField = null;
replaceBarOpen = false;
@@ -753,19 +795,18 @@ private void createReplaceDialog() {
}
replaceBarOpen = true;
createReplaceContainer();
- createReplaceBar();
- createReplaceTools();
initializeReplaceShortcutHandlers();
updatePlacementAndVisibility();
- applyOverlayColors(backgroundToUse, true);
+ assignIDs();
replaceBar.forceFocus();
+ customFocusOrder.apply();
}
private void initializeReplaceShortcutHandlers() {
replaceTools.registerActionShortcutsAtControl(replaceBar);
closeTools.registerActionShortcutsAtControl(replaceBar);
- registerActionShortcutsAtControl(replaceToggleShortcut, replaceBar);
+ replaceToggleTools.registerActionShortcutsAtControl(replaceBar);
}
private void enableSearchTools(boolean enable) {
@@ -777,9 +818,10 @@ private void enableReplaceToggle(boolean enable) {
if (!okayToUse(replaceToggle)) {
return;
}
- boolean visible = enable && findReplaceLogic.getTarget().isEditable();
- ((GridData) replaceToggle.getLayoutData()).exclude = !visible;
- replaceToggle.setVisible(visible);
+ boolean shouldBeVisible = enable && findReplaceLogic.getTarget().isEditable();
+ ((GridLayout) containerControl.getLayout()).numColumns = shouldBeVisible ? 2 : 1;
+ ((GridData) replaceToggleTools.getLayoutData()).exclude = !shouldBeVisible;
+ replaceToggleTools.setVisible(shouldBeVisible);
}
private void enableReplaceTools(boolean enable) {
@@ -852,33 +894,13 @@ private void repositionTextSelection() {
}
private void updatePlacementAndVisibility() {
- if (!targetPartVisibilityHandler.isTargetVisible()) {
- getShell().setVisible(false);
- return;
- }
- if (isInvalidTargetShell()) {
- asyncExecIfOpen(() -> {
- if (isInvalidTargetShell()) {
- close();
- setParentShell(targetPart.getSite().getShell());
- open();
- targetPart.setFocus();
- }
- });
- return;
- }
- getShell().requestLayout();
- if (!(targetPart instanceof StatusTextEditor textEditor)) {
- return;
- }
-
- Control targetWidget = textEditor.getAdapter(ITextViewer.class).getTextWidget();
- if (!okayToUse(targetWidget)) {
+ if (!okayToUse(targetControl)) {
this.close();
return;
}
- Rectangle targetControlBounds = calculateAbsoluteControlBounds(targetWidget);
+ containerControl.requestLayout();
+ Rectangle targetControlBounds = calculateControlBounds(targetControl);
Rectangle overlayBounds = calculateDesiredOverlayBounds(targetControlBounds);
updatePosition(overlayBounds);
configureDisplayedWidgetsForWidth(overlayBounds.width);
@@ -887,21 +909,16 @@ private void updatePlacementAndVisibility() {
repositionTextSelection();
}
- private boolean isInvalidTargetPart() {
- return targetPart == null || targetPart.getSite() == null || targetPart.getSite().getShell() == null;
- }
-
- private boolean isInvalidTargetShell() {
- if (isInvalidTargetPart()) {
- return false;
+ private Rectangle calculateControlBounds(Control control) {
+ Rectangle controlBounds = control.getBounds();
+ int width = controlBounds.width;
+ int height = controlBounds.height;
+ int x = 0;
+ int y = 0;
+ if (insertedInTargetParent()) {
+ x = controlBounds.x;
+ y = controlBounds.y;
}
- return !targetPart.getSite().getShell().equals(getShell().getParent());
- }
-
- private Rectangle calculateAbsoluteControlBounds(Control control) {
- Rectangle localControlBounds = control.getBounds();
- int width = localControlBounds.width;
- int height = localControlBounds.height;
if (control instanceof Scrollable scrollable) {
ScrollBar verticalBar = scrollable.getVerticalBar();
ScrollBar horizontalBar = scrollable.getHorizontalBar();
@@ -915,13 +932,12 @@ private Rectangle calculateAbsoluteControlBounds(Control control) {
if (control instanceof StyledText styledText) {
width -= styledText.getRightMargin();
}
- Point absoluteControlPosition = control.toDisplay(0, 0);
- return new Rectangle(absoluteControlPosition.x, absoluteControlPosition.y, width, height);
+ return new Rectangle(x, y, width, height);
}
private Rectangle calculateDesiredOverlayBounds(Rectangle targetControlBounds) {
int width = getIdealOverlayWidth(targetControlBounds);
- int height = container.computeSize(SWT.DEFAULT, SWT.DEFAULT).y;
+ int height = containerControl.computeSize(SWT.DEFAULT, SWT.DEFAULT).y;
int x = targetControlBounds.x + targetControlBounds.width - width;
int y = targetControlBounds.y;
@@ -933,9 +949,9 @@ private Rectangle calculateDesiredOverlayBounds(Rectangle targetControlBounds) {
}
private void updatePosition(Rectangle overlayBounds) {
- getShell().setSize(new Point(overlayBounds.width, overlayBounds.height));
- getShell().setLocation(new Point(overlayBounds.x, overlayBounds.y));
- getShell().layout(true);
+ containerControl.setSize(new Point(overlayBounds.width, overlayBounds.height));
+ containerControl.setLocation(new Point(overlayBounds.x, overlayBounds.y));
+ containerControl.layout(true);
}
private void updateVisibility(Rectangle targetControlBounds, Rectangle overlayBounds) {
@@ -946,9 +962,8 @@ private void updateVisibility(Rectangle targetControlBounds, Rectangle overlayBo
} else {
shallBeVisible = overlayBounds.y >= targetControlBounds.y;
}
- Shell shell = getShell();
- if (shallBeVisible != shell.isVisible()) {
- shell.setVisible(shallBeVisible);
+ if (shallBeVisible != containerControl.isVisible()) {
+ containerControl.setVisible(shallBeVisible);
}
}
@@ -957,8 +972,13 @@ private String getFindString() {
}
private void performSingleReplace() {
- findReplaceLogic.performReplaceAndFind();
- evaluateFindReplaceStatus();
+ if (findReplaceLogic.performSelectAndReplace()) {
+ findReplaceLogic.performSearch();
+ evaluateStatusAfterFind();
+ } else {
+ evaluateStatusAfterReplace();
+ }
+
replaceBar.storeHistory();
searchBar.storeHistory();
}
@@ -968,7 +988,7 @@ private void performSearch(boolean forward) {
activateInFindReplacerIf(SearchOptions.FORWARD, forward);
findReplaceLogic.performSearch();
activateInFindReplacerIf(SearchOptions.FORWARD, oldForwardSearchSetting);
- evaluateFindReplaceStatus();
+ evaluateStatusAfterFind();
searchBar.storeHistory();
}
@@ -987,22 +1007,28 @@ private void updateFromTargetSelection() {
searchBar.setSelection(0, searchBar.getText().length());
}
- private void evaluateFindReplaceStatus() {
- Color warningColor = JFaceColors.getErrorText(getShell().getDisplay());
- IFindReplaceStatus status = findReplaceLogic.getStatus();
+ private void evaluateStatusAfterFind() {
+ resetErrorColoring();
+ if (!findReplaceLogic.getStatus().wasSuccessful()) {
+ applyErrorColor(searchBar);
+ }
+ }
- if (!status.wasSuccessful()) {
- boolean colorReplaceBar = okayToUse(replaceBar) && replaceBar.isFocusControl();
- showUserFeedback(warningColor, colorReplaceBar);
- } else {
- showUserFeedback(normalTextForegroundColor, false);
+ private void evaluateStatusAfterReplace() {
+ resetErrorColoring();
+ if (!findReplaceLogic.getStatus().wasSuccessful()) {
+ applyErrorColor(replaceBar);
}
}
- private void showUserFeedback(Color feedbackColor, boolean colorReplaceBar) {
- searchBar.setForeground(feedbackColor);
- if (colorReplaceBar && okayToUse(replaceBar)) {
- replaceBar.setForeground(feedbackColor);
+ private void applyErrorColor(HistoryTextWrapper inputField) {
+ inputField.setForeground(errorTextForegroundColor);
+ }
+
+ private void resetErrorColoring() {
+ searchBar.setForeground(normalTextForegroundColor);
+ if (okayToUse(replaceBar)) {
+ replaceBar.setForeground(normalTextForegroundColor);
}
}
@@ -1020,7 +1046,7 @@ private static boolean okayToUse(Widget widget) {
public void setPositionToTop(boolean shouldPositionOverlayOnTop) {
positionAtTop = shouldPositionOverlayOnTop;
- if (overlayOpen) {
+ if (containerControl != null && containerControl.isVisible()) {
updatePlacementAndVisibility();
}
}
@@ -1040,4 +1066,13 @@ private void setContentAssistsEnablement(boolean enable) {
private void updateContentAssistAvailability() {
setContentAssistsEnablement(findReplaceLogic.isAvailableAndActive(SearchOptions.REGEX));
}
+
+ private void decorate() {
+ if (regexSearchButton.getSelection()) {
+ SearchDecoration.validateRegex(getFindString(), searchBarDecoration);
+ } else {
+ searchBarDecoration.hide();
+ }
+ }
+
}
\ No newline at end of file
diff --git a/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/findandreplace/overlay/HistoryTextWrapper.java b/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/findandreplace/overlay/HistoryTextWrapper.java
index 9b13ca93f51..0f5303f7c15 100644
--- a/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/findandreplace/overlay/HistoryTextWrapper.java
+++ b/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/findandreplace/overlay/HistoryTextWrapper.java
@@ -192,7 +192,10 @@ public void setForeground(Color color) {
@Override
public boolean forceFocus() {
- return textBar.forceFocus();
+ if (!textBar.isDisposed()) {
+ return textBar.forceFocus();
+ }
+ return false;
}
@Override
@@ -204,4 +207,8 @@ public Text getTextBar() {
return textBar;
}
+ AccessibleToolBar getDropDownTool() {
+ return tools;
+ }
+
}
diff --git a/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/findandreplace/overlay/SearchHistoryMenu.java b/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/findandreplace/overlay/SearchHistoryMenu.java
index 4360d900f91..4c7d127ae52 100644
--- a/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/findandreplace/overlay/SearchHistoryMenu.java
+++ b/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/findandreplace/overlay/SearchHistoryMenu.java
@@ -54,6 +54,7 @@ public void shellDeactivated(ShellEvent e) {
private int width;
private Table table;
private TableColumn column;
+ private int selectedIndexInTable = -1;
public SearchHistoryMenu(Shell parent, HistoryStore history, Consumer historyEntrySelectedCallback) {
super(parent);
@@ -92,28 +93,58 @@ public Control createContents(Composite parent) {
return table;
}
+ private void moveSelectionInTable(int indexShift) {
+ selectedIndexInTable += indexShift;
+ if (selectedIndexInTable < 0) {
+ selectedIndexInTable = table.getItemCount() - 1;
+ } else if (selectedIndexInTable > table.getItemCount() - 1) {
+ selectedIndexInTable = 0;
+ }
+ table.setSelection(selectedIndexInTable);
+ historyEntrySelectedCallback.accept(table.getSelection()[0].getText());
+ }
+
private void attachTableListeners() {
- table.addSelectionListener(SelectionListener.widgetSelectedAdapter(e -> {
- TableItem[] selection = table.getSelection();
- if (selection.length == 0) {
- historyEntrySelectedCallback.accept(null);
- return;
+ table.addListener(SWT.MouseMove, event -> {
+ Point point = new Point(event.x, event.y);
+ TableItem item = table.getItem(point);
+ if (item != null) {
+ table.setSelection(item);
+ selectedIndexInTable = table.getSelectionIndex();
}
- String text = selection[0].getText();
- if (text != null) {
- historyEntrySelectedCallback.accept(text);
+ });
+ table.addKeyListener(KeyListener.keyPressedAdapter(e -> {
+ if (e.keyCode == SWT.ARROW_DOWN) {
+ moveSelectionInTable(1);
+ e.doit = false;
+ } else if (e.keyCode == SWT.ARROW_UP) {
+ moveSelectionInTable(-1);
+ e.doit = false;
+ } else if (e.keyCode == SWT.CR || e.keyCode == SWT.KEYPAD_CR) {
+ notifyParentOfSelectionInput();
+ close();
}
- historyEntrySelectedCallback.accept(null);
+ }));
+ table.addSelectionListener(SelectionListener.widgetSelectedAdapter(e -> {
+ notifyParentOfSelectionInput();
}));
table.addMouseListener(MouseListener.mouseDownAdapter(e -> {
table.notifyListeners(SWT.Selection, null);
close();
}));
- table.addKeyListener(KeyListener.keyPressedAdapter(e -> {
- if (e.keyCode == SWT.CR || e.keyCode == SWT.KEYPAD_CR) {
- close();
- }
- }));
+ }
+
+ private void notifyParentOfSelectionInput() {
+ TableItem[] selection = table.getSelection();
+ if (selection.length == 0) {
+ historyEntrySelectedCallback.accept(null);
+ return;
+ }
+ String text = selection[0].getText();
+ if (text != null) {
+ historyEntrySelectedCallback.accept(text);
+ }
+ historyEntrySelectedCallback.accept(null);
}
private void positionShell() {
diff --git a/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/FindNextAction.java b/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/FindNextAction.java
index 3fbe7f732c3..3755132e0ec 100644
--- a/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/FindNextAction.java
+++ b/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/FindNextAction.java
@@ -340,14 +340,13 @@ private int findAndSelect(int offset, String findString, boolean forwardSearch,
* @return the dialog settings to be used
*/
private IDialogSettings getDialogSettings() {
- IDialogSettings settings = PlatformUI.getDialogSettingsProvider(FrameworkUtil.getBundle(FindNextAction.class))
- .getDialogSettings();
- fDialogSettings= settings.getSection(FindReplaceDialog.class.getName());
+ IDialogSettings settings = PlatformUI
+ .getDialogSettingsProvider(FrameworkUtil.getBundle(FindReplaceAction.class)).getDialogSettings();
+ fDialogSettings = settings.getSection(FindReplaceAction.class.getClass().getName());
if (fDialogSettings == null)
- fDialogSettings= settings.addNewSection(FindReplaceDialog.class.getName());
+ fDialogSettings = settings.addNewSection(FindReplaceAction.class.getClass().getName());
return fDialogSettings;
}
-
/**
* Initializes itself from the dialog settings with the same state
* as at the previous invocation.
diff --git a/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/FindReplaceAction.java b/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/FindReplaceAction.java
index e6ba4778444..41b617821c7 100644
--- a/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/FindReplaceAction.java
+++ b/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/FindReplaceAction.java
@@ -429,7 +429,7 @@ private void showOverlayInEditor() {
overlay.setPositionToTop(shouldPositionOverlayOnTop());
hookDialogPreferenceListener();
- overlay.getShell().addDisposeListener(__ -> removeDialogPreferenceListener());
+ overlay.getContainerControl().addDisposeListener(__ -> removeDialogPreferenceListener());
}
@Override
diff --git a/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/FindReplaceDialog.java b/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/FindReplaceDialog.java
index e65cff7268e..99be619dcd9 100644
--- a/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/FindReplaceDialog.java
+++ b/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/FindReplaceDialog.java
@@ -49,6 +49,7 @@
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.dialogs.IDialogSettings;
import org.eclipse.jface.fieldassist.ComboContentAdapter;
+import org.eclipse.jface.fieldassist.ControlDecoration;
import org.eclipse.jface.fieldassist.FieldDecoration;
import org.eclipse.jface.fieldassist.FieldDecorationRegistry;
import org.eclipse.jface.resource.JFaceColors;
@@ -64,6 +65,7 @@
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.fieldassist.ContentAssistCommandAdapter;
+import org.eclipse.ui.internal.SearchDecoration;
import org.eclipse.ui.internal.findandreplace.FindReplaceLogic;
import org.eclipse.ui.internal.findandreplace.FindReplaceLogicMessageGenerator;
import org.eclipse.ui.internal.findandreplace.FindReplaceMessages;
@@ -71,6 +73,7 @@
import org.eclipse.ui.internal.findandreplace.IFindReplaceLogic;
import org.eclipse.ui.internal.findandreplace.SearchOptions;
import org.eclipse.ui.internal.findandreplace.status.IFindReplaceStatus;
+import org.eclipse.ui.internal.findandreplace.status.InvalidRegExStatus;
import org.eclipse.ui.internal.texteditor.SWTUtil;
/**
@@ -79,6 +82,8 @@
*/
class FindReplaceDialog extends Dialog {
+ public static final String ID_DATA_KEY = "org.eclipse.ui.texteditor.FindReplaceDialog.id"; //$NON-NLS-1$
+
private static final int CLOSE_BUTTON_ID = 101;
private IFindReplaceLogic findReplaceLogic;
@@ -145,7 +150,10 @@ public void modifyText(ModifyEvent e) {
fIgnoreNextEvent = false;
return;
}
- evaluateFindReplaceStatus();
+ modificationHandler.run();
+ fFindField.addModifyListener(event -> {
+ decorate();
+ });
updateButtonState(!findReplaceLogic.isActive(SearchOptions.INCREMENTAL));
}
@@ -176,6 +184,7 @@ public void modifyText(ModifyEvent e) {
private Button fReplaceSelectionButton, fReplaceFindButton, fFindNextButton, fReplaceAllButton, fSelectAllButton;
private Combo fFindField, fReplaceField;
private InputModifyListener fFindModifyListener, fReplaceModifyListener;
+ private boolean regexOk = true;
/**
* Find and replace command adapters.
@@ -194,6 +203,7 @@ public void modifyText(ModifyEvent e) {
* @since 3.0
*/
private boolean fGiveFocusToFindField = true;
+ private ControlDecoration fFindFieldDecoration;
/**
* Holds the mnemonic/button pairs for all buttons.
@@ -275,6 +285,7 @@ public void create() {
shell.setText(FindReplaceMessages.FindReplace_Dialog_Title);
updateButtonState();
+ assignIDs();
}
/**
@@ -307,6 +318,7 @@ public void widgetSelected(SelectionEvent e) {
writeSelection();
updateButtonState(!somethingFound);
+
updateFindHistory();
evaluateFindReplaceStatus();
}
@@ -342,6 +354,7 @@ public void widgetSelected(SelectionEvent e) {
evaluateFindReplaceStatus();
}
});
+
setGridData(fReplaceFindButton, SWT.FILL, false, SWT.FILL, false);
fReplaceSelectionButton = makeButton(panel, FindReplaceMessages.FindReplace_ReplaceSelectionButton_label, 104,
@@ -576,6 +589,7 @@ public void widgetSelected(SelectionEvent e) {
return;
}
findReplaceLogic.activate(SearchOptions.GLOBAL);
+ updateFindString();
}
@Override
@@ -595,6 +609,7 @@ public void widgetSelected(SelectionEvent e) {
return;
}
findReplaceLogic.deactivate(SearchOptions.GLOBAL);
+ updateFindString();
}
@Override
@@ -631,15 +646,13 @@ private Composite createInputPanel(Composite parent) {
FindReplaceDocumentAdapterContentProposalProvider findProposer = new FindReplaceDocumentAdapterContentProposalProvider(
true);
fFindField = new Combo(panel, SWT.DROP_DOWN | SWT.BORDER);
+ fFindFieldDecoration = new ControlDecoration(fFindField, SWT.BOTTOM | SWT.LEFT);
+
fContentAssistFindField = new ContentAssistCommandAdapter(fFindField, contentAdapter, findProposer,
ITextEditorActionDefinitionIds.CONTENT_ASSIST_PROPOSALS, new char[0], true);
setGridData(fFindField, SWT.FILL, true, SWT.CENTER, false);
addDecorationMargin(fFindField);
- fFindModifyListener = new InputModifyListener(() -> {
- if (okToUse(fFindField)) {
- findReplaceLogic.setFindString(fFindField.getText());
- }
- });
+ fFindModifyListener = new InputModifyListener(this::updateFindString);
fFindField.addModifyListener(fFindModifyListener);
fReplaceLabel = new Label(panel, SWT.LEFT);
@@ -665,6 +678,12 @@ private Composite createInputPanel(Composite parent) {
return panel;
}
+ private void updateFindString() {
+ if (okToUse(fFindField)) {
+ findReplaceLogic.setFindString(fFindField.getText());
+ }
+ }
+
/**
* Creates the functional options part of the options defining section of the
* find replace dialog.
@@ -693,6 +712,7 @@ private Composite createOptionsGroup(Composite parent) {
public void widgetSelected(SelectionEvent e) {
setupFindReplaceLogic();
storeSettings();
+ updateFindString();
}
@Override
@@ -730,6 +750,7 @@ public void widgetDefaultSelected(SelectionEvent e) {
public void widgetSelected(SelectionEvent e) {
setupFindReplaceLogic();
storeSettings();
+ updateFindString();
}
@Override
@@ -747,11 +768,15 @@ public void widgetDefaultSelected(SelectionEvent e) {
@Override
public void widgetSelected(SelectionEvent e) {
boolean newState = fIsRegExCheckBox.getSelection();
+ decorate();
+ if (!newState) {
+ regexOk = true;
+ }
setupFindReplaceLogic();
storeSettings();
updateButtonState();
setContentAssistsEnablement(newState);
- fIncrementalCheckBox.setEnabled(findReplaceLogic.isAvailable(SearchOptions.INCREMENTAL));
+ updateFindString();
}
});
storeButtonWithMnemonicInMap(fIsRegExCheckBox);
@@ -760,9 +785,9 @@ public void widgetSelected(SelectionEvent e) {
@Override
public void widgetSelected(SelectionEvent e) {
updateButtonState();
+ updateFindString();
}
});
- fIncrementalCheckBox.setEnabled(findReplaceLogic.isAvailable(SearchOptions.INCREMENTAL));
return panel;
}
@@ -1047,9 +1072,10 @@ private void addDecorationMargin(Control control) {
if (!(layoutData instanceof GridData))
return;
GridData gd = (GridData) layoutData;
- FieldDecoration dec = FieldDecorationRegistry.getDefault()
+
+ FieldDecoration fieldDecoration = FieldDecorationRegistry.getDefault()
.getFieldDecoration(FieldDecorationRegistry.DEC_CONTENT_PROPOSAL);
- gd.horizontalIndent = dec.getImage().getBounds().width;
+ gd.horizontalIndent = fieldDecoration.getImage().getBounds().width;
}
/**
@@ -1089,8 +1115,9 @@ private void updateButtonState(boolean disableReplace) {
|| !isRegExSearchAvailableAndActive;
fWholeWordCheckBox.setEnabled(findReplaceLogic.isAvailable(SearchOptions.WHOLE_WORD));
- fFindNextButton.setEnabled(enable && isFindStringSet);
- fSelectAllButton.setEnabled(enable && isFindStringSet && (target instanceof IFindReplaceTargetExtension4));
+ fFindNextButton.setEnabled(enable && isFindStringSet && regexOk);
+ fSelectAllButton.setEnabled(
+ enable && isFindStringSet && (target instanceof IFindReplaceTargetExtension4) && regexOk);
fReplaceSelectionButton.setEnabled(
!disableReplace && enable && isTargetEditable && hasActiveSelection && isSelectionGoodForReplace);
fReplaceFindButton.setEnabled(!disableReplace && enable && isTargetEditable && isFindStringSet
@@ -1099,7 +1126,6 @@ private void updateButtonState(boolean disableReplace) {
}
}
-
/**
* Updates the given combo with the given content.
*
@@ -1258,10 +1284,10 @@ private void setupSearchHistory() {
*/
private IDialogSettings getDialogSettings() {
IDialogSettings settings = PlatformUI
- .getDialogSettingsProvider(FrameworkUtil.getBundle(FindReplaceDialog.class)).getDialogSettings();
- fDialogSettings = settings.getSection(getClass().getName());
+ .getDialogSettingsProvider(FrameworkUtil.getBundle(FindReplaceAction.class)).getDialogSettings();
+ fDialogSettings = settings.getSection(FindReplaceAction.class.getClass().getName());
if (fDialogSettings == null)
- fDialogSettings = settings.addNewSection(getClass().getName());
+ fDialogSettings = settings.addNewSection(FindReplaceAction.class.getClass().getName());
return fDialogSettings;
}
@@ -1332,19 +1358,29 @@ private void activateInFindReplaceLogicIf(SearchOptions option, boolean shouldAc
}
}
- /**
- * Evaluate the status of the FindReplaceLogic object.
- */
+ private void decorate() {
+ if (fIsRegExCheckBox.getSelection()) {
+ regexOk = SearchDecoration.validateRegex(fFindField.getText(), fFindFieldDecoration);
+ updateButtonState(regexOk);
+
+ } else {
+ fFindFieldDecoration.hide();
+ }
+ }
+
private void evaluateFindReplaceStatus() {
IFindReplaceStatus status = findReplaceLogic.getStatus();
- String dialogMessage = status.accept(new FindReplaceLogicMessageGenerator());
- fStatusLabel.setText(dialogMessage);
- if (status.isInputValid()) {
- fStatusLabel.setForeground(fReplaceLabel.getForeground());
- } else {
- fStatusLabel.setForeground(JFaceColors.getErrorText(fStatusLabel.getDisplay()));
+ if (!(status instanceof InvalidRegExStatus)) {
+ String dialogMessage = status.accept(new FindReplaceLogicMessageGenerator());
+ fStatusLabel.setText(dialogMessage);
+ if (status.isInputValid()) {
+ fStatusLabel.setForeground(fReplaceLabel.getForeground());
+ } else {
+ fStatusLabel.setForeground(JFaceColors.getErrorText(fStatusLabel.getDisplay()));
+ }
}
+
}
private String getCurrentSelection() {
@@ -1353,4 +1389,23 @@ private String getCurrentSelection() {
return null;
return target.getSelectionText();
}
+
+ @SuppressWarnings("nls")
+ private void assignIDs() {
+ fFindField.setData(ID_DATA_KEY, "searchInput");
+ fReplaceField.setData(ID_DATA_KEY, "replaceInput");
+ fForwardRadioButton.setData(ID_DATA_KEY, "searchForward");
+ fGlobalRadioButton.setData(ID_DATA_KEY, "globalSearch");
+ fSelectedRangeRadioButton.setData(ID_DATA_KEY, "searchInSelection");
+ fCaseCheckBox.setData(ID_DATA_KEY, "caseSensitiveSearch");
+ fWrapCheckBox.setData(ID_DATA_KEY, "wrappedSearch");
+ fWholeWordCheckBox.setData(ID_DATA_KEY, "wholeWordSearch");
+ fIncrementalCheckBox.setData(ID_DATA_KEY, "incrementalSearch");
+ fIsRegExCheckBox.setData(ID_DATA_KEY, "regExSearch");
+
+ fReplaceSelectionButton.setData(ID_DATA_KEY, "replaceOne");
+ fReplaceFindButton.setData(ID_DATA_KEY, "replaceFindOne");
+ fReplaceAllButton.setData(ID_DATA_KEY, "replaceAll");
+ }
+
}
diff --git a/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/SourceViewerDecorationSupport.java b/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/SourceViewerDecorationSupport.java
index 53888f2c335..deb6a18b4c5 100644
--- a/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/SourceViewerDecorationSupport.java
+++ b/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/SourceViewerDecorationSupport.java
@@ -26,6 +26,8 @@
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.preference.PreferenceConverter;
+import org.eclipse.jface.resource.ColorRegistry;
+import org.eclipse.jface.resource.JFaceResources;
import org.eclipse.jface.util.IPropertyChangeListener;
import org.eclipse.jface.util.PropertyChangeEvent;
@@ -45,6 +47,7 @@
import org.eclipse.jface.text.source.ISourceViewer;
import org.eclipse.jface.text.source.ISourceViewerExtension5;
import org.eclipse.jface.text.source.MatchingCharacterPainter;
+import org.eclipse.jface.text.source.inlined.AbstractInlinedAnnotation;
@@ -210,6 +213,8 @@ public void draw(Annotation annotation, GC gc, StyledText textWidget, int offset
private MatchingCharacterPainter fMatchingCharacterPainter;
/** The character painter's pair matcher */
private ICharacterPairMatcher fCharacterPairMatcher;
+ /** The inline annotation color key */
+ private String fInlineAnnotationColorKey;
/** Map with annotation type preference per annotation type */
private Map fAnnotationTypeKeyMap= new LinkedHashMap<>();
@@ -357,6 +362,10 @@ public void uninstall() {
if (fPreferenceStore != null) {
fPreferenceStore.removePropertyChangeListener(fPropertyChangeListener);
+ ColorRegistry registry = JFaceResources.getColorRegistry();
+ if (registry != null) {
+ registry.removeListener(fPropertyChangeListener);
+ }
fPropertyChangeListener= null;
fPreferenceStore= null;
}
@@ -438,6 +447,15 @@ public void setMarginPainterPreferenceKeys(String enableKey, String colorKey, St
fMarginPainterColumnKey= columnKey;
}
+ /**
+ * Set inline annotation color key.
+ *
+ * @since 3.19
+ */
+ public void setInlineAnnotationColorPreferenceKey(String inlineAnnotationColor) {
+ fInlineAnnotationColorKey = inlineAnnotationColor;
+ }
+
/**
* Sets the preference keys for the matching character painter.
*
@@ -610,7 +628,15 @@ protected void handlePreferenceStoreChanged(PropertyChangeEvent event) {
return;
}
}
-
+ if (fInlineAnnotationColorKey!=null && fInlineAnnotationColorKey.equals(p) && fAnnotationPainter!=null) {
+ ColorRegistry registry = JFaceResources.getColorRegistry();
+ if (registry != null) {
+ Color color = registry.get(fInlineAnnotationColorKey);
+ fAnnotationPainter.setInlineAnnotationColor(color);
+ fAnnotationPainter.setAnnotationTypeColor(AbstractInlinedAnnotation.TYPE, color);
+ fAnnotationPainter.paint(IPainter.CONFIGURATION);
+ }
+ }
}
/**
@@ -863,6 +889,14 @@ protected AnnotationPainter createAnnotationPainter() {
painter.addTextStyleStrategy(AnnotationPreference.STYLE_DASHED_BOX, fgDashedBoxStrategy);
painter.addTextStyleStrategy(AnnotationPreference.STYLE_UNDERLINE, fgUnderlineStrategy);
+ ColorRegistry registry = JFaceResources.getColorRegistry();
+ if (registry != null && fInlineAnnotationColorKey != null) {
+ Color color = registry.get(fInlineAnnotationColorKey);
+ painter.setInlineAnnotationColor(color);
+ if (fPropertyChangeListener != null) {
+ registry.addListener(fPropertyChangeListener);
+ }
+ }
return painter;
}
diff --git a/bundles/org.eclipse.ui.workbench/.classpath b/bundles/org.eclipse.ui.workbench/.classpath
index 095ce0d5eaf..71787b2a7b2 100644
--- a/bundles/org.eclipse.ui.workbench/.classpath
+++ b/bundles/org.eclipse.ui.workbench/.classpath
@@ -2,7 +2,7 @@
-
-
+
+
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/CloseAllHandler.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/CloseAllHandler.java
deleted file mode 100644
index 7a431c14292..00000000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/CloseAllHandler.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2015 IBM Corporation 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
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal;
-
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.core.expressions.EvaluationResult;
-import org.eclipse.core.expressions.Expression;
-import org.eclipse.core.expressions.ExpressionInfo;
-import org.eclipse.core.expressions.IEvaluationContext;
-import org.eclipse.ui.IEditorReference;
-import org.eclipse.ui.ISources;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.handlers.HandlerUtil;
-
-/**
- * Closes all active editors
- *
- * Replacement for CloseAllAction
- *
- *
- * @since 3.3
- */
-public class CloseAllHandler extends AbstractEvaluationHandler {
- private Expression enabledWhen;
-
- public CloseAllHandler() {
- registerEnablement();
- }
-
- @Override
- public Object execute(ExecutionEvent event) throws ExecutionException {
- IWorkbenchWindow window = HandlerUtil.getActiveWorkbenchWindowChecked(event);
- IWorkbenchPage page = window.getActivePage();
- if (page != null) {
- page.closeAllEditors(true);
- }
-
- return null;
- }
-
- @Override
- protected Expression getEnabledWhenExpression() {
- if (enabledWhen == null) {
- enabledWhen = new Expression() {
- @Override
- public EvaluationResult evaluate(IEvaluationContext context) {
- IWorkbenchPart part = InternalHandlerUtil.getActivePart(context);
- Object perspective = InternalHandlerUtil.getVariable(context,
- ISources.ACTIVE_WORKBENCH_WINDOW_ACTIVE_PERSPECTIVE_NAME);
- if (part != null && perspective != null && part.getSite() != null) {
- IWorkbenchPage page = part.getSite().getPage();
- if (page != null) {
- IEditorReference[] refArray = page.getEditorReferences();
- if (refArray != null && refArray.length > 0) {
- return EvaluationResult.TRUE;
- }
- }
- }
- return EvaluationResult.FALSE;
- }
-
- @Override
- public void collectExpressionInfo(ExpressionInfo info) {
- info.addVariableNameAccess(ISources.ACTIVE_PART_NAME);
- info.addVariableNameAccess(ISources.ACTIVE_WORKBENCH_WINDOW_ACTIVE_PERSPECTIVE_NAME);
- }
- };
- }
- return enabledWhen;
- }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/CloseEditorHandler.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/CloseEditorHandler.java
deleted file mode 100644
index b3acfd81940..00000000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/CloseEditorHandler.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2015 IBM Corporation 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
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal;
-
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.core.expressions.EvaluationResult;
-import org.eclipse.core.expressions.Expression;
-import org.eclipse.core.expressions.ExpressionInfo;
-import org.eclipse.core.expressions.IEvaluationContext;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.ISources;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.handlers.HandlerUtil;
-
-/**
- * Closes the active editor.
- *
- * Replacement for CloseEditorAction
- *
- *
- * @since 3.3
- */
-public class CloseEditorHandler extends AbstractEvaluationHandler {
-
- private Expression enabledWhen;
-
- public CloseEditorHandler() {
- registerEnablement();
- }
-
- @Override
- public Object execute(ExecutionEvent event) throws ExecutionException {
- IWorkbenchWindow window = HandlerUtil.getActiveWorkbenchWindowChecked(event);
- IEditorPart part = HandlerUtil.getActiveEditorChecked(event);
- window.getActivePage().closeEditor(part, true);
-
- return null;
- }
-
- @Override
- protected Expression getEnabledWhenExpression() {
- if (enabledWhen == null) {
- enabledWhen = new Expression() {
- @Override
- public EvaluationResult evaluate(IEvaluationContext context) {
- IEditorPart part = InternalHandlerUtil.getActiveEditor(context);
- if (part != null) {
- return EvaluationResult.TRUE;
-
- }
- return EvaluationResult.FALSE;
- }
-
- @Override
- public void collectExpressionInfo(ExpressionInfo info) {
- info.addVariableNameAccess(ISources.ACTIVE_EDITOR_NAME);
- }
- };
- }
- return enabledWhen;
- }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/misc/TextMatcher.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/misc/TextMatcher.java
deleted file mode 100644
index 6b07140a2f1..00000000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/misc/TextMatcher.java
+++ /dev/null
@@ -1,169 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2020 Thomas Wolf 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.ui.internal.misc;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-import java.util.Objects;
-import java.util.regex.Pattern;
-import org.eclipse.core.text.StringMatcher;
-
-/**
- * Similar to {@link StringMatcher}, this {@code TextMatcher} matches a pattern
- * that may contain the wildcards '?' or '*' against a text. However, the
- * matching is not only done on the full text, but also on individual words from
- * the text, and if the pattern contains whitespace, the pattern is split into
- * sub-patterns and those are matched, too.
- *
- * The precise rules are:
- *
- *
- *
Leading and trailing whitespace in the pattern is ignored.
- *
If the full pattern matches the full text, the match succeeds.
- *
If the full pattern matches a single word of the text, the match
- * succeeds.
- *
If all sub-patterns match a prefix of the whole text or any prefix of any
- * word, the match succeeds.
- *
Otherwise, the match fails.
- *
- *
- * An empty pattern matches only the empty text.
- *
- */
-public final class TextMatcher {
-
- private static final Pattern NON_WORD = Pattern.compile("\\W+", Pattern.UNICODE_CHARACTER_CLASS); //$NON-NLS-1$
-
- private final StringMatcher full;
-
- private final List parts;
-
- /**
- * Creates a new {@link TextMatcher}.
- *
- * @param pattern to match
- * @param ignoreCase whether to do case-insensitive matching
- * @param ignoreWildCards whether to treat '?' and '*' as normal characters, not
- * as wildcards
- * @throws IllegalArgumentException if {@code pattern == null}
- */
- public TextMatcher(String pattern, boolean ignoreCase, boolean ignoreWildCards) {
- full = new StringMatcher(pattern.trim(), ignoreCase, ignoreWildCards);
- parts = splitPattern(pattern, ignoreCase, ignoreWildCards);
- }
-
- private List splitPattern(String pattern,
- boolean ignoreCase, boolean ignoreWildCards) {
- String pat = pattern.trim();
- if (pat.isEmpty()) {
- return Collections.emptyList();
- }
- String[] subPatterns = pat.split("\\s+"); //$NON-NLS-1$
- if (subPatterns.length <= 1) {
- return Collections.emptyList();
- }
- List matchers = new ArrayList<>();
- for (String s : subPatterns) {
- if (s == null || s.isEmpty()) {
- continue;
- }
- StringMatcher m = new StringMatcher(s, ignoreCase, ignoreWildCards);
- m.usePrefixMatch();
- matchers.add(m);
- }
- return matchers;
- }
-
- /**
- * Determines whether the given {@code text} matches the pattern.
- *
- * @param text String to match; must not be {@code null}
- * @return {@code true} if the whole {@code text} matches the pattern;
- * {@code false} otherwise
- * @throws IllegalArgumentException if {@code text == null}
- */
- public boolean match(String text) {
- if (text == null) {
- throw new IllegalArgumentException();
- }
- return match(text, 0, text.length());
- }
-
- /**
- * Determines whether the given sub-string of {@code text} from {@code start}
- * (inclusive) to {@code end} (exclusive) matches the pattern.
- *
- * @param text String to match in; must not be {@code null}
- * @param start start index (inclusive) within {@code text} of the sub-string to
- * match
- * @param end end index (exclusive) within {@code text} of the sub-string to
- * match
- * @return {@code true} if the given slice of {@code text} matches the pattern;
- * {@code false} otherwise
- * @throws IllegalArgumentException if {@code text == null}
- */
- public boolean match(String text, int start, int end) {
- if (text == null) {
- throw new IllegalArgumentException();
- }
- if (start > end) {
- return false;
- }
- int tlen = text.length();
- start = Math.max(0, start);
- end = Math.min(end, tlen);
- if (full.match(text, start, end)) {
- return true;
- }
- String[] words = getWords(text.substring(start, end));
- if (match(full, words)) {
- return true;
- }
- if (parts.isEmpty()) {
- return false;
- }
- for (StringMatcher subMatcher : parts) {
- if (!subMatcher.match(text, start, end) && !match(subMatcher, words)) {
- return false;
- }
- }
- return true;
- }
-
- private boolean match(StringMatcher matcher, String[] words) {
- return Arrays.stream(words).filter(Objects::nonNull).anyMatch(matcher::match);
- }
-
- /**
- * Splits a given text into words.
- *
- * @param text to split
- * @return the words of the text
- */
- public static String[] getWords(String text) {
- // Previous implementations (in the removed StringMatcher) used the ICU
- // BreakIterator to split the text. That worked well, but in 2020 it was decided
- // to drop the dependency to the ICU library due to its size. The JDK
- // BreakIterator splits differently, causing e.g.
- // https://bugs.eclipse.org/bugs/show_bug.cgi?id=563121 . The NON_WORD regexp
- // appears to work well for programming language text, but may give sub-optimal
- // results for natural languages. See also
- // https://bugs.eclipse.org/bugs/show_bug.cgi?id=90579 .
- return NON_WORD.split(text);
- }
-
- @Override
- public String toString() {
- return '[' + full.toString() + ',' + parts + ']';
- }
-}
diff --git a/bundles/org.eclipse.ui.workbench/META-INF/MANIFEST.MF b/bundles/org.eclipse.ui.workbench/META-INF/MANIFEST.MF
index 261f4fe712f..2e8dd48038b 100644
--- a/bundles/org.eclipse.ui.workbench/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.ui.workbench/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.ui.workbench; singleton:=true
-Bundle-Version: 3.133.100.qualifier
+Bundle-Version: 3.135.0.qualifier
Bundle-Activator: org.eclipse.ui.internal.WorkbenchPlugin
Bundle-ActivationPolicy: lazy
Bundle-Vendor: %providerName
@@ -94,7 +94,7 @@ Export-Package: org.eclipse.e4.ui.workbench.addons.perspectiveswitcher;x-interna
org.eclipse.ui.themes,
org.eclipse.ui.views,
org.eclipse.ui.wizards
-Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)",
+Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.33.0,4.0.0)",
org.eclipse.help;bundle-version="[3.2.0,4.0.0)",
org.eclipse.jface;bundle-version="[3.31.0,4.0.0)",
org.eclipse.jface.databinding;bundle-version="[1.3.0,2.0.0)",
@@ -136,5 +136,8 @@ Bundle-RequiredExecutionEnvironment: JavaSE-17
Require-Capability: osgi.extender;
filter:="(&(osgi.extender=osgi.component)(version>=1.2)(!(version>=2.0)))"
Automatic-Module-Name: org.eclipse.ui.workbench
-Service-Component: OSGI-INF/org.eclipse.ui.internal.WindowsDefenderConfigurator.xml,
+Service-Component: OSGI-INF/org.eclipse.ui.internal.BindingToModelProcessor.xml,
+ OSGI-INF/org.eclipse.ui.internal.CommandToModelProcessor.xml,
+ OSGI-INF/org.eclipse.ui.internal.ContextToModelProcessor.xml,
+ OSGI-INF/org.eclipse.ui.internal.WindowsDefenderConfigurator.xml,
OSGI-INF/org.eclipse.ui.internal.themes.ColorAndFontProviderImpl.xml
diff --git a/bundles/org.eclipse.ui.workbench/build.properties b/bundles/org.eclipse.ui.workbench/build.properties
index 0bb95f1d0c3..fd4ce5a82bf 100644
--- a/bundles/org.eclipse.ui.workbench/build.properties
+++ b/bundles/org.eclipse.ui.workbench/build.properties
@@ -20,8 +20,8 @@ bin.includes = plugin.properties,\
LegacyIDE.e4xmi,\
OSGI-INF/
src.includes = about.html
-source.. = Eclipse UI/,\
- Eclipse UI Editor Support/
+source.. = eclipseui/,\
+ eclipseuieditorsupport/
output.. = bin/
# Maven properties, see https://github.com/eclipse/tycho/wiki/Tycho-Pomless
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/e4/ui/workbench/addons/perspectiveswitcher/PerspectiveSwitcher.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/e4/ui/workbench/addons/perspectiveswitcher/PerspectiveSwitcher.java
similarity index 99%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/e4/ui/workbench/addons/perspectiveswitcher/PerspectiveSwitcher.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/e4/ui/workbench/addons/perspectiveswitcher/PerspectiveSwitcher.java
index 786bcadb323..077c0d1f1de 100644
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/e4/ui/workbench/addons/perspectiveswitcher/PerspectiveSwitcher.java
+++ b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/e4/ui/workbench/addons/perspectiveswitcher/PerspectiveSwitcher.java
@@ -334,7 +334,7 @@ public void getName(AccessibleEvent e) {
* @return true if the event is relevant, false if it can be ignored
*/
private boolean ignoreEvent(Object changedObj) {
- if (perspSwitcherToolControl == null || perspSwitcherToolbar.isDisposed()) {
+ if (perspSwitcherToolControl == null || perspSwitcherToolbar == null || perspSwitcherToolbar.isDisposed()) {
return true;
}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/AbstractSourceProvider.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/AbstractSourceProvider.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/AbstractSourceProvider.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/AbstractSourceProvider.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ActiveShellExpression.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/ActiveShellExpression.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ActiveShellExpression.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/ActiveShellExpression.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/BasicWorkingSetElementAdapter.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/BasicWorkingSetElementAdapter.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/BasicWorkingSetElementAdapter.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/BasicWorkingSetElementAdapter.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ExtensionFactory.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/ExtensionFactory.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ExtensionFactory.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/ExtensionFactory.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IActionBars.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IActionBars.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IActionBars.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IActionBars.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IActionBars2.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IActionBars2.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IActionBars2.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IActionBars2.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IActionDelegate.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IActionDelegate.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IActionDelegate.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IActionDelegate.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IActionDelegate2.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IActionDelegate2.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IActionDelegate2.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IActionDelegate2.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IActionDelegateWithEvent.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IActionDelegateWithEvent.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IActionDelegateWithEvent.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IActionDelegateWithEvent.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IActionFilter.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IActionFilter.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IActionFilter.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IActionFilter.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IAggregateWorkingSet.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IAggregateWorkingSet.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IAggregateWorkingSet.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IAggregateWorkingSet.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IContainmentAdapter.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IContainmentAdapter.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IContainmentAdapter.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IContainmentAdapter.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IDecoratorManager.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IDecoratorManager.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IDecoratorManager.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IDecoratorManager.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IEditorActionBarContributor.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IEditorActionBarContributor.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IEditorActionBarContributor.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IEditorActionBarContributor.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IEditorActionDelegate.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IEditorActionDelegate.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IEditorActionDelegate.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IEditorActionDelegate.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IEditorDescriptor.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IEditorDescriptor.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IEditorDescriptor.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IEditorDescriptor.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IEditorInput.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IEditorInput.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IEditorInput.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IEditorInput.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IEditorLauncher.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IEditorLauncher.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IEditorLauncher.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IEditorLauncher.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IEditorMatchingStrategy.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IEditorMatchingStrategy.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IEditorMatchingStrategy.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IEditorMatchingStrategy.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IEditorPart.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IEditorPart.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IEditorPart.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IEditorPart.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IEditorReference.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IEditorReference.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IEditorReference.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IEditorReference.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IEditorRegistry.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IEditorRegistry.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IEditorRegistry.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IEditorRegistry.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IEditorSite.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IEditorSite.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IEditorSite.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IEditorSite.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IElementFactory.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IElementFactory.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IElementFactory.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IElementFactory.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IExportWizard.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IExportWizard.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IExportWizard.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IExportWizard.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IFileEditorMapping.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IFileEditorMapping.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IFileEditorMapping.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IFileEditorMapping.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IFolderLayout.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IFolderLayout.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IFolderLayout.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IFolderLayout.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IImportWizard.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IImportWizard.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IImportWizard.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IImportWizard.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IInPlaceEditor.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IInPlaceEditor.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IInPlaceEditor.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IInPlaceEditor.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IInPlaceEditorInput.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IInPlaceEditorInput.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IInPlaceEditorInput.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IInPlaceEditorInput.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IKeyBindingService.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IKeyBindingService.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IKeyBindingService.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IKeyBindingService.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ILocalWorkingSetManager.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/ILocalWorkingSetManager.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ILocalWorkingSetManager.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/ILocalWorkingSetManager.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IMemento.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IMemento.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IMemento.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IMemento.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/INavigationHistory.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/INavigationHistory.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/INavigationHistory.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/INavigationHistory.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/INavigationLocation.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/INavigationLocation.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/INavigationLocation.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/INavigationLocation.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/INavigationLocationProvider.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/INavigationLocationProvider.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/INavigationLocationProvider.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/INavigationLocationProvider.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/INestableKeyBindingService.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/INestableKeyBindingService.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/INestableKeyBindingService.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/INestableKeyBindingService.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/INewWizard.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/INewWizard.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/INewWizard.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/INewWizard.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/INullSelectionListener.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/INullSelectionListener.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/INullSelectionListener.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/INullSelectionListener.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IObjectActionDelegate.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IObjectActionDelegate.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IObjectActionDelegate.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IObjectActionDelegate.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPageLayout.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IPageLayout.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPageLayout.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IPageLayout.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPageListener.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IPageListener.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPageListener.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IPageListener.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPageService.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IPageService.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPageService.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IPageService.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPartListener.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IPartListener.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPartListener.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IPartListener.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPartListener2.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IPartListener2.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPartListener2.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IPartListener2.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPartService.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IPartService.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPartService.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IPartService.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPathEditorInput.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IPathEditorInput.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPathEditorInput.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IPathEditorInput.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPersistable.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IPersistable.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPersistable.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IPersistable.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPersistableEditor.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IPersistableEditor.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPersistableEditor.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IPersistableEditor.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPersistableElement.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IPersistableElement.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPersistableElement.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IPersistableElement.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPerspectiveDescriptor.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IPerspectiveDescriptor.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPerspectiveDescriptor.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IPerspectiveDescriptor.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPerspectiveFactory.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IPerspectiveFactory.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPerspectiveFactory.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IPerspectiveFactory.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPerspectiveListener.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IPerspectiveListener.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPerspectiveListener.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IPerspectiveListener.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPerspectiveListener2.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IPerspectiveListener2.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPerspectiveListener2.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IPerspectiveListener2.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPerspectiveListener3.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IPerspectiveListener3.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPerspectiveListener3.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IPerspectiveListener3.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPerspectiveListener4.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IPerspectiveListener4.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPerspectiveListener4.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IPerspectiveListener4.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPerspectiveRegistry.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IPerspectiveRegistry.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPerspectiveRegistry.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IPerspectiveRegistry.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPlaceholderFolderLayout.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IPlaceholderFolderLayout.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPlaceholderFolderLayout.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IPlaceholderFolderLayout.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPluginContribution.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IPluginContribution.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPluginContribution.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IPluginContribution.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPropertyListener.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IPropertyListener.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPropertyListener.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IPropertyListener.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IReusableEditor.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IReusableEditor.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IReusableEditor.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IReusableEditor.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ISaveableFilter.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/ISaveableFilter.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ISaveableFilter.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/ISaveableFilter.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ISaveablePart.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/ISaveablePart.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ISaveablePart.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/ISaveablePart.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ISaveablePart2.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/ISaveablePart2.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ISaveablePart2.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/ISaveablePart2.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ISaveablesLifecycleListener.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/ISaveablesLifecycleListener.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ISaveablesLifecycleListener.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/ISaveablesLifecycleListener.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ISaveablesSource.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/ISaveablesSource.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ISaveablesSource.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/ISaveablesSource.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ISecondarySaveableSource.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/ISecondarySaveableSource.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ISecondarySaveableSource.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/ISecondarySaveableSource.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ISelectionListener.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/ISelectionListener.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ISelectionListener.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/ISelectionListener.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ISelectionService.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/ISelectionService.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ISelectionService.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/ISelectionService.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ISharedImages.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/ISharedImages.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ISharedImages.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/ISharedImages.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IShowEditorInput.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IShowEditorInput.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IShowEditorInput.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IShowEditorInput.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ISizeProvider.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/ISizeProvider.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ISizeProvider.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/ISizeProvider.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ISourceProvider.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/ISourceProvider.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ISourceProvider.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/ISourceProvider.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ISourceProviderListener.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/ISourceProviderListener.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ISourceProviderListener.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/ISourceProviderListener.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ISources.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/ISources.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ISources.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/ISources.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IStartup.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IStartup.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IStartup.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IStartup.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IViewActionDelegate.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IViewActionDelegate.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IViewActionDelegate.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IViewActionDelegate.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IViewLayout.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IViewLayout.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IViewLayout.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IViewLayout.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IViewPart.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IViewPart.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IViewPart.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IViewPart.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IViewReference.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IViewReference.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IViewReference.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IViewReference.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IViewSite.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IViewSite.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IViewSite.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IViewSite.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWindowListener.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IWindowListener.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWindowListener.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IWindowListener.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbench.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IWorkbench.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbench.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IWorkbench.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchActionConstants.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IWorkbenchActionConstants.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchActionConstants.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IWorkbenchActionConstants.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchCommandConstants.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IWorkbenchCommandConstants.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchCommandConstants.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IWorkbenchCommandConstants.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchListener.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IWorkbenchListener.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchListener.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IWorkbenchListener.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPage.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IWorkbenchPage.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPage.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IWorkbenchPage.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPart.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IWorkbenchPart.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPart.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IWorkbenchPart.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPart2.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IWorkbenchPart2.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPart2.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IWorkbenchPart2.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPart3.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IWorkbenchPart3.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPart3.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IWorkbenchPart3.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPartConstants.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IWorkbenchPartConstants.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPartConstants.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IWorkbenchPartConstants.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPartDescriptor.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IWorkbenchPartDescriptor.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPartDescriptor.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IWorkbenchPartDescriptor.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPartReference.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IWorkbenchPartReference.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPartReference.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IWorkbenchPartReference.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPartSite.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IWorkbenchPartSite.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPartSite.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IWorkbenchPartSite.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPreferenceConstants.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IWorkbenchPreferenceConstants.java
similarity index 95%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPreferenceConstants.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IWorkbenchPreferenceConstants.java
index 2df7267e907..9885d08b005 100644
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPreferenceConstants.java
+++ b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IWorkbenchPreferenceConstants.java
@@ -70,7 +70,7 @@ public interface IWorkbenchPreferenceConstants {
* perspective. Callers should use IWorkbench.showPerspective
* methods.
*/
- @Deprecated
+ @Deprecated(forRemoval = true, since = "2025-03")
String ALTERNATE_OPEN_NEW_PERSPECTIVE = "ALTERNATE_OPEN_NEW_PERSPECTIVE"; //$NON-NLS-1$
/**
@@ -86,7 +86,7 @@ public interface IWorkbenchPreferenceConstants {
* perspective. Callers should use IWorkbench.showPerspective
* methods.
*/
- @Deprecated
+ @Deprecated(forRemoval = true, since = "2025-03")
String SHIFT_OPEN_NEW_PERSPECTIVE = "SHIFT_OPEN_NEW_PERSPECTIVE"; //$NON-NLS-1$
/**
@@ -107,7 +107,7 @@ public interface IWorkbenchPreferenceConstants {
* org.eclipse.ui.ide.IDE.Preferences.PROJECT_OPEN_NEW_PERSPECTIVE
* instead.
*/
- @Deprecated
+ @Deprecated(forRemoval = true, since = "2025-03")
String PROJECT_OPEN_NEW_PERSPECTIVE = "PROJECT_OPEN_NEW_PERSPECTIVE"; //$NON-NLS-1$
/**
@@ -161,7 +161,7 @@ public interface IWorkbenchPreferenceConstants {
* @deprecated not used anymore by platform
* @since 3.0
*/
- @Deprecated
+ @Deprecated(forRemoval = true, since = "2025-03")
String DOCK_PERSPECTIVE_BAR = "DOCK_PERSPECTIVE_BAR"; //$NON-NLS-1$
/**
@@ -375,7 +375,7 @@ public interface IWorkbenchPreferenceConstants {
*
* @deprecated not supported by the platform anymore
*/
- @Deprecated
+ @Deprecated(forRemoval = true, since = "2025-03")
String ENABLE_ANIMATIONS = "ENABLE_ANIMATIONS"; //$NON-NLS-1$
/**
@@ -390,7 +390,7 @@ public interface IWorkbenchPreferenceConstants {
* when round or square corners are desired.
* @since 3.120
*/
- @Deprecated
+ @Deprecated(forRemoval = true, since = "2025-03")
String USE_ROUND_TABS = "USE_ROUND_TABS"; //$NON-NLS-1$
/**
@@ -624,6 +624,20 @@ public interface IWorkbenchPreferenceConstants {
*/
String DISABLE_OPEN_EDITOR_IN_PLACE = "DISABLE_OPEN_EDITOR_IN_PLACE"; //$NON-NLS-1$
+ /**
+ * Workbench preference id for the position of the tabs in the multi-page
+ * editor.
+ *
+ * Integer-valued: {@link SWT#TOP} for tabs on the top, and {@link SWT#BOTTOM}
+ * for tabs at the bottom.
+ *
+ * The default value for this preference is: {@link SWT#BOTTOM}
+ *
+ *
+ * @since 3.134
+ */
+ String ALIGN_MULTI_PAGE_EDITOR_TABS = "ALIGN_MULTI_PAGE_EDITOR_TABS"; //$NON-NLS-1$
+
/**
* Workbench preference id for indicating the size of the list of most recently
* used working sets.
@@ -705,4 +719,14 @@ public interface IWorkbenchPreferenceConstants {
* @since 3.130
*/
String LARGE_VIEW_LIMIT = "largeViewLimit"; //$NON-NLS-1$
+
+ /**
+ *
+ * EXPERIMENTAL. Whether the UI adapts to DPI changes at
+ * runtime. It only effects Windows.
+ *
+ *
+ * @since 3.134
+ */
+ String RESCALING_AT_RUNTIME = "RESCALING_AT_RUNTIME"; //$NON-NLS-1$
}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPreferencePage.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IWorkbenchPreferencePage.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPreferencePage.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IWorkbenchPreferencePage.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPropertyPage.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IWorkbenchPropertyPage.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPropertyPage.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IWorkbenchPropertyPage.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPropertyPageMulti.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IWorkbenchPropertyPageMulti.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPropertyPageMulti.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IWorkbenchPropertyPageMulti.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchSite.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IWorkbenchSite.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchSite.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IWorkbenchSite.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchWindow.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IWorkbenchWindow.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchWindow.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IWorkbenchWindow.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchWindowActionDelegate.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IWorkbenchWindowActionDelegate.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchWindowActionDelegate.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IWorkbenchWindowActionDelegate.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchWindowPulldownDelegate.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IWorkbenchWindowPulldownDelegate.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchWindowPulldownDelegate.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IWorkbenchWindowPulldownDelegate.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchWindowPulldownDelegate2.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IWorkbenchWindowPulldownDelegate2.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchWindowPulldownDelegate2.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IWorkbenchWindowPulldownDelegate2.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchWizard.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IWorkbenchWizard.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchWizard.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IWorkbenchWizard.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkingSet.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IWorkingSet.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkingSet.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IWorkingSet.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkingSetElementAdapter.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IWorkingSetElementAdapter.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkingSetElementAdapter.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IWorkingSetElementAdapter.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkingSetManager.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IWorkingSetManager.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkingSetManager.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IWorkingSetManager.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkingSetUpdater.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IWorkingSetUpdater.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkingSetUpdater.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IWorkingSetUpdater.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkingSetUpdater2.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IWorkingSetUpdater2.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkingSetUpdater2.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IWorkingSetUpdater2.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/LegacyHandlerSubmissionExpression.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/LegacyHandlerSubmissionExpression.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/LegacyHandlerSubmissionExpression.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/LegacyHandlerSubmissionExpression.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/MultiPartInitException.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/MultiPartInitException.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/MultiPartInitException.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/MultiPartInitException.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/NavigationLocation.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/NavigationLocation.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/NavigationLocation.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/NavigationLocation.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/OpenAndLinkWithEditorHelper.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/OpenAndLinkWithEditorHelper.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/OpenAndLinkWithEditorHelper.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/OpenAndLinkWithEditorHelper.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/PartInitException.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/PartInitException.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/PartInitException.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/PartInitException.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/PerspectiveAdapter.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/PerspectiveAdapter.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/PerspectiveAdapter.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/PerspectiveAdapter.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/PlatformUI.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/PlatformUI.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/PlatformUI.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/PlatformUI.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/Saveable.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/Saveable.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/Saveable.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/Saveable.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/SaveablesLifecycleEvent.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/SaveablesLifecycleEvent.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/SaveablesLifecycleEvent.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/SaveablesLifecycleEvent.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/SelectionEnabler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/SelectionEnabler.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/SelectionEnabler.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/SelectionEnabler.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/SelectionListenerFactory.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/SelectionListenerFactory.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/SelectionListenerFactory.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/SelectionListenerFactory.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/SubActionBars.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/SubActionBars.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/SubActionBars.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/SubActionBars.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/SubActionBars2.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/SubActionBars2.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/SubActionBars2.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/SubActionBars2.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/WorkbenchEncoding.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/WorkbenchEncoding.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/WorkbenchEncoding.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/WorkbenchEncoding.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/WorkbenchException.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/WorkbenchException.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/WorkbenchException.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/WorkbenchException.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/XMLMemento.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/XMLMemento.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/XMLMemento.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/XMLMemento.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/about/IInstallationPageContainer.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/about/IInstallationPageContainer.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/about/IInstallationPageContainer.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/about/IInstallationPageContainer.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/about/ISystemSummarySection.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/about/ISystemSummarySection.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/about/ISystemSummarySection.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/about/ISystemSummarySection.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/about/InstallationPage.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/about/InstallationPage.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/about/InstallationPage.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/about/InstallationPage.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/about/package.html b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/about/package.html
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/about/package.html
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/about/package.html
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/ActionContext.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/actions/ActionContext.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/ActionContext.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/actions/ActionContext.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/ActionDelegate.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/actions/ActionDelegate.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/ActionDelegate.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/actions/ActionDelegate.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/ActionFactory.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/actions/ActionFactory.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/ActionFactory.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/actions/ActionFactory.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/ActionGroup.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/actions/ActionGroup.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/ActionGroup.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/actions/ActionGroup.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/BaseNewWizardMenu.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/actions/BaseNewWizardMenu.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/BaseNewWizardMenu.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/actions/BaseNewWizardMenu.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/BaseSelectionListenerAction.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/actions/BaseSelectionListenerAction.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/BaseSelectionListenerAction.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/actions/BaseSelectionListenerAction.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/CommandNotMappedException.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/actions/CommandNotMappedException.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/CommandNotMappedException.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/actions/CommandNotMappedException.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/CompoundContributionItem.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/actions/CompoundContributionItem.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/CompoundContributionItem.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/actions/CompoundContributionItem.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/ContributedAction.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/actions/ContributedAction.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/ContributedAction.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/actions/ContributedAction.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/ContributionItemFactory.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/actions/ContributionItemFactory.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/ContributionItemFactory.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/actions/ContributionItemFactory.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/ExportResourcesAction.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/actions/ExportResourcesAction.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/ExportResourcesAction.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/actions/ExportResourcesAction.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/ImportResourcesAction.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/actions/ImportResourcesAction.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/ImportResourcesAction.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/actions/ImportResourcesAction.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/LabelRetargetAction.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/actions/LabelRetargetAction.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/LabelRetargetAction.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/actions/LabelRetargetAction.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/NewWizardAction.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/actions/NewWizardAction.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/NewWizardAction.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/actions/NewWizardAction.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/NewWizardDropDownAction.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/actions/NewWizardDropDownAction.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/NewWizardDropDownAction.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/actions/NewWizardDropDownAction.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/OpenInNewWindowAction.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/actions/OpenInNewWindowAction.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/OpenInNewWindowAction.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/actions/OpenInNewWindowAction.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/OpenNewPageMenu.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/actions/OpenNewPageMenu.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/OpenNewPageMenu.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/actions/OpenNewPageMenu.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/OpenNewWindowMenu.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/actions/OpenNewWindowMenu.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/OpenNewWindowMenu.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/actions/OpenNewWindowMenu.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/OpenPerspectiveAction.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/actions/OpenPerspectiveAction.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/OpenPerspectiveAction.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/actions/OpenPerspectiveAction.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/OpenPerspectiveMenu.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/actions/OpenPerspectiveMenu.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/OpenPerspectiveMenu.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/actions/OpenPerspectiveMenu.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/PartEventAction.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/actions/PartEventAction.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/PartEventAction.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/actions/PartEventAction.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/PerspectiveMenu.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/actions/PerspectiveMenu.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/PerspectiveMenu.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/actions/PerspectiveMenu.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/QuickMenuCreator.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/actions/QuickMenuCreator.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/QuickMenuCreator.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/actions/QuickMenuCreator.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/RetargetAction.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/actions/RetargetAction.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/RetargetAction.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/actions/RetargetAction.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/SelectionProviderAction.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/actions/SelectionProviderAction.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/SelectionProviderAction.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/actions/SelectionProviderAction.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/SimpleWildcardTester.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/actions/SimpleWildcardTester.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/SimpleWildcardTester.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/actions/SimpleWildcardTester.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/WorkingSetFilterActionGroup.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/actions/WorkingSetFilterActionGroup.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/WorkingSetFilterActionGroup.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/actions/WorkingSetFilterActionGroup.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/package.html b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/actions/package.html
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/package.html
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/actions/package.html
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/ActivitiesPreferencePage.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/activities/ActivitiesPreferencePage.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/ActivitiesPreferencePage.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/activities/ActivitiesPreferencePage.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/ActivityCategoryPreferencePage.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/activities/ActivityCategoryPreferencePage.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/ActivityCategoryPreferencePage.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/activities/ActivityCategoryPreferencePage.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/ActivityEvent.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/activities/ActivityEvent.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/ActivityEvent.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/activities/ActivityEvent.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/ActivityManagerEvent.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/activities/ActivityManagerEvent.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/ActivityManagerEvent.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/activities/ActivityManagerEvent.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/CategoryEvent.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/activities/CategoryEvent.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/CategoryEvent.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/activities/CategoryEvent.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/IActivity.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/activities/IActivity.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/IActivity.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/activities/IActivity.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/IActivityListener.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/activities/IActivityListener.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/IActivityListener.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/activities/IActivityListener.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/IActivityManager.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/activities/IActivityManager.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/IActivityManager.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/activities/IActivityManager.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/IActivityManagerListener.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/activities/IActivityManagerListener.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/IActivityManagerListener.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/activities/IActivityManagerListener.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/IActivityPatternBinding.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/activities/IActivityPatternBinding.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/IActivityPatternBinding.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/activities/IActivityPatternBinding.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/IActivityRequirementBinding.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/activities/IActivityRequirementBinding.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/IActivityRequirementBinding.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/activities/IActivityRequirementBinding.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/ICategory.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/activities/ICategory.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/ICategory.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/activities/ICategory.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/ICategoryActivityBinding.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/activities/ICategoryActivityBinding.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/ICategoryActivityBinding.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/activities/ICategoryActivityBinding.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/ICategoryListener.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/activities/ICategoryListener.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/ICategoryListener.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/activities/ICategoryListener.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/IIdentifier.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/activities/IIdentifier.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/IIdentifier.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/activities/IIdentifier.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/IIdentifierListener.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/activities/IIdentifierListener.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/IIdentifierListener.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/activities/IIdentifierListener.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/IMutableActivityManager.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/activities/IMutableActivityManager.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/IMutableActivityManager.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/activities/IMutableActivityManager.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/ITriggerPoint.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/activities/ITriggerPoint.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/ITriggerPoint.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/activities/ITriggerPoint.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/ITriggerPointAdvisor.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/activities/ITriggerPointAdvisor.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/ITriggerPointAdvisor.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/activities/ITriggerPointAdvisor.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/ITriggerPointManager.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/activities/ITriggerPointManager.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/ITriggerPointManager.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/activities/ITriggerPointManager.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/IWorkbenchActivitySupport.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/activities/IWorkbenchActivitySupport.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/IWorkbenchActivitySupport.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/activities/IWorkbenchActivitySupport.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/IdentifierEvent.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/activities/IdentifierEvent.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/IdentifierEvent.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/activities/IdentifierEvent.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/NotDefinedException.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/activities/NotDefinedException.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/NotDefinedException.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/activities/NotDefinedException.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/WorkbenchActivityHelper.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/activities/WorkbenchActivityHelper.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/WorkbenchActivityHelper.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/activities/WorkbenchActivityHelper.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/WorkbenchTriggerPointAdvisor.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/activities/WorkbenchTriggerPointAdvisor.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/WorkbenchTriggerPointAdvisor.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/activities/WorkbenchTriggerPointAdvisor.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/package.html b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/activities/package.html
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/package.html
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/activities/package.html
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/application/ActionBarAdvisor.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/application/ActionBarAdvisor.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/application/ActionBarAdvisor.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/application/ActionBarAdvisor.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/application/DisplayAccess.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/application/DisplayAccess.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/application/DisplayAccess.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/application/DisplayAccess.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/application/IActionBarConfigurer.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/application/IActionBarConfigurer.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/application/IActionBarConfigurer.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/application/IActionBarConfigurer.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/application/IWorkbenchConfigurer.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/application/IWorkbenchConfigurer.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/application/IWorkbenchConfigurer.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/application/IWorkbenchConfigurer.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/application/IWorkbenchWindowConfigurer.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/application/IWorkbenchWindowConfigurer.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/application/IWorkbenchWindowConfigurer.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/application/IWorkbenchWindowConfigurer.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/application/WorkbenchAdvisor.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/application/WorkbenchAdvisor.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/application/WorkbenchAdvisor.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/application/WorkbenchAdvisor.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/application/WorkbenchWindowAdvisor.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/application/WorkbenchWindowAdvisor.java
similarity index 99%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/application/WorkbenchWindowAdvisor.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/application/WorkbenchWindowAdvisor.java
index 0d9d6f54bb4..5995b0f0ec4 100644
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/application/WorkbenchWindowAdvisor.java
+++ b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/application/WorkbenchWindowAdvisor.java
@@ -272,7 +272,7 @@ public void postWindowClose() {
* @deprecated This method is no longer used. Applications now define workbench
* window contents in their application model.
*/
- @Deprecated
+ @Deprecated(forRemoval = true, since = "2025-03")
public void createWindowContents(Shell shell) {
((WorkbenchWindowConfigurer) getWindowConfigurer()).createDefaultContents(shell);
}
@@ -291,7 +291,7 @@ public void createWindowContents(Shell shell) {
* @deprecated This method is no longer used. Applications now define workbench
* window contents in their application model.
*/
- @Deprecated
+ @Deprecated(forRemoval = true, since = "2025-03")
public Control createEmptyWindowContents(Composite parent) {
return null;
}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/application/package.html b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/application/package.html
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/application/package.html
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/application/package.html
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/branding/IBundleGroupConstants.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/branding/IBundleGroupConstants.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/branding/IBundleGroupConstants.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/branding/IBundleGroupConstants.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/branding/IProductConstants.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/branding/IProductConstants.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/branding/IProductConstants.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/branding/IProductConstants.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/branding/package.html b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/branding/package.html
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/branding/package.html
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/branding/package.html
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/browser/AbstractWebBrowser.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/browser/AbstractWebBrowser.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/browser/AbstractWebBrowser.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/browser/AbstractWebBrowser.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/browser/AbstractWorkbenchBrowserSupport.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/browser/AbstractWorkbenchBrowserSupport.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/browser/AbstractWorkbenchBrowserSupport.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/browser/AbstractWorkbenchBrowserSupport.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/browser/IWebBrowser.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/browser/IWebBrowser.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/browser/IWebBrowser.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/browser/IWebBrowser.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/browser/IWorkbenchBrowserSupport.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/browser/IWorkbenchBrowserSupport.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/browser/IWorkbenchBrowserSupport.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/browser/IWorkbenchBrowserSupport.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/browser/package.html b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/browser/package.html
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/browser/package.html
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/browser/package.html
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/ExtensionParameterValues.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/commands/ExtensionParameterValues.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/ExtensionParameterValues.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/commands/ExtensionParameterValues.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/ICommandImageService.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/commands/ICommandImageService.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/ICommandImageService.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/commands/ICommandImageService.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/ICommandService.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/commands/ICommandService.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/ICommandService.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/commands/ICommandService.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/IElementReference.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/commands/IElementReference.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/IElementReference.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/commands/IElementReference.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/IElementUpdater.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/commands/IElementUpdater.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/IElementUpdater.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/commands/IElementUpdater.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/package.html b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/commands/package.html
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/package.html
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/commands/package.html
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/contexts/ContextEvent.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/contexts/ContextEvent.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/contexts/ContextEvent.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/contexts/ContextEvent.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/contexts/ContextException.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/contexts/ContextException.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/contexts/ContextException.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/contexts/ContextException.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/contexts/ContextManagerEvent.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/contexts/ContextManagerEvent.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/contexts/ContextManagerEvent.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/contexts/ContextManagerEvent.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/contexts/EnabledSubmission.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/contexts/EnabledSubmission.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/contexts/EnabledSubmission.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/contexts/EnabledSubmission.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/contexts/IContext.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/contexts/IContext.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/contexts/IContext.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/contexts/IContext.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/contexts/IContextActivation.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/contexts/IContextActivation.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/contexts/IContextActivation.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/contexts/IContextActivation.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/contexts/IContextListener.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/contexts/IContextListener.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/contexts/IContextListener.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/contexts/IContextListener.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/contexts/IContextManager.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/contexts/IContextManager.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/contexts/IContextManager.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/contexts/IContextManager.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/contexts/IContextManagerListener.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/contexts/IContextManagerListener.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/contexts/IContextManagerListener.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/contexts/IContextManagerListener.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/contexts/IContextService.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/contexts/IContextService.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/contexts/IContextService.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/contexts/IContextService.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/contexts/IWorkbenchContextSupport.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/contexts/IWorkbenchContextSupport.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/contexts/IWorkbenchContextSupport.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/contexts/IWorkbenchContextSupport.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/contexts/NotDefinedException.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/contexts/NotDefinedException.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/contexts/NotDefinedException.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/contexts/NotDefinedException.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/contexts/package.html b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/contexts/package.html
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/contexts/package.html
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/contexts/package.html
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/databinding/typed/WorkbenchProperties.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/databinding/typed/WorkbenchProperties.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/databinding/typed/WorkbenchProperties.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/databinding/typed/WorkbenchProperties.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/AbstractElementListSelectionDialog.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dialogs/AbstractElementListSelectionDialog.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/AbstractElementListSelectionDialog.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dialogs/AbstractElementListSelectionDialog.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/CheckedTreeSelectionDialog.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dialogs/CheckedTreeSelectionDialog.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/CheckedTreeSelectionDialog.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dialogs/CheckedTreeSelectionDialog.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/ContainerCheckedTreeViewer.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dialogs/ContainerCheckedTreeViewer.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/ContainerCheckedTreeViewer.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dialogs/ContainerCheckedTreeViewer.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/EditorSelectionDialog.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dialogs/EditorSelectionDialog.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/EditorSelectionDialog.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dialogs/EditorSelectionDialog.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/ElementListSelectionDialog.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dialogs/ElementListSelectionDialog.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/ElementListSelectionDialog.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dialogs/ElementListSelectionDialog.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/ElementTreeSelectionDialog.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dialogs/ElementTreeSelectionDialog.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/ElementTreeSelectionDialog.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dialogs/ElementTreeSelectionDialog.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/FileEditorMappingContentProvider.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dialogs/FileEditorMappingContentProvider.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/FileEditorMappingContentProvider.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dialogs/FileEditorMappingContentProvider.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/FileEditorMappingLabelProvider.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dialogs/FileEditorMappingLabelProvider.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/FileEditorMappingLabelProvider.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dialogs/FileEditorMappingLabelProvider.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/FileSystemElement.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dialogs/FileSystemElement.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/FileSystemElement.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dialogs/FileSystemElement.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/FilteredItemsSelectionDialog.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dialogs/FilteredItemsSelectionDialog.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/FilteredItemsSelectionDialog.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dialogs/FilteredItemsSelectionDialog.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/FilteredList.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dialogs/FilteredList.java
similarity index 98%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/FilteredList.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dialogs/FilteredList.java
index 56e69c48c5f..1180b1324e6 100644
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/FilteredList.java
+++ b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dialogs/FilteredList.java
@@ -23,6 +23,7 @@
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
+import org.eclipse.core.text.StringMatcher;
import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.swt.SWT;
import org.eclipse.swt.SWTException;
@@ -36,7 +37,6 @@
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableItem;
import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.misc.TextMatcher;
import org.eclipse.ui.internal.util.Util;
import org.eclipse.ui.progress.WorkbenchJob;
@@ -73,16 +73,16 @@ public interface FilterMatcher {
}
private class DefaultFilterMatcher implements FilterMatcher {
- private TextMatcher fMatcher;
+ private StringMatcher fMatcher;
@Override
public void setFilter(String pattern, boolean ignoreCase, boolean ignoreWildCards) {
- fMatcher = new TextMatcher(pattern + '*', ignoreCase, ignoreWildCards);
+ fMatcher = new StringMatcher(pattern.trim() + '*', ignoreCase, ignoreWildCards);
}
@Override
public boolean match(Object element) {
- return fMatcher.match(fLabelProvider.getText(element));
+ return fMatcher.matchWords(fLabelProvider.getText(element));
}
}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/FilteredTree.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dialogs/FilteredTree.java
similarity index 75%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/FilteredTree.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dialogs/FilteredTree.java
index 24e2d884217..f41a283ee63 100644
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/FilteredTree.java
+++ b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dialogs/FilteredTree.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2004, 2015 IBM Corporation and others.
+ * Copyright (c) 2004, 2025 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -22,6 +22,7 @@
import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.jface.action.ToolBarManager;
import org.eclipse.jface.resource.JFaceResources;
+import org.eclipse.jface.viewers.AbstractFilteredViewerComposite;
import org.eclipse.jface.viewers.IContentProvider;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.TreeViewer;
@@ -29,13 +30,8 @@
import org.eclipse.swt.SWT;
import org.eclipse.swt.accessibility.AccessibleAdapter;
import org.eclipse.swt.accessibility.AccessibleEvent;
-import org.eclipse.swt.events.FocusAdapter;
-import org.eclipse.swt.events.FocusEvent;
import org.eclipse.swt.events.KeyAdapter;
import org.eclipse.swt.events.KeyEvent;
-import org.eclipse.swt.events.MouseAdapter;
-import org.eclipse.swt.events.MouseEvent;
-import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
@@ -57,20 +53,16 @@
* @see org.eclipse.ui.dialogs.PatternFilter
* @since 3.2
*/
-public class FilteredTree extends Composite {
-
- /**
- * The filter text widget to be used by this tree. This value may be
- * null if there is no filter widget, or if the controls have not
- * yet been created.
- */
- protected Text filterText;
+public class FilteredTree extends AbstractFilteredViewerComposite {
/**
*
* Note: As of 4.13 not used anymore
*
+ *
+ * @deprecated As of 4.13 not used anymore
*/
+ @Deprecated(since = "2025-03", forRemoval = true)
protected ToolBarManager filterToolBar;
/**
@@ -79,7 +71,9 @@ public class FilteredTree extends Composite {
*
*
* @since 3.5
+ * @deprecated As of 4.13 not used anymore
*/
+ @Deprecated(since = "2025-03", forRemoval = true)
protected Control clearButtonControl;
/**
@@ -88,45 +82,11 @@ public class FilteredTree extends Composite {
*/
protected TreeViewer treeViewer;
- /**
- * The Composite on which the filter controls are created. This is used to set
- * the background color of the filter controls to match the surrounding
- * controls.
- */
- protected Composite filterComposite;
-
- /**
- * The pattern filter for the tree. This value must not be null.
- */
- private PatternFilter patternFilter;
-
- /**
- * The text to initially show in the filter text control.
- */
- protected String initialText = ""; //$NON-NLS-1$
-
/**
* The job used to refresh the tree.
*/
private Job refreshJob;
- /**
- * The parent composite of the filtered tree.
- *
- * @since 3.3
- */
- protected Composite parent;
-
- /**
- * Whether or not to show the filter controls (text and clear button). The
- * default is to show these controls. This can be overridden by providing a
- * setting in the product configuration file. The setting to add to not show
- * these controls is:
- *
- * org.eclipse.ui/SHOW_FILTERED_TEXTS=false
- */
- protected boolean showFilterControls;
-
/**
* @since 3.3
*/
@@ -147,11 +107,6 @@ public class FilteredTree extends Composite {
*/
private static final long SOFT_MAX_EXPAND_TIME = 200;
- /**
- * Time for refresh job delay in terms of expansion in long value
- */
- private final long refreshJobDelayInMillis;
-
/**
* Default time for refresh job delay in ms
*/
@@ -179,9 +134,8 @@ public class FilteredTree extends Composite {
* @since 3.116
*/
public FilteredTree(Composite parent, boolean useNewLook, boolean useFastHashLookup) {
- super(parent, SWT.NONE);
+ super(parent, SWT.NONE, DEFAULT_REFRESH_TIME);
this.parent = parent;
- this.refreshJobDelayInMillis = DEFAULT_REFRESH_TIME;
if (treeViewer != null) {
treeViewer.setUseHashlookup(useFastHashLookup);
}
@@ -225,9 +179,8 @@ public FilteredTree(Composite parent, int treeStyle, PatternFilter filter, boole
*/
public FilteredTree(Composite parent, int treeStyle, PatternFilter filter, boolean useNewLook,
boolean useFastHashLookup, long refreshJobDelayInMillis) {
- super(parent, SWT.NONE);
+ super(parent, SWT.NONE, refreshJobDelayInMillis);
this.parent = parent;
- this.refreshJobDelayInMillis = refreshJobDelayInMillis;
init(treeStyle, filter);
if (treeViewer != null) {
treeViewer.setUseHashlookup(useFastHashLookup);
@@ -257,8 +210,7 @@ public FilteredTree(Composite parent, int treeStyle, PatternFilter filter, boole
*/
@Deprecated
protected FilteredTree(Composite parent) {
- super(parent, SWT.NONE);
- this.refreshJobDelayInMillis = DEFAULT_REFRESH_TIME;
+ super(parent, SWT.NONE, DEFAULT_REFRESH_TIME);
this.parent = parent;
}
@@ -337,52 +289,18 @@ public FilteredTree(Composite parent, int treeStyle, PatternFilter filter, boole
this(parent, treeStyle, filter);
}
- /**
- * Create the filtered tree.
- *
- * @param treeStyle the style bits for the Tree
- * @param filter the filter to be used
- *
- * @since 3.3
- */
+ @Override
protected void init(int treeStyle, PatternFilter filter) {
- patternFilter = filter;
showFilterControls = PlatformUI.getPreferenceStore()
.getBoolean(IWorkbenchPreferenceConstants.SHOW_FILTERED_TEXTS);
- createControl(parent, treeStyle);
+ super.init(treeStyle, filter);
createRefreshJob();
setInitialText(WorkbenchMessages.FilteredTree_FilterMessage);
- setFont(parent.getFont());
-
}
- /**
- * Create the filtered tree's controls. Subclasses should override.
- *
- * @param parent the parent
- * @param treeStyle SWT style bits used to create the tree
- */
+ @Override
protected void createControl(Composite parent, int treeStyle) {
- GridLayout layout = new GridLayout();
- layout.marginHeight = 0;
- layout.marginWidth = 0;
- setLayout(layout);
-
- if (parent.getLayout() instanceof GridLayout) {
- setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
- }
-
- if (showFilterControls) {
- filterComposite = new Composite(this, SWT.NONE);
- GridLayout filterLayout = new GridLayout();
- filterLayout.marginHeight = 0;
- filterLayout.marginWidth = 0;
- filterComposite.setLayout(filterLayout);
- filterComposite.setFont(parent.getFont());
-
- createFilterControls(filterComposite);
- filterComposite.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false));
- }
+ super.createControl(parent, treeStyle);
treeComposite = new Composite(this, SWT.NONE);
GridLayout treeCompositeLayout = new GridLayout();
@@ -394,19 +312,6 @@ protected void createControl(Composite parent, int treeStyle) {
createTreeControl(treeComposite, treeStyle);
}
- /**
- * Create the filter controls. By default, a text and corresponding tool bar
- * button that clears the contents of the text is created. Subclasses may
- * override.
- *
- * @param parent parent Composite of the filter controls
- * @return the Composite that contains the filter controls
- */
- protected Composite createFilterControls(Composite parent) {
- createFilterText(parent);
- return parent;
- }
-
/**
* Creates and set up the tree and tree viewer. This method calls
* {@link #doCreateTreeViewer(Composite, int)} to create the tree viewer.
@@ -423,9 +328,9 @@ protected Control createTreeControl(Composite parent, int style) {
treeViewer.getControl().setLayoutData(data);
treeViewer.getControl().addDisposeListener(e -> refreshJob.cancel());
if (treeViewer instanceof NotifyingTreeViewer) {
- patternFilter.setUseCache(true);
+ getPatternFilter().setUseCache(true);
}
- treeViewer.addFilter(patternFilter);
+ treeViewer.addFilter(getPatternFilter());
return treeViewer.getControl();
}
@@ -449,8 +354,8 @@ protected TreeViewer doCreateTreeViewer(Composite parent, int style) {
*/
private TreeItem getFirstMatchingItem(TreeItem[] items) {
for (TreeItem item : items) {
- if (patternFilter.isLeafMatch(treeViewer, item.getData())
- && patternFilter.isElementSelectable(item.getData())) {
+ if (getPatternFilter().isLeafMatch(treeViewer, item.getData())
+ && getPatternFilter().isElementSelectable(item.getData())) {
return item;
}
TreeItem treeItem = getFirstMatchingItem(item.getItems());
@@ -492,9 +397,9 @@ public IStatus runInUIThread(IProgressMonitor monitor) {
boolean initial = initialText != null && initialText.equals(text);
if (initial) {
- patternFilter.setPattern(null);
+ getPatternFilter().setPattern(null);
} else if (text != null) {
- patternFilter.setPattern(text);
+ getPatternFilter().setPattern(text);
}
Control redrawFalseControl = treeComposite != null ? treeComposite : treeViewer.getControl();
@@ -583,7 +488,9 @@ private boolean recursiveExpand(TreeItem[] items, IProgressMonitor monitor, long
* override.
*
* @param visible boolean
+ * @deprecated As of 4.13 not used anymore
*/
+ @Deprecated(since = "2025-03", forRemoval = true)
protected void updateToolbar(boolean visible) {
// nothing to do
}
@@ -596,8 +503,9 @@ protected void updateToolbar(boolean visible) {
*
* @param parent Composite of the filter text
*/
+ @Override
protected void createFilterText(Composite parent) {
- filterText = doCreateFilterText(parent);
+ super.createFilterText(parent);
filterText.getAccessible().addAccessibleListener(new AccessibleAdapter() {
@Override
public void getName(AccessibleEvent e) {
@@ -641,44 +549,6 @@ private int itemCount(TreeItem treeItem) {
}
});
- filterText.addFocusListener(new FocusAdapter() {
- @Override
- public void focusGained(FocusEvent e) {
- /*
- * Running in an asyncExec because the selectAll() does not appear to work when
- * using mouse to give focus to text.
- */
- Display display = filterText.getDisplay();
- display.asyncExec(() -> {
- if (!filterText.isDisposed()) {
- if (getInitialText().equals(filterText.getText().trim())) {
- filterText.selectAll();
- }
- }
- });
- }
-
- @Override
- public void focusLost(FocusEvent e) {
- if (filterText.getText().equals(initialText)) {
- setFilterText(""); //$NON-NLS-1$
- textChanged();
- }
- }
- });
-
- filterText.addMouseListener(new MouseAdapter() {
- @Override
- public void mouseDown(MouseEvent e) {
- if (filterText.getText().equals(initialText)) {
- // XXX: We cannot call clearText() due to
- // https://bugs.eclipse.org/bugs/show_bug.cgi?id=260664
- setFilterText(""); //$NON-NLS-1$
- textChanged();
- }
- }
- });
-
filterText.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
@@ -701,11 +571,6 @@ public void keyPressed(KeyEvent e) {
updateTreeSelection(true);
}
});
-
- filterText.addModifyListener(e -> textChanged());
-
- GridData gridData = new GridData(SWT.FILL, SWT.CENTER, true, false);
- filterText.setLayoutData(gridData);
}
/**
@@ -740,15 +605,7 @@ protected void updateTreeSelection(boolean setFocus) {
}
}
- /**
- * Creates the text control for entering the filter text. Subclasses may
- * override.
- *
- * @param parent the parent composite
- * @return the text widget
- *
- * @since 3.3
- */
+ @Override
protected Text doCreateFilterText(Composite parent) {
return new Text(parent, SWT.SINGLE | SWT.BORDER | SWT.SEARCH | SWT.ICON_CANCEL);
}
@@ -757,9 +614,7 @@ protected Text doCreateFilterText(Composite parent) {
private boolean narrowingDown;
- /**
- * Update the receiver after the text has changed.
- */
+ @Override
protected void textChanged() {
narrowingDown = previousFilterText == null
|| previousFilterText.equals(WorkbenchMessages.FilteredTree_FilterMessage)
@@ -770,114 +625,16 @@ protected void textChanged() {
refreshJob.schedule(getRefreshJobDelay());
}
- /**
- * Return the time delay that should be used when scheduling the filter refresh
- * job. Subclasses may override.
- *
- * @return a time delay in milliseconds before the job should run
- *
- * @since 3.5
- */
- protected long getRefreshJobDelay() {
- return refreshJobDelayInMillis;
- }
-
- /**
- * Set the background for the widgets that support the filter text area.
- *
- * @param background background Color to set
- */
@Override
- public void setBackground(Color background) {
- super.setBackground(background);
- }
-
- /**
- * Clears the text in the filter text widget.
- */
- protected void clearText() {
- setFilterText(""); //$NON-NLS-1$
- textChanged();
- }
-
- /**
- * Set the text in the filter control.
- *
- * @param filterText the text to set.
- */
- protected void setFilterText(String filterText) {
- if (this.filterText != null) {
- this.filterText.setText(filterText);
- selectAll();
- }
- }
-
- /**
- * Returns the pattern filter used by this tree.
- *
- * @return The pattern filter; never null.
- */
public final PatternFilter getPatternFilter() {
- return patternFilter;
+ return (PatternFilter) super.getPatternFilter();
}
- /**
- * Get the tree viewer of the receiver.
- *
- * @return the tree viewer
- */
+ @Override
public TreeViewer getViewer() {
return treeViewer;
}
- /**
- * Get the filter text for the receiver, if it was created. Otherwise return
- * null.
- *
- * @return the filter Text, or null if it was not created
- */
- public Text getFilterControl() {
- return filterText;
- }
-
- /**
- * Convenience method to return the text of the filter control. If the text
- * widget is not created, then null is returned.
- *
- * @return String in the text, or null if the text does not exist
- */
- protected String getFilterString() {
- return filterText != null ? filterText.getText() : null;
- }
-
- /**
- * Set the text that will be shown until the first focus. A default value is
- * provided, so this method only need be called if overriding the default
- * initial text is desired.
- *
- * @param text initial text to appear in text field
- */
- public void setInitialText(String text) {
- initialText = text;
- if (filterText != null) {
- filterText.setMessage(text);
- if (filterText.isFocusControl()) {
- setFilterText(initialText);
- textChanged();
- } else {
- getDisplay().asyncExec(() -> {
- if (!filterText.isDisposed() && filterText.isFocusControl()) {
- setFilterText(initialText);
- textChanged();
- }
- });
- }
- } else {
- setFilterText(initialText);
- textChanged();
- }
- }
-
/**
* Sets whether this filtered tree is used to make quick selections. In this
* mode the first match in the tree is automatically selected while filtering
@@ -894,24 +651,6 @@ public void setQuickSelectionMode(boolean enabled) {
this.quickSelectionMode = enabled;
}
- /**
- * Select all text in the filter text field.
- */
- protected void selectAll() {
- if (filterText != null) {
- filterText.selectAll();
- }
- }
-
- /**
- * Get the initial text for the receiver.
- *
- * @return String
- */
- protected String getInitialText() {
- return initialText;
- }
-
/**
* Return a bold font if the given element matches the given pattern. Clients
* can opt to call this method from a Viewer's label provider to get a bold font
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/IOverwriteQuery.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dialogs/IOverwriteQuery.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/IOverwriteQuery.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dialogs/IOverwriteQuery.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/ISelectionStatusValidator.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dialogs/ISelectionStatusValidator.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/ISelectionStatusValidator.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dialogs/ISelectionStatusValidator.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/ISelectionValidator.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dialogs/ISelectionValidator.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/ISelectionValidator.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dialogs/ISelectionValidator.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/IStyledStringHighlighter.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dialogs/IStyledStringHighlighter.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/IStyledStringHighlighter.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dialogs/IStyledStringHighlighter.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/IWorkingSetEditWizard.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dialogs/IWorkingSetEditWizard.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/IWorkingSetEditWizard.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dialogs/IWorkingSetEditWizard.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/IWorkingSetNewWizard.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dialogs/IWorkingSetNewWizard.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/IWorkingSetNewWizard.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dialogs/IWorkingSetNewWizard.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/IWorkingSetPage.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dialogs/IWorkingSetPage.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/IWorkingSetPage.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dialogs/IWorkingSetPage.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/IWorkingSetSelectionDialog.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dialogs/IWorkingSetSelectionDialog.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/IWorkingSetSelectionDialog.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dialogs/IWorkingSetSelectionDialog.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/ListDialog.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dialogs/ListDialog.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/ListDialog.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dialogs/ListDialog.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/ListSelectionDialog.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dialogs/ListSelectionDialog.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/ListSelectionDialog.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dialogs/ListSelectionDialog.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/PatternFilter.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dialogs/PatternFilter.java
similarity index 97%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/PatternFilter.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dialogs/PatternFilter.java
index b27c7d89b43..87746c48cb8 100644
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/PatternFilter.java
+++ b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dialogs/PatternFilter.java
@@ -17,13 +17,13 @@
import java.util.HashMap;
import java.util.Map;
+import org.eclipse.core.text.StringMatcher;
import org.eclipse.jface.viewers.AbstractTreeViewer;
import org.eclipse.jface.viewers.ContentViewer;
import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.jface.viewers.ViewerFilter;
-import org.eclipse.ui.internal.misc.TextMatcher;
/**
* A filter used in conjunction with FilteredTree. In order to
@@ -57,7 +57,7 @@ public class PatternFilter extends ViewerFilter {
/**
* The string pattern matcher used for this pattern filter.
*/
- private TextMatcher matcher;
+ private StringMatcher matcher;
private boolean useEarlyReturnIfMatcherIsNull = true;
@@ -173,7 +173,7 @@ public void setPattern(String patternString) {
if (includeLeadingWildcard) {
pattern = "*" + pattern; //$NON-NLS-1$
}
- matcher = new TextMatcher(pattern, true, false);
+ matcher = new StringMatcher(pattern.trim(), true, false);
}
}
@@ -197,7 +197,7 @@ private boolean match(String string) {
if (matcher == null) {
return true;
}
- return matcher.match(string);
+ return matcher.matchWords(string);
}
/**
@@ -289,7 +289,7 @@ protected boolean wordMatches(String text) {
}
// Otherwise check if any of the words of the text matches
- String[] words = TextMatcher.getWords(text);
+ String[] words = StringMatcher.getWords(text);
for (String word : words) {
if (!match(word)) {
return false;
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/PreferenceLinkArea.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dialogs/PreferenceLinkArea.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/PreferenceLinkArea.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dialogs/PreferenceLinkArea.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/PreferencesUtil.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dialogs/PreferencesUtil.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/PreferencesUtil.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dialogs/PreferencesUtil.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/PropertyDialogAction.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dialogs/PropertyDialogAction.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/PropertyDialogAction.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dialogs/PropertyDialogAction.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/PropertyPage.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dialogs/PropertyPage.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/PropertyPage.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dialogs/PropertyPage.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/SearchPattern.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dialogs/SearchPattern.java
similarity index 99%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/SearchPattern.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dialogs/SearchPattern.java
index 0b219cab6f1..b30e9fdf835 100644
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/SearchPattern.java
+++ b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dialogs/SearchPattern.java
@@ -13,8 +13,8 @@
*******************************************************************************/
package org.eclipse.ui.dialogs;
+import org.eclipse.core.text.StringMatcher;
import org.eclipse.jface.util.Util;
-import org.eclipse.ui.internal.misc.TextMatcher;
/**
* A search pattern defines how search results are found.
@@ -120,7 +120,7 @@ public class SearchPattern {
private String initialPattern;
- private TextMatcher stringMatcher;
+ private StringMatcher stringMatcher;
private static final char START_SYMBOL = '>';
@@ -200,7 +200,7 @@ public void setPattern(String stringPattern) {
initializePatternAndMatchRule(stringPattern);
matchRule = matchRule & this.allowedRules;
if (matchRule == RULE_PATTERN_MATCH) {
- stringMatcher = new TextMatcher(this.stringPattern, true, false);
+ stringMatcher = new StringMatcher(this.stringPattern.trim(), true, false);
}
}
@@ -219,7 +219,7 @@ public boolean matches(String text) {
case RULE_BLANK_MATCH:
return true;
case RULE_PATTERN_MATCH:
- return stringMatcher.match(text);
+ return stringMatcher.matchWords(text);
case RULE_EXACT_MATCH:
return stringPattern.equalsIgnoreCase(text);
case RULE_CAMELCASE_MATCH:
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/SelectionDialog.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dialogs/SelectionDialog.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/SelectionDialog.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dialogs/SelectionDialog.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/SelectionStatusDialog.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dialogs/SelectionStatusDialog.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/SelectionStatusDialog.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dialogs/SelectionStatusDialog.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/StyledStringHighlighter.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dialogs/StyledStringHighlighter.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/StyledStringHighlighter.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dialogs/StyledStringHighlighter.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/TwoArrayQuickSorter.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dialogs/TwoArrayQuickSorter.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/TwoArrayQuickSorter.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dialogs/TwoArrayQuickSorter.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/TwoPaneElementSelector.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dialogs/TwoPaneElementSelector.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/TwoPaneElementSelector.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dialogs/TwoPaneElementSelector.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/TypeFilteringDialog.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dialogs/TypeFilteringDialog.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/TypeFilteringDialog.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dialogs/TypeFilteringDialog.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/WorkingSetConfigurationBlock.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dialogs/WorkingSetConfigurationBlock.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/WorkingSetConfigurationBlock.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dialogs/WorkingSetConfigurationBlock.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/WorkingSetGroup.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dialogs/WorkingSetGroup.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/WorkingSetGroup.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dialogs/WorkingSetGroup.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/YesNoCancelListSelectionDialog.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dialogs/YesNoCancelListSelectionDialog.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/YesNoCancelListSelectionDialog.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dialogs/YesNoCancelListSelectionDialog.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/package.html b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dialogs/package.html
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/package.html
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dialogs/package.html
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dnd/IDragAndDropService.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dnd/IDragAndDropService.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dnd/IDragAndDropService.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dnd/IDragAndDropService.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dnd/package.html b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dnd/package.html
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dnd/package.html
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dnd/package.html
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/fieldassist/ContentAssistCommandAdapter.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/fieldassist/ContentAssistCommandAdapter.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/fieldassist/ContentAssistCommandAdapter.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/fieldassist/ContentAssistCommandAdapter.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/fieldassist/ContentAssistField.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/fieldassist/ContentAssistField.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/fieldassist/ContentAssistField.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/fieldassist/ContentAssistField.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/fieldassist/package.html b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/fieldassist/package.html
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/fieldassist/package.html
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/fieldassist/package.html
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/handlers/CollapseAllHandler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/handlers/CollapseAllHandler.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/handlers/CollapseAllHandler.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/handlers/CollapseAllHandler.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/handlers/ExpandAllHandler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/handlers/ExpandAllHandler.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/handlers/ExpandAllHandler.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/handlers/ExpandAllHandler.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/handlers/HandlerUtil.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/handlers/HandlerUtil.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/handlers/HandlerUtil.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/handlers/HandlerUtil.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/handlers/IHandlerActivation.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/handlers/IHandlerActivation.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/handlers/IHandlerActivation.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/handlers/IHandlerActivation.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/handlers/IHandlerService.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/handlers/IHandlerService.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/handlers/IHandlerService.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/handlers/IHandlerService.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/handlers/RadioState.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/handlers/RadioState.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/handlers/RadioState.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/handlers/RadioState.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/handlers/RegistryRadioState.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/handlers/RegistryRadioState.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/handlers/RegistryRadioState.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/handlers/RegistryRadioState.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/handlers/RegistryToggleState.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/handlers/RegistryToggleState.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/handlers/RegistryToggleState.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/handlers/RegistryToggleState.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/handlers/ShowPerspectiveHandler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/handlers/ShowPerspectiveHandler.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/handlers/ShowPerspectiveHandler.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/handlers/ShowPerspectiveHandler.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/handlers/ShowViewHandler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/handlers/ShowViewHandler.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/handlers/ShowViewHandler.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/handlers/ShowViewHandler.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/handlers/package.html b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/handlers/package.html
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/handlers/package.html
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/handlers/package.html
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/help/AbstractHelpUI.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/help/AbstractHelpUI.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/help/AbstractHelpUI.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/help/AbstractHelpUI.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/help/IWorkbenchHelpSystem.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/help/IWorkbenchHelpSystem.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/help/IWorkbenchHelpSystem.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/help/IWorkbenchHelpSystem.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/help/package.html b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/help/package.html
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/help/package.html
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/help/package.html
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/AbstractEnabledHandler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/AbstractEnabledHandler.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/AbstractEnabledHandler.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/AbstractEnabledHandler.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/AbstractEvaluationHandler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/AbstractEvaluationHandler.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/AbstractEvaluationHandler.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/AbstractEvaluationHandler.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/AbstractWorkingSet.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/AbstractWorkingSet.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/AbstractWorkingSet.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/AbstractWorkingSet.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/AbstractWorkingSetManager.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/AbstractWorkingSetManager.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/AbstractWorkingSetManager.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/AbstractWorkingSetManager.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ActionDescriptor.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ActionDescriptor.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ActionDescriptor.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ActionDescriptor.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ActionExpression.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ActionExpression.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ActionExpression.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ActionExpression.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ActionPresentation.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ActionPresentation.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ActionPresentation.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ActionPresentation.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ActionSetActionBars.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ActionSetActionBars.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ActionSetActionBars.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ActionSetActionBars.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ActionSetContributionItem.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ActionSetContributionItem.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ActionSetContributionItem.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ActionSetContributionItem.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ActionSetManager.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ActionSetManager.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ActionSetManager.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ActionSetManager.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ActionSetMenuManager.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ActionSetMenuManager.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ActionSetMenuManager.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ActionSetMenuManager.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ActionSetSeparator.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ActionSetSeparator.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ActionSetSeparator.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ActionSetSeparator.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ActionSetsEvent.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ActionSetsEvent.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ActionSetsEvent.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ActionSetsEvent.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ActivateEditorHandler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ActivateEditorHandler.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ActivateEditorHandler.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ActivateEditorHandler.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ActivityPersistanceHelper.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ActivityPersistanceHelper.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ActivityPersistanceHelper.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ActivityPersistanceHelper.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/AggregateWorkingSet.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/AggregateWorkingSet.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/AggregateWorkingSet.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/AggregateWorkingSet.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/BindingToModelProcessor.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/BindingToModelProcessor.java
similarity index 89%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/BindingToModelProcessor.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/BindingToModelProcessor.java
index 9def779f0de..15d160e95d5 100644
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/BindingToModelProcessor.java
+++ b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/BindingToModelProcessor.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2010, 2015 IBM Corporation and others.
+ * Copyright (c) 2010, 2024 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -33,19 +33,33 @@
import org.eclipse.e4.ui.model.application.commands.MCommandsFactory;
import org.eclipse.e4.ui.model.application.commands.MKeyBinding;
import org.eclipse.e4.ui.model.application.commands.impl.CommandsFactoryImpl;
+import org.eclipse.e4.ui.workbench.modeling.IModelProcessorContribution;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.jface.bindings.Binding;
import org.eclipse.jface.bindings.BindingManager;
import org.eclipse.ui.internal.keys.BindingPersistence;
import org.eclipse.ui.internal.keys.BindingService;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
-public class BindingToModelProcessor {
+@Component(service = IModelProcessorContribution.class)
+public class BindingToModelProcessor implements IModelProcessorContribution {
private Map contexts = new HashMap<>();
private Map commands = new HashMap<>();
private Map tables = new HashMap<>();
private Set keys = new HashSet<>();
+ // define dependencies to CommandToModelProcessor and ContextToModelProcessor to
+ // ensure these two IModelProcessorContributions are registered before this
+ // BindingToModelProcessor
+
+ @Reference
+ private CommandToModelProcessor commandToModelProcessor;
+
+ @Reference
+ private ContextToModelProcessor contextToModelProcessor;
+
@Execute
void process(final MApplication application, IEclipseContext context) {
gatherContexts(application.getRootContext());
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/BrandingProperties.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/BrandingProperties.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/BrandingProperties.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/BrandingProperties.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/BundleGroupProperties.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/BundleGroupProperties.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/BundleGroupProperties.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/BundleGroupProperties.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ChangeToPerspectiveMenu.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ChangeToPerspectiveMenu.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ChangeToPerspectiveMenu.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ChangeToPerspectiveMenu.java
diff --git a/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/CloseAllHandler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/CloseAllHandler.java
new file mode 100644
index 00000000000..45d8d0b5a95
--- /dev/null
+++ b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/CloseAllHandler.java
@@ -0,0 +1,156 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2015 IBM Corporation 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
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ ******************************************************************************/
+
+package org.eclipse.ui.internal;
+
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.stream.Collectors;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.expressions.EvaluationResult;
+import org.eclipse.core.expressions.Expression;
+import org.eclipse.core.expressions.ExpressionInfo;
+import org.eclipse.core.expressions.IEvaluationContext;
+import org.eclipse.e4.ui.model.application.MApplication;
+import org.eclipse.e4.ui.model.application.ui.basic.MPart;
+import org.eclipse.e4.ui.workbench.IWorkbench;
+import org.eclipse.e4.ui.workbench.modeling.EModelService;
+import org.eclipse.e4.ui.workbench.modeling.EPartService;
+import org.eclipse.ui.IEditorReference;
+import org.eclipse.ui.ISources;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.handlers.HandlerUtil;
+import org.eclipse.ui.internal.e4.compatibility.CompatibilityEditor;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.FrameworkUtil;
+import org.osgi.framework.ServiceReference;
+
+/**
+ * Closes all active editors
+ *
+ * Replacement for CloseAllAction
+ *
+ *
+ * @since 3.3
+ */
+public class CloseAllHandler extends AbstractEvaluationHandler {
+ private Expression enabledWhen;
+
+ public CloseAllHandler() {
+ registerEnablement();
+ }
+
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ IWorkbenchWindow window = HandlerUtil.getActiveWorkbenchWindowChecked(event);
+ IWorkbenchPage page = window.getActivePage();
+ if (page != null) {
+ page.closeAllEditors(true);
+
+ // close parts representing editors which were contributed via
+ // eg. model fragment(s)
+ Collection partsTaggedAsEditor = getContributedPartsTaggedAsEditor();
+ if (!partsTaggedAsEditor.isEmpty()) {
+ MApplication application = getApplicationModel();
+ EPartService partService = application.getContext().get(EPartService.class);
+ if (partService != null) {
+ for (MPart part : partsTaggedAsEditor) {
+ if (partService.savePart(part, true)) {
+ partService.hidePart(part);
+ }
+ }
+ // ensure the EnabledWhenExpression evaluation is performed
+ // otherwise the 'Close All Editors' will still appear enabled until
+ // the user clicks/selects a different part
+ getEvaluationService().requestEvaluation(ISources.ACTIVE_PART_NAME);
+ }
+ }
+ }
+
+ return null;
+ }
+
+ @Override
+ protected Expression getEnabledWhenExpression() {
+ if (enabledWhen == null) {
+ enabledWhen = new Expression() {
+ @Override
+ public EvaluationResult evaluate(IEvaluationContext context) {
+ IWorkbenchPart part = InternalHandlerUtil.getActivePart(context);
+ Object perspective = InternalHandlerUtil.getVariable(context,
+ ISources.ACTIVE_WORKBENCH_WINDOW_ACTIVE_PERSPECTIVE_NAME);
+ if (part != null && perspective != null && part.getSite() != null) {
+ IWorkbenchPage page = part.getSite().getPage();
+ if (page != null) {
+ IEditorReference[] refArray = page.getEditorReferences();
+ if (refArray != null && refArray.length > 0) {
+ return EvaluationResult.TRUE;
+ }
+
+ // determine if we have any part contributions via model fragment
+ // which were tagged as being an 'Editor' (and which are to be rendered)
+ if (!getContributedPartsTaggedAsEditor().isEmpty()) {
+ return EvaluationResult.TRUE;
+ }
+ }
+ }
+ return EvaluationResult.FALSE;
+ }
+
+ @Override
+ public void collectExpressionInfo(ExpressionInfo info) {
+ info.addVariableNameAccess(ISources.ACTIVE_PART_NAME);
+ info.addVariableNameAccess(ISources.ACTIVE_WORKBENCH_WINDOW_ACTIVE_PERSPECTIVE_NAME);
+ }
+ };
+ }
+ return enabledWhen;
+ }
+
+ /**
+ * Collects part contributions from the application model which are not
+ * associated with compatibility layer editors, and are instead parts
+ * contributed via eg. model fragment, and which were tagged as representing an
+ * Editor, via the {@link Workbench#EDITOR_TAG} tag.
+ *
+ * @return a collection of (closable) part contributions from the application
+ * model, tagged as 'Editor' and not containing the parts associated
+ * with compatibility layer editors. Returns an empty collection if none
+ * are found
+ */
+ private Collection getContributedPartsTaggedAsEditor() {
+ MApplication application = getApplicationModel();
+ EModelService modelService = application.getContext().get(EModelService.class);
+
+ List partsTaggedAsEditor = modelService != null
+ ? modelService.findElements(application, null, MPart.class, Arrays.asList(Workbench.EDITOR_TAG))
+ : Collections.emptyList();
+
+ // remove parts which we wish to ignore: compatibility layer editors,
+ // non-closable parts, non-rendered parts
+ return partsTaggedAsEditor.stream().filter(p -> !CompatibilityEditor.MODEL_ELEMENT_ID.equals(p.getElementId())
+ && p.isCloseable() && p.isToBeRendered()).collect(Collectors.toSet());
+ }
+
+ private MApplication getApplicationModel() {
+ BundleContext bundleContext = FrameworkUtil.getBundle(IWorkbench.class).getBundleContext();
+ ServiceReference reference = bundleContext.getServiceReference(IWorkbench.class);
+ return bundleContext.getService(reference).getApplication();
+ }
+}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/CloseAllSavedAction.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/CloseAllSavedAction.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/CloseAllSavedAction.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/CloseAllSavedAction.java
diff --git a/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/CloseEditorHandler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/CloseEditorHandler.java
new file mode 100644
index 00000000000..11894454d03
--- /dev/null
+++ b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/CloseEditorHandler.java
@@ -0,0 +1,90 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2015 IBM Corporation 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
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ ******************************************************************************/
+
+package org.eclipse.ui.internal;
+
+import java.util.List;
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.ui.model.application.ui.basic.MPart;
+import org.eclipse.e4.ui.workbench.IWorkbench;
+import org.eclipse.e4.ui.workbench.modeling.EPartService;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.handlers.HandlerUtil;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.FrameworkUtil;
+import org.osgi.framework.ServiceReference;
+
+/**
+ * Closes the active editor.
+ *
+ * Replacement for CloseEditorAction
+ *
+ *
+ * @since 3.3
+ */
+public class CloseEditorHandler extends AbstractHandler {
+
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+
+ IWorkbenchPart activePart = HandlerUtil.getActivePart(event);
+ if (activePart instanceof IEditorPart) {
+ IWorkbenchWindow window = HandlerUtil.getActiveWorkbenchWindowChecked(event);
+ window.getActivePage().closeEditor((IEditorPart) activePart, true);
+ } else {
+ // we may have an E4PartWrapper for a part which has been contributed eg. via a
+ // PartDescriptor in a model fragment, and which has been tagged as
+ // representing an Editor
+ if (activePart instanceof E4PartWrapper) {
+ // derive the IEclipseContext & EPartService
+ BundleContext context = FrameworkUtil.getBundle(IWorkbench.class).getBundleContext();
+ ServiceReference reference = context.getServiceReference(IWorkbench.class);
+ IEclipseContext eclipseContext = context.getService(reference).getApplication().getContext();
+ EPartService partService = eclipseContext.get(EPartService.class);
+
+ // access the wrapped part => save & close it
+ MPart wrappedPart = ((E4PartWrapper) activePart).wrappedPart;
+ if (wrappedPart != null && partService != null) {
+ // ensure the active part does indeed represent an editor
+ // (and not eg. a view) - checking here is just for extra
+ // redundancy
+ if (representsEditor(wrappedPart)) {
+ if (partService.savePart(wrappedPart, true)) {
+ partService.hidePart(wrappedPart);
+ }
+ }
+ }
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * Checks whether the specified part represents an editor instance.
+ *
+ * @param part the part to query
+ * @return true if the specified part represents an editor, false otherwise
+ */
+ private boolean representsEditor(MPart part) {
+ List partTags = part.getTags();
+ return partTags == null || partTags.isEmpty() ? false
+ : partTags.stream().anyMatch(tag -> Workbench.EDITOR_TAG.equals(tag));
+ }
+}
\ No newline at end of file
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/CloseOthersHandler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/CloseOthersHandler.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/CloseOthersHandler.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/CloseOthersHandler.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/CommandToModelProcessor.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/CommandToModelProcessor.java
similarity index 92%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/CommandToModelProcessor.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/CommandToModelProcessor.java
index dceb328dde1..d295b399c5f 100644
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/CommandToModelProcessor.java
+++ b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/CommandToModelProcessor.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2010, 2018 IBM Corporation and others.
+ * Copyright (c) 2010, 2024 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -30,12 +30,15 @@
import org.eclipse.e4.ui.model.application.commands.MCategory;
import org.eclipse.e4.ui.model.application.commands.MCommand;
import org.eclipse.e4.ui.workbench.modeling.EModelService;
+import org.eclipse.e4.ui.workbench.modeling.IModelProcessorContribution;
import org.eclipse.ui.internal.commands.CommandPersistence;
+import org.osgi.service.component.annotations.Component;
/**
* @since 3.5
*/
-public class CommandToModelProcessor {
+@Component(service = { IModelProcessorContribution.class, CommandToModelProcessor.class })
+public class CommandToModelProcessor implements IModelProcessorContribution {
private Map categories = new HashMap<>();
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ConfigurationInfo.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ConfigurationInfo.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ConfigurationInfo.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ConfigurationInfo.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ContextToModelProcessor.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ContextToModelProcessor.java
similarity index 90%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ContextToModelProcessor.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ContextToModelProcessor.java
index be8c2bea3f8..1b1db7ff996 100644
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ContextToModelProcessor.java
+++ b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ContextToModelProcessor.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2010, 2015 IBM Corporation and others.
+ * Copyright (c) 2010, 2024 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -26,12 +26,15 @@
import org.eclipse.e4.ui.model.application.MApplication;
import org.eclipse.e4.ui.model.application.commands.MBindingContext;
import org.eclipse.e4.ui.model.application.commands.impl.CommandsFactoryImpl;
+import org.eclipse.e4.ui.workbench.modeling.IModelProcessorContribution;
import org.eclipse.ui.internal.contexts.ContextPersistence;
+import org.osgi.service.component.annotations.Component;
/**
* @since 3.5
*/
-public class ContextToModelProcessor {
+@Component(service = { IModelProcessorContribution.class, ContextToModelProcessor.class })
+public class ContextToModelProcessor implements IModelProcessorContribution {
private Map contexts = new HashMap<>();
@Execute
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/CoolBarToTrimManager.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/CoolBarToTrimManager.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/CoolBarToTrimManager.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/CoolBarToTrimManager.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/CycleEditorHandler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/CycleEditorHandler.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/CycleEditorHandler.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/CycleEditorHandler.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/CyclePerspectiveHandler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/CyclePerspectiveHandler.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/CyclePerspectiveHandler.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/CyclePerspectiveHandler.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/CycleViewHandler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/CycleViewHandler.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/CycleViewHandler.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/CycleViewHandler.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/DefaultSaveable.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/DefaultSaveable.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/DefaultSaveable.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/DefaultSaveable.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/DirtyPerspectiveMarker.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/DirtyPerspectiveMarker.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/DirtyPerspectiveMarker.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/DirtyPerspectiveMarker.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/E4PartWrapper.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/E4PartWrapper.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/E4PartWrapper.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/E4PartWrapper.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EarlyStartupRunnable.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/EarlyStartupRunnable.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EarlyStartupRunnable.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/EarlyStartupRunnable.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorActionBars.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/EditorActionBars.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorActionBars.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/EditorActionBars.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorActionBuilder.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/EditorActionBuilder.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorActionBuilder.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/EditorActionBuilder.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorHistory.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/EditorHistory.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorHistory.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/EditorHistory.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorHistoryItem.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/EditorHistoryItem.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorHistoryItem.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/EditorHistoryItem.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorMenuManager.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/EditorMenuManager.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorMenuManager.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/EditorMenuManager.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorPluginAction.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/EditorPluginAction.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorPluginAction.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/EditorPluginAction.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorReference.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/EditorReference.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorReference.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/EditorReference.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorSite.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/EditorSite.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorSite.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/EditorSite.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorSiteDragAndDropServiceImpl.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/EditorSiteDragAndDropServiceImpl.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorSiteDragAndDropServiceImpl.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/EditorSiteDragAndDropServiceImpl.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ErrorEditorPart.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ErrorEditorPart.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ErrorEditorPart.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ErrorEditorPart.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ErrorViewPart.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ErrorViewPart.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ErrorViewPart.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ErrorViewPart.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ExceptionHandler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ExceptionHandler.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ExceptionHandler.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ExceptionHandler.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ExtensionEventHandler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ExtensionEventHandler.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ExtensionEventHandler.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ExtensionEventHandler.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ExtensionEventHandler.properties b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ExtensionEventHandler.properties
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ExtensionEventHandler.properties
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ExtensionEventHandler.properties
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ExtensionEventHandlerMessages.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ExtensionEventHandlerMessages.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ExtensionEventHandlerMessages.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ExtensionEventHandlerMessages.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/FilteredTableBaseHandler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/FilteredTableBaseHandler.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/FilteredTableBaseHandler.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/FilteredTableBaseHandler.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/HeapStatus.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/HeapStatus.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/HeapStatus.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/HeapStatus.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IActionSetContributionItem.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/IActionSetContributionItem.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IActionSetContributionItem.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/IActionSetContributionItem.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IBackgroundSaveListener.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/IBackgroundSaveListener.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IBackgroundSaveListener.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/IBackgroundSaveListener.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IChangeListener.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/IChangeListener.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IChangeListener.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/IChangeListener.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IHeapStatusConstants.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/IHeapStatusConstants.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IHeapStatusConstants.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/IHeapStatusConstants.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IMenuServiceWorkaround.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/IMenuServiceWorkaround.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IMenuServiceWorkaround.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/IMenuServiceWorkaround.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IObjectActionContributor.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/IObjectActionContributor.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IObjectActionContributor.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/IObjectActionContributor.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IObjectContributor.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/IObjectContributor.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IObjectContributor.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/IObjectContributor.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IPreferenceConstants.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/IPreferenceConstants.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IPreferenceConstants.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/IPreferenceConstants.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ISelectionConversionService.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ISelectionConversionService.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ISelectionConversionService.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ISelectionConversionService.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IWorkbenchConstants.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/IWorkbenchConstants.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IWorkbenchConstants.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/IWorkbenchConstants.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IWorkbenchGraphicConstants.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/IWorkbenchGraphicConstants.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IWorkbenchGraphicConstants.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/IWorkbenchGraphicConstants.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IWorkbenchHelpContextIds.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/IWorkbenchHelpContextIds.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IWorkbenchHelpContextIds.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/IWorkbenchHelpContextIds.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IWorkbenchThemeConstants.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/IWorkbenchThemeConstants.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IWorkbenchThemeConstants.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/IWorkbenchThemeConstants.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/InternalHandlerUtil.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/InternalHandlerUtil.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/InternalHandlerUtil.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/InternalHandlerUtil.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/InternalSaveable.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/InternalSaveable.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/InternalSaveable.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/InternalSaveable.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/JFaceUtil.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/JFaceUtil.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/JFaceUtil.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/JFaceUtil.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/KeyBindingService.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/KeyBindingService.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/KeyBindingService.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/KeyBindingService.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/LargeFileLimitsPreferenceHandler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/LargeFileLimitsPreferenceHandler.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/LargeFileLimitsPreferenceHandler.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/LargeFileLimitsPreferenceHandler.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/LegacyResourceSupport.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/LegacyResourceSupport.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/LegacyResourceSupport.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/LegacyResourceSupport.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/LegacyTrim.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/LegacyTrim.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/LegacyTrim.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/LegacyTrim.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/LocalWorkingSetManager.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/LocalWorkingSetManager.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/LocalWorkingSetManager.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/LocalWorkingSetManager.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/NavigationHistory.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/NavigationHistory.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/NavigationHistory.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/NavigationHistory.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/NavigationHistoryAction.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/NavigationHistoryAction.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/NavigationHistoryAction.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/NavigationHistoryAction.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/NavigationHistoryEditorInfo.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/NavigationHistoryEditorInfo.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/NavigationHistoryEditorInfo.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/NavigationHistoryEditorInfo.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/NavigationHistoryEntry.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/NavigationHistoryEntry.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/NavigationHistoryEntry.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/NavigationHistoryEntry.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ObjectActionContributor.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ObjectActionContributor.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ObjectActionContributor.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ObjectActionContributor.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ObjectActionContributorManager.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ObjectActionContributorManager.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ObjectActionContributorManager.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ObjectActionContributorManager.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ObjectActionContributorReader.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ObjectActionContributorReader.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ObjectActionContributorReader.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ObjectActionContributorReader.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ObjectContributorManager.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ObjectContributorManager.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ObjectContributorManager.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ObjectContributorManager.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ObjectFilterTest.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ObjectFilterTest.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ObjectFilterTest.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ObjectFilterTest.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ObjectPluginAction.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ObjectPluginAction.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ObjectPluginAction.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ObjectPluginAction.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/OpenPerspectivePropertyTester.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/OpenPerspectivePropertyTester.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/OpenPerspectivePropertyTester.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/OpenPerspectivePropertyTester.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/OpenPreferencesAction.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/OpenPreferencesAction.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/OpenPreferencesAction.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/OpenPreferencesAction.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PageEventAction.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/PageEventAction.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PageEventAction.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/PageEventAction.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PageListenerList.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/PageListenerList.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PageListenerList.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/PageListenerList.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PagePartSelectionTracker.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/PagePartSelectionTracker.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PagePartSelectionTracker.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/PagePartSelectionTracker.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PartPane.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/PartPane.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PartPane.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/PartPane.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PartPluginAction.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/PartPluginAction.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PartPluginAction.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/PartPluginAction.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PartSelectionListener.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/PartSelectionListener.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PartSelectionListener.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/PartSelectionListener.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PartService.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/PartService.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PartService.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/PartService.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PartSite.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/PartSite.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PartSite.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/PartSite.java
diff --git a/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/PartTaggedAsEditorPropertyTester.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/PartTaggedAsEditorPropertyTester.java
new file mode 100644
index 00000000000..78acda39cae
--- /dev/null
+++ b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/PartTaggedAsEditorPropertyTester.java
@@ -0,0 +1,47 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2015 IBM Corporation 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
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ ******************************************************************************/
+
+package org.eclipse.ui.internal;
+
+import java.util.List;
+import org.eclipse.core.expressions.PropertyTester;
+
+/**
+ *
+ * Tests whether the object under test represents an MPart instance which is
+ * tagged as being one which represents an Editor (rather than a View).
+ *
+ *
+ *
+ * This test is performed via a query of the tags associated with the MPart, and
+ * checking whether this collection contains the
+ * {@link org.eclipse.ui.internal.Workbench#EDITOR_TAG} identifier.
+ *
+ *
+ */
+public class PartTaggedAsEditorPropertyTester extends PropertyTester {
+
+ @Override
+ public boolean test(Object receiver, String property, Object[] args, Object expectedValue) {
+ if (receiver instanceof E4PartWrapper) {
+ E4PartWrapper partWrapper = (E4PartWrapper) receiver;
+ if (partWrapper.wrappedPart != null) {
+ List partTags = partWrapper.wrappedPart.getTags();
+ return partTags == null || partTags.isEmpty() ? false
+ : partTags.stream().anyMatch(tag -> Workbench.EDITOR_TAG.equals(tag));
+ }
+ }
+ return false;
+ }
+}
\ No newline at end of file
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PendingSyncExec.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/PendingSyncExec.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PendingSyncExec.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/PendingSyncExec.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/Perspective.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/Perspective.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/Perspective.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/Perspective.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PerspectiveAction.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/PerspectiveAction.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PerspectiveAction.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/PerspectiveAction.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PerspectiveExtensionReader.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/PerspectiveExtensionReader.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PerspectiveExtensionReader.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/PerspectiveExtensionReader.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PerspectiveListenerList.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/PerspectiveListenerList.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PerspectiveListenerList.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/PerspectiveListenerList.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PerspectiveTagger.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/PerspectiveTagger.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PerspectiveTagger.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/PerspectiveTagger.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PerspectiveTracker.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/PerspectiveTracker.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PerspectiveTracker.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/PerspectiveTracker.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PlaceholderContributionItem.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/PlaceholderContributionItem.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PlaceholderContributionItem.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/PlaceholderContributionItem.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PlatformUIPreferenceListener.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/PlatformUIPreferenceListener.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PlatformUIPreferenceListener.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/PlatformUIPreferenceListener.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PluginAction.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/PluginAction.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PluginAction.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/PluginAction.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PluginActionBuilder.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/PluginActionBuilder.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PluginActionBuilder.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/PluginActionBuilder.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PluginActionContributionItem.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/PluginActionContributionItem.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PluginActionContributionItem.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/PluginActionContributionItem.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PluginActionCoolBarContributionItem.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/PluginActionCoolBarContributionItem.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PluginActionCoolBarContributionItem.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/PluginActionCoolBarContributionItem.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PluginActionSet.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/PluginActionSet.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PluginActionSet.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/PluginActionSet.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PluginActionSetBuilder.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/PluginActionSetBuilder.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PluginActionSetBuilder.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/PluginActionSetBuilder.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PopupMenuExtender.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/PopupMenuExtender.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PopupMenuExtender.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/PopupMenuExtender.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ProductInfo.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ProductInfo.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ProductInfo.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ProductInfo.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ProductProperties.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ProductProperties.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ProductProperties.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ProductProperties.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ReopenEditorMenu.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ReopenEditorMenu.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ReopenEditorMenu.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ReopenEditorMenu.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/SaveableHelper.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/SaveableHelper.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/SaveableHelper.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/SaveableHelper.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/SaveablesList.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/SaveablesList.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/SaveablesList.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/SaveablesList.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/SelectionAdapterFactory.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/SelectionAdapterFactory.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/SelectionAdapterFactory.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/SelectionAdapterFactory.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/SelectionConversionService.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/SelectionConversionService.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/SelectionConversionService.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/SelectionConversionService.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/SharedImages.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/SharedImages.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/SharedImages.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/SharedImages.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ShowInHandler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ShowInHandler.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ShowInHandler.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ShowInHandler.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ShowInMenu.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ShowInMenu.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ShowInMenu.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ShowInMenu.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ShowPartPaneMenuHandler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ShowPartPaneMenuHandler.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ShowPartPaneMenuHandler.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ShowPartPaneMenuHandler.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ShowViewMenu.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ShowViewMenu.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ShowViewMenu.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ShowViewMenu.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ShowViewMenuHandler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ShowViewMenuHandler.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ShowViewMenuHandler.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ShowViewMenuHandler.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/SlavePageService.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/SlavePageService.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/SlavePageService.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/SlavePageService.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/SlavePartService.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/SlavePartService.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/SlavePartService.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/SlavePartService.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/SlaveSelectionService.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/SlaveSelectionService.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/SlaveSelectionService.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/SlaveSelectionService.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/SplitHandler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/SplitHandler.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/SplitHandler.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/SplitHandler.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/SplitValues.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/SplitValues.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/SplitValues.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/SplitValues.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/StandardTrim.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/StandardTrim.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/StandardTrim.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/StandardTrim.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/StartupThreading.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/StartupThreading.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/StartupThreading.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/StartupThreading.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/SwitchToWindowMenu.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/SwitchToWindowMenu.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/SwitchToWindowMenu.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/SwitchToWindowMenu.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ToggleEditorsVisibilityAction.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ToggleEditorsVisibilityAction.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ToggleEditorsVisibilityAction.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ToggleEditorsVisibilityAction.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/TrimUtil.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/TrimUtil.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/TrimUtil.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/TrimUtil.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/UILockListener.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/UILockListener.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/UILockListener.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/UILockListener.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/UISynchronizer.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/UISynchronizer.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/UISynchronizer.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/UISynchronizer.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ViewActionBuilder.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ViewActionBuilder.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ViewActionBuilder.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ViewActionBuilder.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ViewIntroAdapterPart.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ViewIntroAdapterPart.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ViewIntroAdapterPart.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ViewIntroAdapterPart.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ViewIntroAdapterSite.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ViewIntroAdapterSite.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ViewIntroAdapterSite.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ViewIntroAdapterSite.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ViewPluginAction.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ViewPluginAction.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ViewPluginAction.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ViewPluginAction.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ViewReference.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ViewReference.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ViewReference.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ViewReference.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ViewSite.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ViewSite.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ViewSite.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ViewSite.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ViewerActionBuilder.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ViewerActionBuilder.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ViewerActionBuilder.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ViewerActionBuilder.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WWinActionBars.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/WWinActionBars.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WWinActionBars.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/WWinActionBars.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WWinPluginAction.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/WWinPluginAction.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WWinPluginAction.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/WWinPluginAction.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WWinPluginPulldown.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/WWinPluginPulldown.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WWinPluginPulldown.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/WWinPluginPulldown.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WindowsDefenderConfigurator.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/WindowsDefenderConfigurator.java
similarity index 98%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WindowsDefenderConfigurator.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/WindowsDefenderConfigurator.java
index ee51d6aadfd..bc105459999 100644
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WindowsDefenderConfigurator.java
+++ b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/WindowsDefenderConfigurator.java
@@ -323,7 +323,8 @@ private static boolean isWindowsDefenderActive(IProgressMonitor monitor) throws
return switch (onlyLine.toLowerCase(Locale.ENGLISH).strip()) {
// Known values as listed in
// https://learn.microsoft.com/en-us/microsoft-365/security/defender-endpoint/microsoft-defender-antivirus-windows#use-powershell-to-check-the-status-of-microsoft-defender-antivirus
- case "sxs passive mode", "passive mode", "" -> false; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ // "not running" status appears to be undocumented (https://github.com/eclipse-platform/eclipse.platform.ui/issues/2447)
+ case "sxs passive mode", "passive mode", "not running", "" -> false; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
case "normal", "edr block mode" -> true; //$NON-NLS-1$//$NON-NLS-2$
default -> throw new IOException("Process terminated with unexpected result:\n" + String.join("\n", lines)); //$NON-NLS-1$//$NON-NLS-2$
};
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/Workbench.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/Workbench.java
similarity index 98%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/Workbench.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/Workbench.java
index 8e9a02ca0de..82241789428 100644
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/Workbench.java
+++ b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/Workbench.java
@@ -37,6 +37,7 @@
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
+import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
@@ -74,6 +75,7 @@
import org.eclipse.core.runtime.ListenerList;
import org.eclipse.core.runtime.MultiStatus;
import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.Platform.OS;
import org.eclipse.core.runtime.SafeRunner;
import org.eclipse.core.runtime.Status;
import org.eclipse.core.runtime.SubMonitor;
@@ -140,10 +142,12 @@
import org.eclipse.jface.window.IShellProvider;
import org.eclipse.jface.window.Window;
import org.eclipse.osgi.internal.location.LocationHelper;
+import org.eclipse.osgi.service.datalocation.Location;
import org.eclipse.osgi.service.runnable.StartupMonitor;
import org.eclipse.osgi.util.NLS;
import org.eclipse.swt.SWT;
import org.eclipse.swt.SWTException;
+import org.eclipse.swt.browser.Browser;
import org.eclipse.swt.custom.BusyIndicator;
import org.eclipse.swt.graphics.DeviceData;
import org.eclipse.swt.graphics.FontData;
@@ -292,6 +296,10 @@ public final class Workbench extends EventManager implements IWorkbench, org.ecl
public static final String PROP_EXIT_CODE = "eclipse.exitcode"; //$NON-NLS-1$
private static final String CMD_DATA = "-data"; //$NON-NLS-1$
+ private static final String EDGE_USER_DATA_FOLDER = "org.eclipse.swt.internal.win32.Edge.userDataFolder"; //$NON-NLS-1$
+
+ private static final String SWT_RESCALE_AT_RUNTIME_PROPERTY = "swt.autoScale.updateOnRuntime"; //$NON-NLS-1$
+
private static final class StartupProgressBundleListener implements ServiceListener {
private final SubMonitor subMonitor;
@@ -451,6 +459,10 @@ public void serviceChanged(ServiceEvent event) {
private Workbench(Display display, final WorkbenchAdvisor advisor, MApplication app, IEclipseContext appContext) {
this.advisor = Objects.requireNonNull(advisor);
this.display = Objects.requireNonNull(display);
+ if (OS.isWindows()) {
+ setEdgeDataDirectory(this.display);
+ }
+
application = app;
e4Context = appContext;
@@ -510,6 +522,20 @@ public void eventLoopException(Throwable exception) {
new WorkbenchLocationService(IServiceScopes.WORKBENCH_SCOPE, this, null, null, null, null, 0));
}
+ private static void setEdgeDataDirectory(Display display) {
+ Location workspaceLocation = Platform.getInstanceLocation();
+ if (workspaceLocation == null) {
+ return;
+ }
+ try {
+ URI swtMetadataLocationURI = workspaceLocation
+ .getDataArea(FrameworkUtil.getBundle(Browser.class).getSymbolicName()).toURI();
+ display.setData(EDGE_USER_DATA_FOLDER, Paths.get(swtMetadataLocationURI).toString());
+ } catch (URISyntaxException | IOException e) {
+ WorkbenchPlugin.log("Invalid workspace location to be set for Edge browser.", e); //$NON-NLS-1$
+ }
+ }
+
/**
* Returns the one and only instance of the workbench, if there is one.
*
@@ -562,7 +588,7 @@ public static int createAndRunWorkbench(final Display display, final WorkbenchAd
int orientation = store.getInt(IPreferenceConstants.LAYOUT_DIRECTION);
Window.setDefaultOrientation(orientation);
}
-
+ setRescaleAtRuntimePropertyFromPreference();
if (obj instanceof E4Application) {
E4Application e4app = (E4Application) obj;
E4Workbench e4Workbench = e4app.createE4Workbench(getApplicationContext(), display);
@@ -656,6 +682,18 @@ public void update() {
return returnCode[0];
}
+ private static void setRescaleAtRuntimePropertyFromPreference() {
+ if (System.getProperty(SWT_RESCALE_AT_RUNTIME_PROPERTY) != null) {
+ WorkbenchPlugin.log(StatusUtil.newStatus(IStatus.WARNING, SWT_RESCALE_AT_RUNTIME_PROPERTY
+ + " is configured (e.g., via the INI), but the according preference should be preferred instead.", //$NON-NLS-1$
+ new RuntimeException()));
+ } else {
+ boolean rescaleAtRuntime = PrefUtil.getAPIPreferenceStore()
+ .getBoolean(IWorkbenchPreferenceConstants.RESCALING_AT_RUNTIME);
+ System.setProperty(SWT_RESCALE_AT_RUNTIME_PROPERTY, Boolean.toString(rescaleAtRuntime));
+ }
+ }
+
private static void setSearchContribution(MApplication app, boolean enabled) {
for (MTrimContribution contribution : app.getTrimContributions()) {
if ("org.eclipse.ui.ide.application.trimcontribution.QuickAccess".contains(contribution //$NON-NLS-1$
@@ -714,9 +752,8 @@ static Object getApplication(@SuppressWarnings("unused") String[] args) {
* @return the display
*/
public static Display createDisplay() {
- // setup the application name used by SWT to lookup resources on some
- // platforms
- String applicationName = WorkbenchPlugin.getDefault().getAppName();
+ // setup the application name used by SWT to lookup resources on some platforms
+ String applicationName = System.getProperty("eclipse.appName", WorkbenchPlugin.getDefault().getAppName()); //$NON-NLS-1$
if (applicationName != null) {
Display.setAppName(applicationName);
}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchConfigurer.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/WorkbenchConfigurer.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchConfigurer.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/WorkbenchConfigurer.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchEditorsHandler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/WorkbenchEditorsHandler.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchEditorsHandler.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/WorkbenchEditorsHandler.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchErrorHandlerProxy.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/WorkbenchErrorHandlerProxy.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchErrorHandlerProxy.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/WorkbenchErrorHandlerProxy.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchHandlerServiceHandler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/WorkbenchHandlerServiceHandler.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchHandlerServiceHandler.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/WorkbenchHandlerServiceHandler.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchImages.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/WorkbenchImages.java
similarity index 99%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchImages.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/WorkbenchImages.java
index 164a3cadbe5..8188390a184 100644
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchImages.java
+++ b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/WorkbenchImages.java
@@ -236,7 +236,6 @@ private static final void declareImages() {
declareImage(ISharedImages.IMG_DEF_VIEW, PATH_EVIEW + "defaultview_misc.png", true); //$NON-NLS-1$
declareImage(IWorkbenchGraphicConstants.IMG_LCL_CLOSE_VIEW, PATH_ELOCALTOOL + "close_view.png", true); //$NON-NLS-1$
- declareImage(IWorkbenchGraphicConstants.IMG_LCL_PIN_VIEW, PATH_ELOCALTOOL + "pin_view.png", true); //$NON-NLS-1$
declareImage(IWorkbenchGraphicConstants.IMG_LCL_MIN_VIEW, PATH_ELOCALTOOL + "min_view.png", true); //$NON-NLS-1$
declareImage(IWorkbenchGraphicConstants.IMG_LCL_VIEW_MENU, PATH_ELOCALTOOL + "view_menu.png", true); //$NON-NLS-1$
declareImage(IWorkbenchGraphicConstants.IMG_LCL_BUTTON_MENU, PATH_ELOCALTOOL + "button_menu.png", true); //$NON-NLS-1$
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchIntroManager.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/WorkbenchIntroManager.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchIntroManager.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/WorkbenchIntroManager.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchLayoutSettingsTransfer.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/WorkbenchLayoutSettingsTransfer.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchLayoutSettingsTransfer.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/WorkbenchLayoutSettingsTransfer.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchMessages.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/WorkbenchMessages.java
similarity index 98%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchMessages.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/WorkbenchMessages.java
index dbddbbb6b6b..ec1e7cc8554 100644
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchMessages.java
+++ b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/WorkbenchMessages.java
@@ -34,6 +34,16 @@ public class WorkbenchMessages extends NLS {
public static String ThemingEnabled;
+ public static String HiDpiSettingsGroupTitle;
+
+ public static String RescaleAtRuntimeEnabled;
+
+ public static String RescaleAtRuntimeDisclaimer;
+
+ public static String RescaleAtRuntimeSettingChangeWarningTitle;
+
+ public static String RescaleAtRuntimeSettingChangeWarningText;
+
public static String ThemeChangeWarningText;
public static String ThemeChangeWarningTitle;
@@ -452,6 +462,9 @@ public class WorkbenchMessages extends NLS {
public static String WorkbenchPreference_stickyCycleButton;
public static String WorkbenchPreference_RunInBackgroundButton;
public static String WorkbenchPreference_RunInBackgroundToolTip;
+ public static String WorkbenchPreference_AlignMultiPageEditorTabs;
+ public static String WorkbenchPreference_AlignMultiPageEditorTabs_Top;
+ public static String WorkbenchPreference_AlignMultiPageEditorTabs_Bottom;
// --- Appearance ---
public static String ViewsPreferencePage_Theme;
@@ -744,7 +757,7 @@ public class WorkbenchMessages extends NLS {
// ==============================================================================
public static String PinEditorAction_toolTip;
public static String WorkbenchPreference_reuseEditors;
- public static String WorkbenchPreference_reuseEditorsThreshold;
+ public static String WorkbenchPreference_reuseEditors_closing;
public static String WorkbenchPreference_reuseEditorsThresholdError;
public static String WorkbenchPreference_recentFiles;
public static String WorkbenchPreference_recentFilesError;
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchPage.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/WorkbenchPage.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchPage.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/WorkbenchPage.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchPartReference.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/WorkbenchPartReference.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchPartReference.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/WorkbenchPartReference.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchPlugin.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/WorkbenchPlugin.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchPlugin.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/WorkbenchPlugin.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchPreferenceInitializer.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/WorkbenchPreferenceInitializer.java
similarity index 98%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchPreferenceInitializer.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/WorkbenchPreferenceInitializer.java
index 66fff649148..349dc1e744b 100644
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchPreferenceInitializer.java
+++ b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/WorkbenchPreferenceInitializer.java
@@ -102,6 +102,7 @@ public void initializeDefaultPreferences() {
// Heap status preferences is stored in different node
IEclipsePreferences heapNode = context.getNode("org.eclipse.ui"); //$NON-NLS-1$
heapNode.putBoolean(IWorkbenchPreferenceConstants.SHOW_MEMORY_MONITOR, false);
+ heapNode.putInt(IWorkbenchPreferenceConstants.ALIGN_MULTI_PAGE_EDITOR_TABS, SWT.BOTTOM);
node.putInt(IHeapStatusConstants.PREF_UPDATE_INTERVAL, 500);
node.putBoolean(IHeapStatusConstants.PREF_SHOW_MAX, false);
node.putBoolean(IPreferenceConstants.OVERRIDE_PRESENTATION, false);
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchSupportFactory.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/WorkbenchSupportFactory.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchSupportFactory.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/WorkbenchSupportFactory.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchWindow.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/WorkbenchWindow.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchWindow.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/WorkbenchWindow.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchWindowConfigurer.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/WorkbenchWindowConfigurer.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchWindowConfigurer.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/WorkbenchWindowConfigurer.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbookEditorsHandler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/WorkbookEditorsHandler.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbookEditorsHandler.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/WorkbookEditorsHandler.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkingSet.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/WorkingSet.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkingSet.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/WorkingSet.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkingSetComparator.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/WorkingSetComparator.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkingSetComparator.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/WorkingSetComparator.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkingSetFactory.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/WorkingSetFactory.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkingSetFactory.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/WorkingSetFactory.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkingSetManager.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/WorkingSetManager.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkingSetManager.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/WorkingSetManager.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkingSetMenuContributionItem.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/WorkingSetMenuContributionItem.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkingSetMenuContributionItem.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/WorkingSetMenuContributionItem.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/about/AboutBundleData.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/about/AboutBundleData.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/about/AboutBundleData.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/about/AboutBundleData.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/about/AboutBundleGroupData.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/about/AboutBundleGroupData.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/about/AboutBundleGroupData.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/about/AboutBundleGroupData.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/about/AboutData.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/about/AboutData.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/about/AboutData.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/about/AboutData.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/about/AboutFeaturesButtonManager.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/about/AboutFeaturesButtonManager.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/about/AboutFeaturesButtonManager.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/about/AboutFeaturesButtonManager.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/about/AboutFeaturesPage.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/about/AboutFeaturesPage.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/about/AboutFeaturesPage.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/about/AboutFeaturesPage.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/about/AboutHandler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/about/AboutHandler.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/about/AboutHandler.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/about/AboutHandler.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/about/AboutItem.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/about/AboutItem.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/about/AboutItem.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/about/AboutItem.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/about/AboutPluginsPage.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/about/AboutPluginsPage.java
similarity index 98%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/about/AboutPluginsPage.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/about/AboutPluginsPage.java
index f39c445e9b1..d733ee2473a 100644
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/about/AboutPluginsPage.java
+++ b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/about/AboutPluginsPage.java
@@ -39,6 +39,7 @@
import org.eclipse.core.runtime.Status;
import org.eclipse.core.runtime.SubMonitor;
import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.core.text.StringMatcher;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.layout.GridDataFactory;
import org.eclipse.jface.util.ConfigureColumns;
@@ -73,7 +74,6 @@
import org.eclipse.ui.internal.WorkbenchMessages;
import org.eclipse.ui.internal.WorkbenchPlugin;
import org.eclipse.ui.internal.misc.StatusUtil;
-import org.eclipse.ui.internal.misc.TextMatcher;
import org.eclipse.ui.internal.util.BundleUtility;
import org.eclipse.ui.progress.WorkbenchJob;
import org.eclipse.ui.statushandlers.StatusManager;
@@ -689,14 +689,14 @@ public void setAscending(boolean ascending) {
}
class BundlePatternFilter extends ViewerFilter {
- private TextMatcher matcher;
+ private StringMatcher matcher;
public void setPattern(String searchPattern) {
if (searchPattern == null || searchPattern.isEmpty()) {
this.matcher = null;
} else {
String pattern = "*" + searchPattern + "*"; //$NON-NLS-1$//$NON-NLS-2$
- this.matcher = new TextMatcher(pattern, true, false);
+ this.matcher = new StringMatcher(pattern, true, false);
}
}
@@ -708,12 +708,12 @@ public boolean select(Viewer viewer, Object parentElement, Object element) {
if (element instanceof AboutBundleData) {
AboutBundleData data = (AboutBundleData) element;
- return matcher.match(data.getName()) || matcher.match(data.getProviderName())
- || matcher.match(data.getId());
+ return matcher.matchWords(data.getName()) || matcher.matchWords(data.getProviderName())
+ || matcher.matchWords(data.getId());
}
else if (element instanceof AboutBundleGroupData data) {
- return matcher.match(data.getName()) || matcher.match(data.getProviderName())
- || matcher.match(data.getId());
+ return matcher.matchWords(data.getName()) || matcher.matchWords(data.getProviderName())
+ || matcher.matchWords(data.getId());
}
return true;
}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/about/AboutSystemPage.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/about/AboutSystemPage.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/about/AboutSystemPage.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/about/AboutSystemPage.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/about/AboutTextManager.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/about/AboutTextManager.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/about/AboutTextManager.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/about/AboutTextManager.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/about/AboutUtils.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/about/AboutUtils.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/about/AboutUtils.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/about/AboutUtils.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/about/BundleSigningInfo.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/about/BundleSigningInfo.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/about/BundleSigningInfo.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/about/BundleSigningInfo.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/about/ConfigurationLogDefaultSection.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/about/ConfigurationLogDefaultSection.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/about/ConfigurationLogDefaultSection.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/about/ConfigurationLogDefaultSection.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/about/CopyTableSelectionHandler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/about/CopyTableSelectionHandler.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/about/CopyTableSelectionHandler.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/about/CopyTableSelectionHandler.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/about/InstallationDialog.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/about/InstallationDialog.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/about/InstallationDialog.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/about/InstallationDialog.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/about/InstallationHandler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/about/InstallationHandler.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/about/InstallationHandler.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/about/InstallationHandler.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/about/ProductInfoDialog.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/about/ProductInfoDialog.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/about/ProductInfoDialog.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/about/ProductInfoDialog.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/about/ProductInfoPage.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/about/ProductInfoPage.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/about/ProductInfoPage.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/about/ProductInfoPage.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/actions/AbstractWorkingSetPulldownDelegate.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/actions/AbstractWorkingSetPulldownDelegate.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/actions/AbstractWorkingSetPulldownDelegate.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/actions/AbstractWorkingSetPulldownDelegate.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/actions/ClearWorkingSetAction.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/actions/ClearWorkingSetAction.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/actions/ClearWorkingSetAction.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/actions/ClearWorkingSetAction.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/actions/CommandAction.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/actions/CommandAction.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/actions/CommandAction.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/actions/CommandAction.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/actions/DynamicHelpAction.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/actions/DynamicHelpAction.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/actions/DynamicHelpAction.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/actions/DynamicHelpAction.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/actions/EditWorkingSetAction.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/actions/EditWorkingSetAction.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/actions/EditWorkingSetAction.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/actions/EditWorkingSetAction.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/actions/HelpContentsAction.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/actions/HelpContentsAction.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/actions/HelpContentsAction.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/actions/HelpContentsAction.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/actions/HelpSearchAction.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/actions/HelpSearchAction.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/actions/HelpSearchAction.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/actions/HelpSearchAction.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/actions/HelpSearchContributionItem.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/actions/HelpSearchContributionItem.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/actions/HelpSearchContributionItem.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/actions/HelpSearchContributionItem.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/actions/ModifyWorkingSetDelegate.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/actions/ModifyWorkingSetDelegate.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/actions/ModifyWorkingSetDelegate.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/actions/ModifyWorkingSetDelegate.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/actions/NewWizardShortcutAction.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/actions/NewWizardShortcutAction.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/actions/NewWizardShortcutAction.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/actions/NewWizardShortcutAction.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/actions/SelectWorkingSetAction.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/actions/SelectWorkingSetAction.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/actions/SelectWorkingSetAction.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/actions/SelectWorkingSetAction.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/actions/SelectWorkingSetsAction.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/actions/SelectWorkingSetsAction.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/actions/SelectWorkingSetsAction.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/actions/SelectWorkingSetsAction.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/AbstractActivityManager.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/activities/AbstractActivityManager.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/AbstractActivityManager.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/activities/AbstractActivityManager.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/AbstractActivityRegistry.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/activities/AbstractActivityRegistry.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/AbstractActivityRegistry.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/activities/AbstractActivityRegistry.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/Activity.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/activities/Activity.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/Activity.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/activities/Activity.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ActivityDefinition.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/activities/ActivityDefinition.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ActivityDefinition.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/activities/ActivityDefinition.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ActivityPatternBinding.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/activities/ActivityPatternBinding.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ActivityPatternBinding.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/activities/ActivityPatternBinding.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ActivityPatternBindingDefinition.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/activities/ActivityPatternBindingDefinition.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ActivityPatternBindingDefinition.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/activities/ActivityPatternBindingDefinition.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ActivityPropertyTester.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/activities/ActivityPropertyTester.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ActivityPropertyTester.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/activities/ActivityPropertyTester.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ActivityRegistryEvent.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/activities/ActivityRegistryEvent.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ActivityRegistryEvent.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/activities/ActivityRegistryEvent.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ActivityRequirementBinding.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/activities/ActivityRequirementBinding.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ActivityRequirementBinding.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/activities/ActivityRequirementBinding.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ActivityRequirementBindingDefinition.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/activities/ActivityRequirementBindingDefinition.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ActivityRequirementBindingDefinition.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/activities/ActivityRequirementBindingDefinition.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/Category.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/activities/Category.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/Category.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/activities/Category.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/CategoryActivityBinding.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/activities/CategoryActivityBinding.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/CategoryActivityBinding.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/activities/CategoryActivityBinding.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/CategoryActivityBindingDefinition.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/activities/CategoryActivityBindingDefinition.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/CategoryActivityBindingDefinition.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/activities/CategoryActivityBindingDefinition.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/CategoryDefinition.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/activities/CategoryDefinition.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/CategoryDefinition.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/activities/CategoryDefinition.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ExtensionActivityRegistry.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/activities/ExtensionActivityRegistry.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ExtensionActivityRegistry.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/activities/ExtensionActivityRegistry.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/IActivityRegistry.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/activities/IActivityRegistry.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/IActivityRegistry.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/activities/IActivityRegistry.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/IActivityRegistryListener.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/activities/IActivityRegistryListener.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/IActivityRegistryListener.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/activities/IActivityRegistryListener.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/Identifier.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/activities/Identifier.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/Identifier.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/activities/Identifier.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/InternalActivityHelper.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/activities/InternalActivityHelper.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/InternalActivityHelper.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/activities/InternalActivityHelper.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/MutableActivityManager.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/activities/MutableActivityManager.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/MutableActivityManager.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/activities/MutableActivityManager.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/PatternUtil.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/activities/PatternUtil.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/PatternUtil.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/activities/PatternUtil.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/Persistence.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/activities/Persistence.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/Persistence.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/activities/Persistence.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ProxyActivityManager.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/activities/ProxyActivityManager.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ProxyActivityManager.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/activities/ProxyActivityManager.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/AbstractTriggerPoint.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/activities/ws/AbstractTriggerPoint.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/AbstractTriggerPoint.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/activities/ws/AbstractTriggerPoint.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/ActivityCategoryContentProvider.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/activities/ws/ActivityCategoryContentProvider.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/ActivityCategoryContentProvider.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/activities/ws/ActivityCategoryContentProvider.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/ActivityCategoryLabelProvider.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/activities/ws/ActivityCategoryLabelProvider.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/ActivityCategoryLabelProvider.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/activities/ws/ActivityCategoryLabelProvider.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/ActivityContentProvider.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/activities/ws/ActivityContentProvider.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/ActivityContentProvider.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/activities/ws/ActivityContentProvider.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/ActivityEnabler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/activities/ws/ActivityEnabler.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/ActivityEnabler.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/activities/ws/ActivityEnabler.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/ActivityLabelProvider.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/activities/ws/ActivityLabelProvider.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/ActivityLabelProvider.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/activities/ws/ActivityLabelProvider.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/ActivityMessages.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/activities/ws/ActivityMessages.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/ActivityMessages.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/activities/ws/ActivityMessages.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/ActivityViewerFilter.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/activities/ws/ActivityViewerFilter.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/ActivityViewerFilter.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/activities/ws/ActivityViewerFilter.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/CategorizedActivity.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/activities/ws/CategorizedActivity.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/CategorizedActivity.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/activities/ws/CategorizedActivity.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/EnablementDialog.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/activities/ws/EnablementDialog.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/EnablementDialog.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/activities/ws/EnablementDialog.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/EnablementDialog.properties b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/activities/ws/EnablementDialog.properties
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/EnablementDialog.properties
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/activities/ws/EnablementDialog.properties
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/ImageBindingRegistry.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/activities/ws/ImageBindingRegistry.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/ImageBindingRegistry.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/activities/ws/ImageBindingRegistry.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/RegistryTriggerPoint.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/activities/ws/RegistryTriggerPoint.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/RegistryTriggerPoint.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/activities/ws/RegistryTriggerPoint.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/TriggerPointAdvisorDescriptor.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/activities/ws/TriggerPointAdvisorDescriptor.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/TriggerPointAdvisorDescriptor.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/activities/ws/TriggerPointAdvisorDescriptor.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/TriggerPointAdvisorRegistry.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/activities/ws/TriggerPointAdvisorRegistry.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/TriggerPointAdvisorRegistry.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/activities/ws/TriggerPointAdvisorRegistry.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/TriggerPointManager.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/activities/ws/TriggerPointManager.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/TriggerPointManager.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/activities/ws/TriggerPointManager.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/WorkbenchActivitySupport.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/activities/ws/WorkbenchActivitySupport.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/WorkbenchActivitySupport.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/activities/ws/WorkbenchActivitySupport.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/WorkbenchTriggerPoints.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/activities/ws/WorkbenchTriggerPoints.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/WorkbenchTriggerPoints.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/activities/ws/WorkbenchTriggerPoints.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/messages.properties b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/activities/ws/messages.properties
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/messages.properties
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/activities/ws/messages.properties
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/application/CompatibilityActionBarAdvisor.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/application/CompatibilityActionBarAdvisor.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/application/CompatibilityActionBarAdvisor.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/application/CompatibilityActionBarAdvisor.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/application/CompatibilityWorkbenchWindowAdvisor.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/application/CompatibilityWorkbenchWindowAdvisor.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/application/CompatibilityWorkbenchWindowAdvisor.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/application/CompatibilityWorkbenchWindowAdvisor.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/browser/DefaultWebBrowser.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/browser/DefaultWebBrowser.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/browser/DefaultWebBrowser.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/browser/DefaultWebBrowser.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/browser/DefaultWorkbenchBrowserSupport.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/browser/DefaultWorkbenchBrowserSupport.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/browser/DefaultWorkbenchBrowserSupport.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/browser/DefaultWorkbenchBrowserSupport.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/browser/WorkbenchBrowserSupport.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/browser/WorkbenchBrowserSupport.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/browser/WorkbenchBrowserSupport.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/browser/WorkbenchBrowserSupport.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/CommandImageManager.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/commands/CommandImageManager.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/CommandImageManager.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/commands/CommandImageManager.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/CommandImageManagerEvent.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/commands/CommandImageManagerEvent.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/CommandImageManagerEvent.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/commands/CommandImageManagerEvent.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/CommandImagePersistence.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/commands/CommandImagePersistence.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/CommandImagePersistence.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/commands/CommandImagePersistence.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/CommandImageService.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/commands/CommandImageService.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/CommandImageService.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/commands/CommandImageService.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/CommandPersistence.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/commands/CommandPersistence.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/CommandPersistence.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/commands/CommandPersistence.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/CommandService.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/commands/CommandService.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/CommandService.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/commands/CommandService.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/CommandServiceFactory.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/commands/CommandServiceFactory.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/CommandServiceFactory.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/commands/CommandServiceFactory.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/CommandStateProxy.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/commands/CommandStateProxy.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/CommandStateProxy.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/commands/CommandStateProxy.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/ElementReference.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/commands/ElementReference.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/ElementReference.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/commands/ElementReference.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/ICommandImageManagerListener.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/commands/ICommandImageManagerListener.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/ICommandImageManagerListener.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/commands/ICommandImageManagerListener.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/ILegacyAttributeNames.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/commands/ILegacyAttributeNames.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/ILegacyAttributeNames.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/commands/ILegacyAttributeNames.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/ParameterValueConverterProxy.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/commands/ParameterValueConverterProxy.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/ParameterValueConverterProxy.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/commands/ParameterValueConverterProxy.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/SlaveCommandService.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/commands/SlaveCommandService.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/SlaveCommandService.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/commands/SlaveCommandService.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/contexts/ActiveContextSourceProvider.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/contexts/ActiveContextSourceProvider.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/contexts/ActiveContextSourceProvider.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/contexts/ActiveContextSourceProvider.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/contexts/ContextActivation.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/contexts/ContextActivation.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/contexts/ContextActivation.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/contexts/ContextActivation.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/contexts/ContextAuthority.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/contexts/ContextAuthority.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/contexts/ContextAuthority.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/contexts/ContextAuthority.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/contexts/ContextLegacyWrapper.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/contexts/ContextLegacyWrapper.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/contexts/ContextLegacyWrapper.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/contexts/ContextLegacyWrapper.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/contexts/ContextManagerFactory.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/contexts/ContextManagerFactory.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/contexts/ContextManagerFactory.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/contexts/ContextManagerFactory.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/contexts/ContextManagerLegacyWrapper.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/contexts/ContextManagerLegacyWrapper.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/contexts/ContextManagerLegacyWrapper.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/contexts/ContextManagerLegacyWrapper.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/contexts/ContextPersistence.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/contexts/ContextPersistence.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/contexts/ContextPersistence.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/contexts/ContextPersistence.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/contexts/ContextService.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/contexts/ContextService.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/contexts/ContextService.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/contexts/ContextService.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/contexts/ContextServiceFactory.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/contexts/ContextServiceFactory.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/contexts/ContextServiceFactory.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/contexts/ContextServiceFactory.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/contexts/LegacyContextListenerWrapper.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/contexts/LegacyContextListenerWrapper.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/contexts/LegacyContextListenerWrapper.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/contexts/LegacyContextListenerWrapper.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/contexts/NestableContextService.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/contexts/NestableContextService.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/contexts/NestableContextService.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/contexts/NestableContextService.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/contexts/SlaveContextService.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/contexts/SlaveContextService.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/contexts/SlaveContextService.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/contexts/SlaveContextService.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/contexts/WorkbenchContextSupport.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/contexts/WorkbenchContextSupport.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/contexts/WorkbenchContextSupport.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/contexts/WorkbenchContextSupport.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/databinding/ActivePageProperty.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/databinding/ActivePageProperty.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/databinding/ActivePageProperty.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/databinding/ActivePageProperty.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/databinding/ActivePartProperty.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/databinding/ActivePartProperty.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/databinding/ActivePartProperty.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/databinding/ActivePartProperty.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/databinding/ActiveWindowProperty.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/databinding/ActiveWindowProperty.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/databinding/ActiveWindowProperty.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/databinding/ActiveWindowProperty.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/databinding/AdaptedValueProperty.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/databinding/AdaptedValueProperty.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/databinding/AdaptedValueProperty.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/databinding/AdaptedValueProperty.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/databinding/EditorInputProperty.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/databinding/EditorInputProperty.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/databinding/EditorInputProperty.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/databinding/EditorInputProperty.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/databinding/ListeningValue.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/databinding/ListeningValue.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/databinding/ListeningValue.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/databinding/ListeningValue.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/databinding/MultiSelectionProperty.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/databinding/MultiSelectionProperty.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/databinding/MultiSelectionProperty.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/databinding/MultiSelectionProperty.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/databinding/SelectionServiceListener.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/databinding/SelectionServiceListener.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/databinding/SelectionServiceListener.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/databinding/SelectionServiceListener.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/databinding/SingleSelectionProperty.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/databinding/SingleSelectionProperty.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/databinding/SingleSelectionProperty.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/databinding/SingleSelectionProperty.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/DeclarativeDecorator.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/decorators/DeclarativeDecorator.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/DeclarativeDecorator.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/decorators/DeclarativeDecorator.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/DecorationBuilder.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/decorators/DecorationBuilder.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/DecorationBuilder.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/decorators/DecorationBuilder.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/DecorationReference.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/decorators/DecorationReference.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/DecorationReference.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/decorators/DecorationReference.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/DecorationResult.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/decorators/DecorationResult.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/DecorationResult.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/decorators/DecorationResult.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/DecorationScheduler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/decorators/DecorationScheduler.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/DecorationScheduler.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/decorators/DecorationScheduler.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/DecoratorDefinition.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/decorators/DecoratorDefinition.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/DecoratorDefinition.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/decorators/DecoratorDefinition.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/DecoratorManager.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/decorators/DecoratorManager.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/DecoratorManager.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/decorators/DecoratorManager.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/DecoratorRegistryReader.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/decorators/DecoratorRegistryReader.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/DecoratorRegistryReader.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/decorators/DecoratorRegistryReader.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/FullDecoratorDefinition.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/decorators/FullDecoratorDefinition.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/FullDecoratorDefinition.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/decorators/FullDecoratorDefinition.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/FullDecoratorRunnable.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/decorators/FullDecoratorRunnable.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/FullDecoratorRunnable.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/decorators/FullDecoratorRunnable.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/FullImageDecoratorRunnable.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/decorators/FullImageDecoratorRunnable.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/FullImageDecoratorRunnable.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/decorators/FullImageDecoratorRunnable.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/FullTextDecoratorRunnable.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/decorators/FullTextDecoratorRunnable.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/FullTextDecoratorRunnable.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/decorators/FullTextDecoratorRunnable.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/LightweightActionDescriptor.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/decorators/LightweightActionDescriptor.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/LightweightActionDescriptor.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/decorators/LightweightActionDescriptor.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/LightweightDecoratorDefinition.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/decorators/LightweightDecoratorDefinition.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/LightweightDecoratorDefinition.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/decorators/LightweightDecoratorDefinition.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/LightweightDecoratorManager.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/decorators/LightweightDecoratorManager.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/LightweightDecoratorManager.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/decorators/LightweightDecoratorManager.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/AboutDialog.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/AboutDialog.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/AboutDialog.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/AboutDialog.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/AboutFeaturesDialog.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/AboutFeaturesDialog.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/AboutFeaturesDialog.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/AboutFeaturesDialog.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/AboutPluginsDialog.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/AboutPluginsDialog.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/AboutPluginsDialog.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/AboutPluginsDialog.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/AbstractWorkingSetDialog.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/AbstractWorkingSetDialog.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/AbstractWorkingSetDialog.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/AbstractWorkingSetDialog.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/AdaptableForwarder.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/AdaptableForwarder.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/AdaptableForwarder.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/AdaptableForwarder.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/CapabilityFilter.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/CapabilityFilter.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/CapabilityFilter.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/CapabilityFilter.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ContentTypeFilenameAssociationDialog.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/ContentTypeFilenameAssociationDialog.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ContentTypeFilenameAssociationDialog.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/ContentTypeFilenameAssociationDialog.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ContentTypesPreferencePage.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/ContentTypesPreferencePage.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ContentTypesPreferencePage.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/ContentTypesPreferencePage.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/DataTransferWizardCollectionComparator.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/DataTransferWizardCollectionComparator.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/DataTransferWizardCollectionComparator.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/DataTransferWizardCollectionComparator.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/DecoratorsPreferencePage.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/DecoratorsPreferencePage.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/DecoratorsPreferencePage.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/DecoratorsPreferencePage.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/DialogUtil.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/DialogUtil.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/DialogUtil.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/DialogUtil.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/EditorsPreferencePage.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/EditorsPreferencePage.java
similarity index 83%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/EditorsPreferencePage.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/EditorsPreferencePage.java
index 401b1fc62e0..11807871b86 100644
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/EditorsPreferencePage.java
+++ b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/EditorsPreferencePage.java
@@ -18,12 +18,17 @@
import static org.eclipse.swt.events.SelectionListener.widgetSelectedAdapter;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.layout.GridDataFactory;
+import org.eclipse.jface.layout.GridLayoutFactory;
+import org.eclipse.jface.preference.ComboFieldEditor;
import org.eclipse.jface.preference.FieldEditor;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.preference.IntegerFieldEditor;
import org.eclipse.jface.preference.PreferencePage;
import org.eclipse.jface.preference.StringFieldEditor;
import org.eclipse.jface.util.IPropertyChangeListener;
+import org.eclipse.jface.widgets.LabelFactory;
import org.eclipse.osgi.util.NLS;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
@@ -46,7 +51,6 @@
* The Editors preference page of the workbench.
*/
public class EditorsPreferencePage extends PreferencePage implements IWorkbenchPreferencePage {
- private static final int REUSE_INDENT = 20;
protected Composite editorReuseGroup;
@@ -72,6 +76,8 @@ public class EditorsPreferencePage extends PreferencePage implements IWorkbenchP
private Button allowInplaceEditor;
+ private ComboFieldEditor multiPageEditorTabPositionComboField;
+
@Override
protected Control createContents(Composite parent) {
Composite composite = createComposite(parent);
@@ -130,6 +136,23 @@ protected void createPromptWhenStillOpenPref(Composite composite) {
setButtonLayoutData(promptWhenStillOpenEditor);
}
+ protected void createAlignMultiPageEditorTabs(Composite parent) {
+ Composite comboComposite = new Composite(parent, SWT.NONE);
+ comboComposite.setLayout(GridLayoutFactory.fillDefaults().numColumns(2).create());
+ comboComposite.setLayoutData(GridDataFactory.fillDefaults().create());
+ String name = IWorkbenchPreferenceConstants.ALIGN_MULTI_PAGE_EDITOR_TABS;
+ String label = WorkbenchMessages.WorkbenchPreference_AlignMultiPageEditorTabs;
+ String[][] namesAndValues = {
+ { Action.removeMnemonics(WorkbenchMessages.WorkbenchPreference_AlignMultiPageEditorTabs_Top),
+ String.valueOf(SWT.TOP) },
+ { Action.removeMnemonics(WorkbenchMessages.WorkbenchPreference_AlignMultiPageEditorTabs_Bottom),
+ String.valueOf(SWT.BOTTOM) } };
+ multiPageEditorTabPositionComboField = new ComboFieldEditor(name, label, namesAndValues, comboComposite);
+ multiPageEditorTabPositionComboField.setPreferenceStore(getAPIPreferenceStore());
+ multiPageEditorTabPositionComboField.setPage(this);
+ multiPageEditorTabPositionComboField.load();
+ }
+
protected Composite createComposite(Composite parent) {
Composite composite = new Composite(parent, SWT.NULL);
GridLayout layout = new GridLayout();
@@ -158,11 +181,13 @@ protected void performDefaults() {
reuseEditorsThreshold.getLabelControl(editorReuseThresholdGroup).setEnabled(reuseEditors.getSelection());
reuseEditorsThreshold.getTextControl(editorReuseThresholdGroup).setEnabled(reuseEditors.getSelection());
recentFilesEditor.loadDefault();
+ multiPageEditorTabPositionComboField.loadDefault();
}
@Override
public boolean performOk() {
IPreferenceStore store = getPreferenceStore();
+ multiPageEditorTabPositionComboField.store();
getAPIPreferenceStore().setValue(IWorkbenchPreferenceConstants.DISABLE_OPEN_EDITOR_IN_PLACE,
!allowInplaceEditor.getSelection());
store.setValue(IPreferenceConstants.USE_IPERSISTABLE_EDITORS, useIPersistableEditor.getSelection());
@@ -213,11 +238,7 @@ protected void updateValidState() {
*/
protected void createEditorReuseGroup(Composite composite) {
editorReuseGroup = new Composite(composite, SWT.LEFT);
- GridLayout layout = new GridLayout();
- // Line up with other entries in preference page
- layout.marginWidth = 0;
- layout.marginHeight = 0;
- editorReuseGroup.setLayout(layout);
+ editorReuseGroup.setLayout(GridLayoutFactory.fillDefaults().numColumns(3).spacing(0, 0).create());
editorReuseGroup.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.GRAB_HORIZONTAL));
reuseEditors = new Button(editorReuseGroup, SWT.CHECK);
@@ -232,20 +253,22 @@ protected void createEditorReuseGroup(Composite composite) {
}));
editorReuseIndentGroup = new Composite(editorReuseGroup, SWT.LEFT);
- GridLayout indentLayout = new GridLayout();
- indentLayout.marginLeft = REUSE_INDENT;
- indentLayout.marginWidth = 0;
- editorReuseIndentGroup.setLayout(indentLayout);
- editorReuseIndentGroup.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
+ editorReuseIndentGroup.setLayout(GridLayoutFactory.fillDefaults().create());
+ editorReuseIndentGroup
+ .setLayoutData(GridDataFactory.fillDefaults().grab(false, false).create());
editorReuseThresholdGroup = new Composite(editorReuseIndentGroup, SWT.LEFT);
- layout = new GridLayout();
+ GridLayout layout = new GridLayout();
layout.marginWidth = 0;
editorReuseThresholdGroup.setLayout(layout);
- editorReuseThresholdGroup.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
+ GridData gridData = GridDataFactory.fillDefaults().grab(true, false).create();
+ gridData.widthHint = 35;
+ editorReuseThresholdGroup
+ .setLayoutData(gridData);
- reuseEditorsThreshold = new IntegerFieldEditor(IPreferenceConstants.REUSE_EDITORS,
- WorkbenchMessages.WorkbenchPreference_reuseEditorsThreshold, editorReuseThresholdGroup);
+ reuseEditorsThreshold = new IntegerFieldEditor(IPreferenceConstants.REUSE_EDITORS, "", //$NON-NLS-1$
+ editorReuseThresholdGroup);
+ reuseEditorsThreshold.getLabelControl(editorReuseThresholdGroup).dispose();
reuseEditorsThreshold.setPreferenceStore(WorkbenchPlugin.getDefault().getPreferenceStore());
reuseEditorsThreshold.setPage(this);
@@ -258,6 +281,8 @@ protected void createEditorReuseGroup(Composite composite) {
reuseEditorsThreshold.getTextControl(editorReuseThresholdGroup).setEnabled(reuseEditors.getSelection());
reuseEditorsThreshold.setPropertyChangeListener(validityChangeListener);
+ LabelFactory.newLabel(SWT.NONE).text(WorkbenchMessages.WorkbenchPreference_reuseEditors_closing)
+ .create(editorReuseGroup);
}
/**
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/EmptyPreferencePage.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/EmptyPreferencePage.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/EmptyPreferencePage.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/EmptyPreferencePage.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/EmptyPropertyPage.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/EmptyPropertyPage.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/EmptyPropertyPage.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/EmptyPropertyPage.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ErrorPreferencePage.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/ErrorPreferencePage.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ErrorPreferencePage.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/ErrorPreferencePage.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/EventLoopProgressMonitor.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/EventLoopProgressMonitor.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/EventLoopProgressMonitor.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/EventLoopProgressMonitor.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ExportPage.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/ExportPage.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ExportPage.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/ExportPage.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ExportWizard.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/ExportWizard.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ExportWizard.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/ExportWizard.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/FileEditorsPreferencePage.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/FileEditorsPreferencePage.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/FileEditorsPreferencePage.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/FileEditorsPreferencePage.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/FileExtensionDialog.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/FileExtensionDialog.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/FileExtensionDialog.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/FileExtensionDialog.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/FilteredPreferenceDialog.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/FilteredPreferenceDialog.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/FilteredPreferenceDialog.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/FilteredPreferenceDialog.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/GlobalizationPreferencePage.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/GlobalizationPreferencePage.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/GlobalizationPreferencePage.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/GlobalizationPreferencePage.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/IPropertyPageContributor.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/IPropertyPageContributor.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/IPropertyPageContributor.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/IPropertyPageContributor.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ImportExportPage.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/ImportExportPage.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ImportExportPage.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/ImportExportPage.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ImportExportWizard.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/ImportExportWizard.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ImportExportWizard.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/ImportExportWizard.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ImportPage.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/ImportPage.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ImportPage.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/ImportPage.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ImportWizard.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/ImportWizard.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ImportWizard.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/ImportWizard.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/NewContentTypeDialog.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/NewContentTypeDialog.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/NewContentTypeDialog.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/NewContentTypeDialog.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/NewWizard.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/NewWizard.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/NewWizard.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/NewWizard.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/NewWizardCollectionComparator.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/NewWizardCollectionComparator.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/NewWizardCollectionComparator.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/NewWizardCollectionComparator.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/NewWizardNewPage.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/NewWizardNewPage.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/NewWizardNewPage.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/NewWizardNewPage.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/NewWizardSelectionPage.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/NewWizardSelectionPage.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/NewWizardSelectionPage.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/NewWizardSelectionPage.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/PerspContentProvider.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/PerspContentProvider.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/PerspContentProvider.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/PerspContentProvider.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/PerspectivesPreferencePage.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/PerspectivesPreferencePage.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/PerspectivesPreferencePage.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/PerspectivesPreferencePage.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/PreferenceBoldLabelProvider.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/PreferenceBoldLabelProvider.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/PreferenceBoldLabelProvider.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/PreferenceBoldLabelProvider.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/PreferenceHistoryEntry.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/PreferenceHistoryEntry.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/PreferenceHistoryEntry.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/PreferenceHistoryEntry.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/PreferenceNodeFilter.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/PreferenceNodeFilter.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/PreferenceNodeFilter.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/PreferenceNodeFilter.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/PreferencePageHistory.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/PreferencePageHistory.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/PreferencePageHistory.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/PreferencePageHistory.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/PreferencePatternFilter.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/PreferencePatternFilter.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/PreferencePatternFilter.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/PreferencePatternFilter.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/PropertyDialog.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/PropertyDialog.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/PropertyDialog.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/PropertyDialog.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/PropertyPageContributorManager.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/PropertyPageContributorManager.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/PropertyPageContributorManager.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/PropertyPageContributorManager.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/PropertyPageManager.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/PropertyPageManager.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/PropertyPageManager.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/PropertyPageManager.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/PropertyPageNode.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/PropertyPageNode.java
similarity index 94%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/PropertyPageNode.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/PropertyPageNode.java
index 3bd3e29cceb..109e0482f45 100644
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/PropertyPageNode.java
+++ b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/PropertyPageNode.java
@@ -13,6 +13,7 @@
*******************************************************************************/
package org.eclipse.ui.internal.dialogs;
+import java.util.List;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.jface.preference.IPreferencePage;
@@ -58,8 +59,9 @@ public void createPage() {
} catch (CoreException e) {
// Just inform the user about the error. The details are
// written to the log by now.
- IStatus errStatus = StatusUtil.newStatus(e.getStatus(), WorkbenchMessages.PropertyPageNode_errorMessage);
- StatusManager.getManager().handle(errStatus, StatusManager.SHOW);
+ IStatus errStatus = StatusUtil.newStatus(List.of(e.getStatus()),
+ WorkbenchMessages.PropertyPageNode_errorMessage, null);
+ StatusManager.getManager().handle(errStatus, StatusManager.SHOW | StatusManager.LOG);
page = new EmptyPropertyPage();
}
setPage(page);
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/RegistryPageContributor.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/RegistryPageContributor.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/RegistryPageContributor.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/RegistryPageContributor.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/SavePerspectiveDialog.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/SavePerspectiveDialog.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/SavePerspectiveDialog.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/SavePerspectiveDialog.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/SelectPerspectiveDialog.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/SelectPerspectiveDialog.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/SelectPerspectiveDialog.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/SelectPerspectiveDialog.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ShowViewDialog.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/ShowViewDialog.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ShowViewDialog.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/ShowViewDialog.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/SimpleWorkingSetSelectionDialog.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/SimpleWorkingSetSelectionDialog.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/SimpleWorkingSetSelectionDialog.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/SimpleWorkingSetSelectionDialog.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/StartupPreferencePage.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/StartupPreferencePage.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/StartupPreferencePage.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/StartupPreferencePage.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ViewComparator.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/ViewComparator.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ViewComparator.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/ViewComparator.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ViewContentProvider.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/ViewContentProvider.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ViewContentProvider.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/ViewContentProvider.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ViewLabelProvider.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/ViewLabelProvider.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ViewLabelProvider.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/ViewLabelProvider.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ViewPatternFilter.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/ViewPatternFilter.java
similarity index 76%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ViewPatternFilter.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/ViewPatternFilter.java
index baa02a5fddd..52045ded872 100644
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ViewPatternFilter.java
+++ b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/ViewPatternFilter.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2005, 2014 IBM Corporation and others.
+ * Copyright (c) 2005, 2024 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -14,6 +14,7 @@
*******************************************************************************/
package org.eclipse.ui.internal.dialogs;
+import java.util.stream.Stream;
import org.eclipse.e4.ui.model.LocalizationHelper;
import org.eclipse.e4.ui.model.application.descriptor.basic.MPartDescriptor;
import org.eclipse.jface.viewers.Viewer;
@@ -34,19 +35,8 @@ public boolean isElementSelectable(Object element) {
@Override
protected boolean isLeafMatch(Viewer viewer, Object element) {
- if (element instanceof String) {
- return false;
- }
-
- String text = null;
- if (element instanceof MPartDescriptor) {
- MPartDescriptor desc = (MPartDescriptor) element;
- text = LocalizationHelper.getLocalized(desc.getLabel(), desc);
- if (wordMatches(text)) {
- return true;
- }
- }
-
- return false;
+ return element instanceof MPartDescriptor desc && Stream.of(desc.getLabel(), desc.getCategory()) //
+ .map(text -> LocalizationHelper.getLocalized(text, desc)) //
+ .anyMatch(this::wordMatches);
}
}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ViewsPreferencePage.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/ViewsPreferencePage.java
similarity index 90%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ViewsPreferencePage.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/ViewsPreferencePage.java
index 5defbcaa271..cc76a5897fe 100644
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ViewsPreferencePage.java
+++ b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/ViewsPreferencePage.java
@@ -37,6 +37,7 @@
import org.eclipse.core.runtime.IExtensionPoint;
import org.eclipse.core.runtime.IExtensionRegistry;
import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.Platform.OS;
import org.eclipse.core.runtime.RegistryFactory;
import org.eclipse.core.runtime.preferences.DefaultScope;
import org.eclipse.core.runtime.preferences.IEclipsePreferences;
@@ -53,6 +54,7 @@
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.fieldassist.ControlDecoration;
import org.eclipse.jface.fieldassist.FieldDecorationRegistry;
+import org.eclipse.jface.layout.GridDataFactory;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.preference.PreferencePage;
import org.eclipse.jface.util.Util;
@@ -73,6 +75,7 @@
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferenceConstants;
@@ -114,6 +117,7 @@ public class ViewsPreferencePage extends PreferencePage implements IWorkbenchPre
private boolean highContrastMode;
private Button themingEnabled;
+ private Button rescaleAtRuntime;
private Button hideIconsForViewTabs;
private Button showFullTextForViewTabs;
@@ -135,6 +139,7 @@ protected Control createContents(Composite parent) {
layout.horizontalSpacing = 10;
comp.setLayout(layout);
createThemeIndependentComposits(comp);
+ createHiDPISettingsGroup(comp);
return comp;
}
@@ -180,6 +185,8 @@ protected Control createContents(Composite parent) {
createHideIconsForViewTabs(comp);
createDependency(showFullTextForViewTabs, hideIconsForViewTabs);
+ createHiDPISettingsGroup(comp);
+
if (currentTheme != null) {
String colorsAndFontsThemeId = getColorAndFontThemeIdByThemeId(currentTheme.getId());
if (colorsAndFontsThemeId != null && !currentColorsAndFontsTheme.getId().equals(colorsAndFontsThemeId)) {
@@ -192,6 +199,30 @@ protected Control createContents(Composite parent) {
return comp;
}
+ private void createHiDPISettingsGroup(Composite parent) {
+ if (!OS.isWindows()) {
+ return;
+ }
+ createLabel(parent, ""); //$NON-NLS-1$
+ Group group = new Group(parent, SWT.LEFT);
+ group.setText(WorkbenchMessages.HiDpiSettingsGroupTitle);
+
+ GridData gridData = new GridData(SWT.FILL, SWT.CENTER, true, false);
+ gridData.horizontalSpan = ((GridLayout) parent.getLayout()).numColumns;
+ group.setLayoutData(gridData);
+ group.setFont(parent.getFont());
+ GridLayout layout = new GridLayout(1, false);
+ group.setLayout(layout);
+ Label infoLabel = new Label(group, SWT.WRAP);
+ infoLabel.setText(WorkbenchMessages.RescaleAtRuntimeDisclaimer);
+ infoLabel.setLayoutData(GridDataFactory.defaultsFor(infoLabel).create());
+ createLabel(group, ""); //$NON-NLS-1$
+
+ boolean initialStateRescaleAtRuntime = PrefUtil.getAPIPreferenceStore()
+ .getBoolean(IWorkbenchPreferenceConstants.RESCALING_AT_RUNTIME);
+ rescaleAtRuntime = createCheckButton(group, WorkbenchMessages.RescaleAtRuntimeEnabled, initialStateRescaleAtRuntime);
+ }
+
private void createThemeIndependentComposits(Composite comp) {
createUseRoundTabs(comp);
createColoredLabelsPref(comp);
@@ -227,7 +258,6 @@ private void createDependency(Button parent, Button dependent) {
GridData gridData = new GridData();
gridData.horizontalIndent = 20;
dependent.setLayoutData(gridData);
-
boolean parentState = parent.getSelection();
dependent.setEnabled(parentState);
@@ -341,6 +371,14 @@ public boolean performOk() {
.getSelection();
prefs.putBoolean(PartRenderingEngine.ENABLED_THEME_KEY, themingEnabled.getSelection());
+ boolean isRescaleAtRuntimeChanged = false;
+ if (rescaleAtRuntime != null) {
+ boolean initialStateRescaleAtRuntime = PrefUtil.getAPIPreferenceStore()
+ .getBoolean(IWorkbenchPreferenceConstants.RESCALING_AT_RUNTIME);
+ isRescaleAtRuntimeChanged = initialStateRescaleAtRuntime != rescaleAtRuntime.getSelection();
+ apiStore.setValue(IWorkbenchPreferenceConstants.RESCALING_AT_RUNTIME, rescaleAtRuntime.getSelection());
+ }
+
prefs.putBoolean(CTabRendering.USE_ROUND_TABS, useRoundTabs.getSelection());
try {
prefs.flush();
@@ -367,19 +405,22 @@ public boolean performOk() {
colorFontsDecorator.hide();
if (themeChanged || colorsAndFontsThemeChanged) {
- showRestartDialog();
+ showRestartDialog(WorkbenchMessages.ThemeChangeWarningTitle, WorkbenchMessages.ThemeChangeWarningText);
}
}
if (themingEnabledChanged) {
- showRestartDialog();
+ showRestartDialog(WorkbenchMessages.ThemeChangeWarningTitle, WorkbenchMessages.ThemeChangeWarningText);
+ }
+ if (isRescaleAtRuntimeChanged) {
+ showRestartDialog(WorkbenchMessages.RescaleAtRuntimeSettingChangeWarningTitle,
+ WorkbenchMessages.RescaleAtRuntimeSettingChangeWarningText);
}
return super.performOk();
}
- private void showRestartDialog() {
- if (new MessageDialog(null, WorkbenchMessages.ThemeChangeWarningTitle, null,
- WorkbenchMessages.ThemeChangeWarningText, MessageDialog.NONE, 2,
+ private void showRestartDialog(String title, String warningText) {
+ if (new MessageDialog(null, title, null, warningText, MessageDialog.NONE, 2,
WorkbenchMessages.Workbench_RestartButton, WorkbenchMessages.Workbench_DontRestartButton)
.open() == Window.OK) {
Display.getDefault().asyncExec(() -> PlatformUI.getWorkbench().restart());
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WizardActivityFilter.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/WizardActivityFilter.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WizardActivityFilter.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/WizardActivityFilter.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WizardCollectionElement.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/WizardCollectionElement.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WizardCollectionElement.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/WizardCollectionElement.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WizardContentProvider.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/WizardContentProvider.java
similarity index 89%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WizardContentProvider.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/WizardContentProvider.java
index 7912af85a58..47b1330b21e 100644
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WizardContentProvider.java
+++ b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/WizardContentProvider.java
@@ -46,11 +46,6 @@ public Object[] getChildren(Object parentElement) {
handleChild(childWizard, list);
}
- // flatten lists with only one category
- if (list.size() == 1 && list.get(0) instanceof WizardCollectionElement) {
- return getChildren(list.get(0));
- }
-
return list.toArray();
} else if (parentElement instanceof AdaptableList) {
AdaptableList aList = (AdaptableList) parentElement;
@@ -59,10 +54,6 @@ public Object[] getChildren(Object parentElement) {
for (Object element : children) {
handleChild(element, list);
}
- // if there is only one category, return it's children directly (flatten list)
- if (list.size() == 1 && list.get(0) instanceof WizardCollectionElement) {
- return getChildren(list.get(0));
- }
return list.toArray();
} else {
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WizardPatternFilter.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/WizardPatternFilter.java
similarity index 69%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WizardPatternFilter.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/WizardPatternFilter.java
index a83fbfbe89b..de236367743 100644
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WizardPatternFilter.java
+++ b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/WizardPatternFilter.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2005, 2015 IBM Corporation and others.
+ * Copyright (c) 2005, 2024 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -15,8 +15,11 @@
package org.eclipse.ui.internal.dialogs;
import java.util.ArrayList;
+import java.util.function.Function;
+import java.util.stream.Stream;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.ui.dialogs.PatternFilter;
+import org.eclipse.ui.wizards.IWizardCategory;
/**
* A class that handles filtering wizard node items based on a supplied matching
@@ -39,27 +42,21 @@ public boolean isElementSelectable(Object element) {
@Override
protected boolean isLeafMatch(Viewer viewer, Object element) {
- if (element instanceof WizardCollectionElement) {
- return false;
- }
-
- if (element instanceof WorkbenchWizardElement) {
- WorkbenchWizardElement desc = (WorkbenchWizardElement) element;
- String text = desc.getLabel();
- if (wordMatches(text)) {
- return true;
- }
- String wizDesc = desc.getDescription();
- if (wordMatches(wizDesc)) {
- return true;
- }
+ return element instanceof WorkbenchWizardElement desc &&
+ Stream.of(getWizardCategories(desc.getCategory()), //
+ Stream.of(desc.getLabel(), desc.getDescription()), //
+ Stream.of(desc.getKeywordLabels())) //
+ // Only works for finite streams
+ .flatMap(Function.identity())
+ .anyMatch(this::wordMatches);
+ }
- for (String keywordLabel : desc.getKeywordLabels()) {
- if (wordMatches(keywordLabel))
- return true;
- }
+ private Stream getWizardCategories(IWizardCategory category) {
+ if (category == null) {
+ return Stream.empty();
}
- return false;
+ return Stream.iterate(category, current -> current.getParent() != null, IWizardCategory::getParent)
+ .map(IWizardCategory::getLabel);
}
@Override
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WizardTagFilter.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/WizardTagFilter.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WizardTagFilter.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/WizardTagFilter.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkbenchDialogBlockedHandler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/WorkbenchDialogBlockedHandler.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkbenchDialogBlockedHandler.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/WorkbenchDialogBlockedHandler.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkbenchEditorsDialog.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/WorkbenchEditorsDialog.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkbenchEditorsDialog.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/WorkbenchEditorsDialog.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkbenchPreferenceDialog.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/WorkbenchPreferenceDialog.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkbenchPreferenceDialog.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/WorkbenchPreferenceDialog.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkbenchPreferenceManager.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/WorkbenchPreferenceManager.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkbenchPreferenceManager.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/WorkbenchPreferenceManager.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkbenchPreferenceNode.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/WorkbenchPreferenceNode.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkbenchPreferenceNode.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/WorkbenchPreferenceNode.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkbenchPreferencePage.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/WorkbenchPreferencePage.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkbenchPreferencePage.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/WorkbenchPreferencePage.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkbenchWizardElement.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/WorkbenchWizardElement.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkbenchWizardElement.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/WorkbenchWizardElement.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkbenchWizardListSelectionPage.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/WorkbenchWizardListSelectionPage.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkbenchWizardListSelectionPage.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/WorkbenchWizardListSelectionPage.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkbenchWizardNode.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/WorkbenchWizardNode.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkbenchWizardNode.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/WorkbenchWizardNode.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkbenchWizardSelectionPage.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/WorkbenchWizardSelectionPage.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkbenchWizardSelectionPage.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/WorkbenchWizardSelectionPage.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkingSetEditWizard.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/WorkingSetEditWizard.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkingSetEditWizard.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/WorkingSetEditWizard.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkingSetFilter.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/WorkingSetFilter.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkingSetFilter.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/WorkingSetFilter.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkingSetLabelProvider.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/WorkingSetLabelProvider.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkingSetLabelProvider.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/WorkingSetLabelProvider.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkingSetNewWizard.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/WorkingSetNewWizard.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkingSetNewWizard.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/WorkingSetNewWizard.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkingSetSelectionDialog.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/WorkingSetSelectionDialog.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkingSetSelectionDialog.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/WorkingSetSelectionDialog.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkingSetTypePage.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/WorkingSetTypePage.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkingSetTypePage.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/WorkingSetTypePage.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/cpd/ActionSetFilter.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/cpd/ActionSetFilter.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/cpd/ActionSetFilter.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/cpd/ActionSetFilter.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/cpd/ActionSetSelectionChangedListener.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/cpd/ActionSetSelectionChangedListener.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/cpd/ActionSetSelectionChangedListener.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/cpd/ActionSetSelectionChangedListener.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/cpd/CategoryCheckProvider.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/cpd/CategoryCheckProvider.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/cpd/CategoryCheckProvider.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/cpd/CategoryCheckProvider.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/cpd/CustomizeActionBars.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/cpd/CustomizeActionBars.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/cpd/CustomizeActionBars.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/cpd/CustomizeActionBars.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/cpd/CustomizePerspectiveDialog.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/cpd/CustomizePerspectiveDialog.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/cpd/CustomizePerspectiveDialog.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/cpd/CustomizePerspectiveDialog.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/cpd/FilteredModelCheckListener.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/cpd/FilteredModelCheckListener.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/cpd/FilteredModelCheckListener.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/cpd/FilteredModelCheckListener.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/cpd/FilteredTreeCheckProvider.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/cpd/FilteredTreeCheckProvider.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/cpd/FilteredTreeCheckProvider.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/cpd/FilteredTreeCheckProvider.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/cpd/FilteredViewerCheckListener.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/cpd/FilteredViewerCheckListener.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/cpd/FilteredViewerCheckListener.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/cpd/FilteredViewerCheckListener.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/cpd/GrayOutUnavailableLabelProvider.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/cpd/GrayOutUnavailableLabelProvider.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/cpd/GrayOutUnavailableLabelProvider.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/cpd/GrayOutUnavailableLabelProvider.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/cpd/ItemDetailToolTip.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/cpd/ItemDetailToolTip.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/cpd/ItemDetailToolTip.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/cpd/ItemDetailToolTip.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/cpd/NameAndDescriptionToolTip.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/cpd/NameAndDescriptionToolTip.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/cpd/NameAndDescriptionToolTip.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/cpd/NameAndDescriptionToolTip.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/cpd/ShortcutLabelProvider.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/cpd/ShortcutLabelProvider.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/cpd/ShortcutLabelProvider.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/cpd/ShortcutLabelProvider.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/cpd/ShowUsedActionSetsFilter.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/cpd/ShowUsedActionSetsFilter.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/cpd/ShowUsedActionSetsFilter.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/cpd/ShowUsedActionSetsFilter.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/cpd/TableToolTip.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/cpd/TableToolTip.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/cpd/TableToolTip.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/cpd/TableToolTip.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/cpd/TreeManager.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/cpd/TreeManager.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/cpd/TreeManager.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/cpd/TreeManager.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/cpd/UnavailableContributionItemCheckListener.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/cpd/UnavailableContributionItemCheckListener.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/cpd/UnavailableContributionItemCheckListener.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/cpd/UnavailableContributionItemCheckListener.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/e4/compatibility/ActionBars.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/e4/compatibility/ActionBars.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/e4/compatibility/ActionBars.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/e4/compatibility/ActionBars.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/e4/compatibility/CompatibilityEditor.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/e4/compatibility/CompatibilityEditor.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/e4/compatibility/CompatibilityEditor.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/e4/compatibility/CompatibilityEditor.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/e4/compatibility/CompatibilityPart.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/e4/compatibility/CompatibilityPart.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/e4/compatibility/CompatibilityPart.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/e4/compatibility/CompatibilityPart.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/e4/compatibility/CompatibilityView.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/e4/compatibility/CompatibilityView.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/e4/compatibility/CompatibilityView.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/e4/compatibility/CompatibilityView.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/e4/compatibility/E4Util.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/e4/compatibility/E4Util.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/e4/compatibility/E4Util.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/e4/compatibility/E4Util.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/e4/compatibility/ModeledFolderLayout.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/e4/compatibility/ModeledFolderLayout.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/e4/compatibility/ModeledFolderLayout.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/e4/compatibility/ModeledFolderLayout.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/e4/compatibility/ModeledPageLayout.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/e4/compatibility/ModeledPageLayout.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/e4/compatibility/ModeledPageLayout.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/e4/compatibility/ModeledPageLayout.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/e4/compatibility/ModeledPageLayoutUtils.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/e4/compatibility/ModeledPageLayoutUtils.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/e4/compatibility/ModeledPageLayoutUtils.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/e4/compatibility/ModeledPageLayoutUtils.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/e4/compatibility/ModeledPlaceholderFolderLayout.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/e4/compatibility/ModeledPlaceholderFolderLayout.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/e4/compatibility/ModeledPlaceholderFolderLayout.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/e4/compatibility/ModeledPlaceholderFolderLayout.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/e4/compatibility/ModeledViewLayout.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/e4/compatibility/ModeledViewLayout.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/e4/compatibility/ModeledViewLayout.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/e4/compatibility/ModeledViewLayout.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/e4/compatibility/SelectionService.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/e4/compatibility/SelectionService.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/e4/compatibility/SelectionService.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/e4/compatibility/SelectionService.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/e4/migration/InfoReader.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/e4/migration/InfoReader.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/e4/migration/InfoReader.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/e4/migration/InfoReader.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/e4/migration/MementoReader.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/e4/migration/MementoReader.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/e4/migration/MementoReader.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/e4/migration/MementoReader.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/e4/migration/PerspectiveBuilder.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/e4/migration/PerspectiveBuilder.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/e4/migration/PerspectiveBuilder.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/e4/migration/PerspectiveBuilder.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/e4/migration/PerspectiveReader.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/e4/migration/PerspectiveReader.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/e4/migration/PerspectiveReader.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/e4/migration/PerspectiveReader.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/expressions/ActivePartExpression.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/expressions/ActivePartExpression.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/expressions/ActivePartExpression.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/expressions/ActivePartExpression.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/expressions/AlwaysEnabledExpression.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/expressions/AlwaysEnabledExpression.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/expressions/AlwaysEnabledExpression.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/expressions/AlwaysEnabledExpression.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/expressions/LegacyActionSetExpression.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/expressions/LegacyActionSetExpression.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/expressions/LegacyActionSetExpression.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/expressions/LegacyActionSetExpression.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/expressions/LegacyEditorActionBarExpression.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/expressions/LegacyEditorActionBarExpression.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/expressions/LegacyEditorActionBarExpression.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/expressions/LegacyEditorActionBarExpression.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/expressions/LegacyEditorContributionExpression.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/expressions/LegacyEditorContributionExpression.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/expressions/LegacyEditorContributionExpression.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/expressions/LegacyEditorContributionExpression.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/expressions/LegacySelectionEnablerWrapper.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/expressions/LegacySelectionEnablerWrapper.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/expressions/LegacySelectionEnablerWrapper.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/expressions/LegacySelectionEnablerWrapper.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/expressions/LegacyViewContributionExpression.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/expressions/LegacyViewContributionExpression.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/expressions/LegacyViewContributionExpression.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/expressions/LegacyViewContributionExpression.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/expressions/WorkbenchWindowExpression.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/expressions/WorkbenchWindowExpression.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/expressions/WorkbenchWindowExpression.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/expressions/WorkbenchWindowExpression.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/AbstractSaveHandler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/AbstractSaveHandler.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/AbstractSaveHandler.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/AbstractSaveHandler.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/ActionCommandMappingService.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/ActionCommandMappingService.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/ActionCommandMappingService.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/ActionCommandMappingService.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/ActionDelegateHandlerProxy.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/ActionDelegateHandlerProxy.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/ActionDelegateHandlerProxy.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/ActionDelegateHandlerProxy.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/ActiveContextInfoHandler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/ActiveContextInfoHandler.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/ActiveContextInfoHandler.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/ActiveContextInfoHandler.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/CloseAllPerspectivesHandler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/CloseAllPerspectivesHandler.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/CloseAllPerspectivesHandler.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/CloseAllPerspectivesHandler.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/ClosePartHandler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/ClosePartHandler.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/ClosePartHandler.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/ClosePartHandler.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/ClosePerspectiveHandler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/ClosePerspectiveHandler.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/ClosePerspectiveHandler.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/ClosePerspectiveHandler.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/CommandLegacyActionWrapper.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/CommandLegacyActionWrapper.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/CommandLegacyActionWrapper.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/CommandLegacyActionWrapper.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/ContextMenuHandler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/ContextMenuHandler.java
similarity index 91%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/ContextMenuHandler.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/ContextMenuHandler.java
index 455bd9aa313..e4a0c1745c4 100644
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/ContextMenuHandler.java
+++ b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/ContextMenuHandler.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2013, 2014 IBM Corporation and others.
+ * Copyright (c) 2013, 2024 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -15,7 +15,6 @@
import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
import org.eclipse.jface.util.Geometry;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Point;
@@ -27,11 +26,8 @@
import org.eclipse.ui.handlers.HandlerUtil;
public class ContextMenuHandler extends AbstractHandler {
- /**
- * @throws ExecutionException {@inheritDoc}
- */
@Override
- public Object execute(ExecutionEvent exEvent) throws ExecutionException {
+ public Object execute(ExecutionEvent exEvent) {
Shell shell = HandlerUtil.getActiveShell(exEvent);
Display display = shell == null ? Display.getCurrent() : shell.getDisplay();
Control focusControl = display.getFocusControl();
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/CyclePageHandler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/CyclePageHandler.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/CyclePageHandler.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/CyclePageHandler.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/DirtyStateTracker.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/DirtyStateTracker.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/DirtyStateTracker.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/DirtyStateTracker.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/DisplayHelpHandler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/DisplayHelpHandler.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/DisplayHelpHandler.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/DisplayHelpHandler.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/DynamicHelpHandler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/DynamicHelpHandler.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/DynamicHelpHandler.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/DynamicHelpHandler.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/E4HandlerProxy.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/E4HandlerProxy.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/E4HandlerProxy.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/E4HandlerProxy.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/EditActionSetsHandler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/EditActionSetsHandler.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/EditActionSetsHandler.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/EditActionSetsHandler.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/ExecutableExtensionHandler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/ExecutableExtensionHandler.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/ExecutableExtensionHandler.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/ExecutableExtensionHandler.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/FullScreenHandler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/FullScreenHandler.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/FullScreenHandler.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/FullScreenHandler.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/HandlerActivation.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/HandlerActivation.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/HandlerActivation.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/HandlerActivation.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/HandlerPersistence.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/HandlerPersistence.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/HandlerPersistence.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/HandlerPersistence.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/HandlerProxy.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/HandlerProxy.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/HandlerProxy.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/HandlerProxy.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/HelpContentsHandler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/HelpContentsHandler.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/HelpContentsHandler.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/HelpContentsHandler.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/HelpSearchHandler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/HelpSearchHandler.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/HelpSearchHandler.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/HelpSearchHandler.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/HideTrimBarsHandler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/HideTrimBarsHandler.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/HideTrimBarsHandler.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/HideTrimBarsHandler.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/IActionCommandMappingService.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/IActionCommandMappingService.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/IActionCommandMappingService.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/IActionCommandMappingService.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/IWorkbenchWindowHandlerDelegate.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/IWorkbenchWindowHandlerDelegate.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/IWorkbenchWindowHandlerDelegate.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/IWorkbenchWindowHandlerDelegate.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/IntroHandler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/IntroHandler.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/IntroHandler.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/IntroHandler.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/LegacyHandlerService.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/LegacyHandlerService.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/LegacyHandlerService.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/LegacyHandlerService.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/LockToolBarHandler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/LockToolBarHandler.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/LockToolBarHandler.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/LockToolBarHandler.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/MaximizePartHandler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/MaximizePartHandler.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/MaximizePartHandler.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/MaximizePartHandler.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/MinimizePartHandler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/MinimizePartHandler.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/MinimizePartHandler.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/MinimizePartHandler.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/NewEditorHandler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/NewEditorHandler.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/NewEditorHandler.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/NewEditorHandler.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/OpenInNewWindowHandler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/OpenInNewWindowHandler.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/OpenInNewWindowHandler.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/OpenInNewWindowHandler.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/PinEditorHandler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/PinEditorHandler.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/PinEditorHandler.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/PinEditorHandler.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/PropertyDialogHandler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/PropertyDialogHandler.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/PropertyDialogHandler.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/PropertyDialogHandler.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/QuickMenuHandler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/QuickMenuHandler.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/QuickMenuHandler.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/QuickMenuHandler.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/QuitHandler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/QuitHandler.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/QuitHandler.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/QuitHandler.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/ResetPerspectiveHandler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/ResetPerspectiveHandler.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/ResetPerspectiveHandler.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/ResetPerspectiveHandler.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/RestartWorkbenchHandler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/RestartWorkbenchHandler.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/RestartWorkbenchHandler.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/RestartWorkbenchHandler.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/ReuseEditorTester.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/ReuseEditorTester.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/ReuseEditorTester.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/ReuseEditorTester.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/SaveAllHandler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/SaveAllHandler.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/SaveAllHandler.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/SaveAllHandler.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/SaveAsHandler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/SaveAsHandler.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/SaveAsHandler.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/SaveAsHandler.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/SaveHandler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/SaveHandler.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/SaveHandler.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/SaveHandler.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/SavePerspectiveHandler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/SavePerspectiveHandler.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/SavePerspectiveHandler.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/SavePerspectiveHandler.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/SelectAllHandler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/SelectAllHandler.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/SelectAllHandler.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/SelectAllHandler.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/ShowKeyAssistHandler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/ShowKeyAssistHandler.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/ShowKeyAssistHandler.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/ShowKeyAssistHandler.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/ShowPreferencePageHandler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/ShowPreferencePageHandler.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/ShowPreferencePageHandler.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/ShowPreferencePageHandler.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/SpyHandler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/SpyHandler.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/SpyHandler.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/SpyHandler.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/ToggleCoolbarHandler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/ToggleCoolbarHandler.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/ToggleCoolbarHandler.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/ToggleCoolbarHandler.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/ToggleStatusBarHandler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/ToggleStatusBarHandler.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/ToggleStatusBarHandler.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/ToggleStatusBarHandler.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/TraversePageHandler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/TraversePageHandler.java
similarity index 51%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/TraversePageHandler.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/TraversePageHandler.java
index ea7b11b14b1..c2c1a5c9975 100644
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/TraversePageHandler.java
+++ b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/TraversePageHandler.java
@@ -12,14 +12,15 @@
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.ui.internal.handlers;
-
import java.lang.reflect.Method;
+import java.util.Arrays;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CTabFolder;
+import org.eclipse.swt.custom.CTabItem;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
-
/**
* This handler is an adaptation of the widget method handler that implements
* page traversal via {@link SWT#TRAVERSE_PAGE_NEXT} and
@@ -28,30 +29,77 @@
* @since 3.5
*/
public class TraversePageHandler extends WidgetMethodHandler {
-
/**
* The parameters for traverse(int).
*/
private static final Class>[] METHOD_PARAMETERS = { int.class };
-
@Override
public final Object execute(final ExecutionEvent event) {
Control focusControl = Display.getCurrent().getFocusControl();
if (focusControl != null) {
- int traversal = "next".equals(methodName) ? SWT.TRAVERSE_PAGE_NEXT : SWT.TRAVERSE_PAGE_PREVIOUS; //$NON-NLS-1$
+ boolean forward = "next".equals(methodName); //$NON-NLS-1$
+ int traversalDirection = translateToTraversalDirection(forward);
Control control = focusControl;
do {
- if (control.traverse(traversal))
+ if (control instanceof CTabFolder folder && isFinalItemInCTabFolder(folder, forward)
+ && !hasHiddenItem(folder)) {
+ loopToFirstOrLastItem(folder, forward);
+ traversalDirection = translateToTraversalDirection(!forward); // we are in the second-to-last item in the given
+ // direction. Now, use the Traverse-event to move back by one
+ }
+ if (control.traverse(traversalDirection))
return null;
if (control instanceof Shell)
return null;
control = control.getParent();
} while (control != null);
}
-
return null;
}
+ private boolean hasHiddenItem(CTabFolder folder) {
+ return Arrays.stream(folder.getItems()).anyMatch(i -> !i.isShowing());
+ }
+
+ private int translateToTraversalDirection(boolean forward) {
+ return forward ? SWT.TRAVERSE_PAGE_NEXT : SWT.TRAVERSE_PAGE_PREVIOUS;
+ }
+
+ /**
+ * Sets the current selection to the first or last item the given direction.
+ *
+ * @param folder the CTabFolder which we want to inspect
+ * @param forward whether we want to traverse forwards of backwards
+ */
+ private void loopToFirstOrLastItem(CTabFolder folder, boolean forward) {
+ if (forward) {
+ folder.showItem(folder.getItem(0));
+ folder.setSelection(1);
+ } else {
+ int itemCount = folder.getItemCount();
+ folder.setSelection(itemCount - 2);
+ }
+ }
+
+ /**
+ * {@return Returns whether the folder has currently selected the final item in
+ * the given direction.}
+ *
+ * @param folder the CTabFolder which we want to inspect
+ * @param forward whether we want to traverse forwards of backwards
+ */
+ private boolean isFinalItemInCTabFolder(CTabFolder folder, boolean forward) {
+ CTabItem currentFolder = folder.getSelection();
+ CTabItem lastFolder = null;
+ if (forward) {
+ int itemCount = folder.getItemCount();
+ lastFolder = folder.getItem(itemCount - 1);
+ } else {
+ lastFolder = folder.getItem(0);
+ }
+ return currentFolder.equals(lastFolder);
+ }
+
/**
* Looks up the traverse(int) method on the given focus control.
*
@@ -70,5 +118,4 @@ protected Method getMethodToExecute() {
}
return null;
}
-
-}
+}
\ No newline at end of file
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/WidgetMethodHandler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/WidgetMethodHandler.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/WidgetMethodHandler.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/WidgetMethodHandler.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/WizardHandler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/WizardHandler.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/WizardHandler.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/WizardHandler.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/WorkbenchWindowHandlerDelegate.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/WorkbenchWindowHandlerDelegate.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/WorkbenchWindowHandlerDelegate.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/WorkbenchWindowHandlerDelegate.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/help/CommandHelpServiceImpl.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/help/CommandHelpServiceImpl.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/help/CommandHelpServiceImpl.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/help/CommandHelpServiceImpl.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/help/HelpServiceImpl.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/help/HelpServiceImpl.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/help/HelpServiceImpl.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/help/HelpServiceImpl.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/help/WorkbenchHelpSystem.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/help/WorkbenchHelpSystem.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/help/WorkbenchHelpSystem.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/help/WorkbenchHelpSystem.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/intro/IIntroConstants.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/intro/IIntroConstants.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/intro/IIntroConstants.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/intro/IIntroConstants.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/intro/IIntroDescriptor.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/intro/IIntroDescriptor.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/intro/IIntroDescriptor.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/intro/IIntroDescriptor.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/intro/IIntroRegistry.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/intro/IIntroRegistry.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/intro/IIntroRegistry.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/intro/IIntroRegistry.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/intro/IntroDescriptor.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/intro/IntroDescriptor.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/intro/IntroDescriptor.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/intro/IntroDescriptor.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/intro/IntroMessages.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/intro/IntroMessages.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/intro/IntroMessages.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/intro/IntroMessages.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/intro/IntroRegistry.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/intro/IntroRegistry.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/intro/IntroRegistry.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/intro/IntroRegistry.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/intro/intro.properties b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/intro/intro.properties
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/intro/intro.properties
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/intro/intro.properties
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/AbstractKeyFormatter.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/AbstractKeyFormatter.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/AbstractKeyFormatter.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/AbstractKeyFormatter.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/AbstractKeyFormatter.properties b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/AbstractKeyFormatter.properties
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/AbstractKeyFormatter.properties
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/AbstractKeyFormatter.properties
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/AbstractModifierKeyComparator.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/AbstractModifierKeyComparator.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/AbstractModifierKeyComparator.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/AbstractModifierKeyComparator.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/AlphabeticModifierKeyComparator.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/AlphabeticModifierKeyComparator.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/AlphabeticModifierKeyComparator.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/AlphabeticModifierKeyComparator.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/BindingPersistence.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/BindingPersistence.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/BindingPersistence.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/BindingPersistence.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/BindingService.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/BindingService.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/BindingService.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/BindingService.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/CategoryPatternFilter.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/CategoryPatternFilter.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/CategoryPatternFilter.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/CategoryPatternFilter.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/CompactKeyFormatter.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/CompactKeyFormatter.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/CompactKeyFormatter.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/CompactKeyFormatter.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/EmacsKeyFormatter.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/EmacsKeyFormatter.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/EmacsKeyFormatter.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/EmacsKeyFormatter.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/EmacsKeyFormatter.properties b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/EmacsKeyFormatter.properties
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/EmacsKeyFormatter.properties
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/EmacsKeyFormatter.properties
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/FormalKeyFormatter.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/FormalKeyFormatter.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/FormalKeyFormatter.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/FormalKeyFormatter.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/GlobalKeyAssistDialog.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/GlobalKeyAssistDialog.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/GlobalKeyAssistDialog.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/GlobalKeyAssistDialog.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/GnomeKeyFormatter.properties b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/GnomeKeyFormatter.properties
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/GnomeKeyFormatter.properties
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/GnomeKeyFormatter.properties
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/ImageFactory.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/ImageFactory.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/ImageFactory.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/ImageFactory.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/KdeKeyFormatter.properties b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/KdeKeyFormatter.properties
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/KdeKeyFormatter.properties
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/KdeKeyFormatter.properties
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/KeyAssistDialog.properties b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/KeyAssistDialog.properties
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/KeyAssistDialog.properties
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/KeyAssistDialog.properties
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/KeyAssistMessages.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/KeyAssistMessages.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/KeyAssistMessages.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/KeyAssistMessages.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/KeysPreferenceFiltersDialog.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/KeysPreferenceFiltersDialog.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/KeysPreferenceFiltersDialog.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/KeysPreferenceFiltersDialog.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/KeysPreferencePage.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/KeysPreferencePage.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/KeysPreferencePage.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/KeysPreferencePage.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/KeysPreferencePage.properties b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/KeysPreferencePage.properties
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/KeysPreferencePage.properties
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/KeysPreferencePage.properties
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/MacKeyFormatter.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/MacKeyFormatter.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/MacKeyFormatter.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/MacKeyFormatter.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/MacKeyFormatter.properties b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/MacKeyFormatter.properties
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/MacKeyFormatter.properties
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/MacKeyFormatter.properties
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/NativeKeyFormatter.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/NativeKeyFormatter.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/NativeKeyFormatter.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/NativeKeyFormatter.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/NativeKeyFormatter.properties b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/NativeKeyFormatter.properties
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/NativeKeyFormatter.properties
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/NativeKeyFormatter.properties
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/NativeModifierKeyComparator.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/NativeModifierKeyComparator.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/NativeModifierKeyComparator.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/NativeModifierKeyComparator.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/NewKeysPreferenceMessages.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/NewKeysPreferenceMessages.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/NewKeysPreferenceMessages.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/NewKeysPreferenceMessages.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/NewKeysPreferencePage.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/NewKeysPreferencePage.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/NewKeysPreferencePage.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/NewKeysPreferencePage.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/NewKeysPreferencePage.properties b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/NewKeysPreferencePage.properties
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/NewKeysPreferencePage.properties
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/NewKeysPreferencePage.properties
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/NoKeysPreferencePage.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/NoKeysPreferencePage.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/NoKeysPreferencePage.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/NoKeysPreferencePage.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/WindowsKeyFormatter.properties b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/WindowsKeyFormatter.properties
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/WindowsKeyFormatter.properties
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/WindowsKeyFormatter.properties
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/WorkbenchKeyboard.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/WorkbenchKeyboard.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/WorkbenchKeyboard.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/WorkbenchKeyboard.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/WorkbenchKeyboard.properties b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/WorkbenchKeyboard.properties
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/WorkbenchKeyboard.properties
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/WorkbenchKeyboard.properties
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/model/BindingElement.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/model/BindingElement.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/model/BindingElement.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/model/BindingElement.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/model/BindingModel.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/model/BindingModel.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/model/BindingModel.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/model/BindingModel.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/model/CommonModel.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/model/CommonModel.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/model/CommonModel.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/model/CommonModel.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/model/ConflictModel.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/model/ConflictModel.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/model/ConflictModel.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/model/ConflictModel.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/model/ContextElement.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/model/ContextElement.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/model/ContextElement.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/model/ContextElement.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/model/ContextModel.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/model/ContextModel.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/model/ContextModel.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/model/ContextModel.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/model/KeyController.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/model/KeyController.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/model/KeyController.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/model/KeyController.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/model/ModelElement.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/model/ModelElement.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/model/ModelElement.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/model/ModelElement.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/model/SchemeElement.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/model/SchemeElement.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/model/SchemeElement.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/model/SchemeElement.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/model/SchemeModel.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/model/SchemeModel.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/model/SchemeModel.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/model/SchemeModel.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/show/ShowKeysListener.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/show/ShowKeysListener.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/show/ShowKeysListener.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/show/ShowKeysListener.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/show/ShowKeysToggleHandler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/show/ShowKeysToggleHandler.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/show/ShowKeysToggleHandler.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/show/ShowKeysToggleHandler.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/show/ShowKeysUI.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/show/ShowKeysUI.java
similarity index 99%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/show/ShowKeysUI.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/show/ShowKeysUI.java
index afe4aa2b576..e39d1be9128 100644
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/show/ShowKeysUI.java
+++ b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/show/ShowKeysUI.java
@@ -87,6 +87,9 @@ private void open(String commandId, String description, Event trigger, boolean f
try {
ICommandService cmdService = this.serviceLocator.getService(ICommandService.class);
Command command = cmdService.getCommand(commandId);
+ if (!command.isHandled() || !command.isEnabled()) {
+ return;
+ }
String name = command.getName();
if (description == null) {
description = command.getDescription();
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/CacheWrapper.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/layout/CacheWrapper.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/CacheWrapper.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/layout/CacheWrapper.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/CellData.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/layout/CellData.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/CellData.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/layout/CellData.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/CellLayout.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/layout/CellLayout.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/CellLayout.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/layout/CellLayout.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/CellLayoutUtil.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/layout/CellLayoutUtil.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/CellLayoutUtil.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/layout/CellLayoutUtil.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/GridInfo.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/layout/GridInfo.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/GridInfo.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/layout/GridInfo.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/ICachingLayout.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/layout/ICachingLayout.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/ICachingLayout.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/layout/ICachingLayout.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/LayoutCache.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/layout/LayoutCache.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/LayoutCache.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/layout/LayoutCache.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/LayoutUtil.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/layout/LayoutUtil.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/LayoutUtil.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/layout/LayoutUtil.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/Row.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/layout/Row.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/Row.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/layout/Row.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/SizeCache.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/layout/SizeCache.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/SizeCache.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/layout/SizeCache.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/CommandMessages.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/menus/CommandMessages.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/CommandMessages.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/menus/CommandMessages.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/CompatibilityWorkbenchWindowControlContribution.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/menus/CompatibilityWorkbenchWindowControlContribution.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/CompatibilityWorkbenchWindowControlContribution.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/menus/CompatibilityWorkbenchWindowControlContribution.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/ContributionFactoryGenerator.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/menus/ContributionFactoryGenerator.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/ContributionFactoryGenerator.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/menus/ContributionFactoryGenerator.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/ContributionRoot.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/menus/ContributionRoot.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/ContributionRoot.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/menus/ContributionRoot.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/ControlContributionRegistry.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/menus/ControlContributionRegistry.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/ControlContributionRegistry.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/menus/ControlContributionRegistry.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/DynamicMenuContributionItem.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/menus/DynamicMenuContributionItem.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/DynamicMenuContributionItem.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/menus/DynamicMenuContributionItem.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/DynamicToolBarContributionItem.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/menus/DynamicToolBarContributionItem.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/DynamicToolBarContributionItem.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/menus/DynamicToolBarContributionItem.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/FocusControlSourceProvider.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/menus/FocusControlSourceProvider.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/FocusControlSourceProvider.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/menus/FocusControlSourceProvider.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/IActionSetsListener.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/menus/IActionSetsListener.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/IActionSetsListener.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/menus/IActionSetsListener.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/InternalControlContribution.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/menus/InternalControlContribution.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/InternalControlContribution.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/menus/InternalControlContribution.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/LegacyActionPersistence.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/menus/LegacyActionPersistence.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/LegacyActionPersistence.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/menus/LegacyActionPersistence.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/MenuAdditionCacheEntry.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/menus/MenuAdditionCacheEntry.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/MenuAdditionCacheEntry.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/menus/MenuAdditionCacheEntry.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/MenuFactoryGenerator.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/menus/MenuFactoryGenerator.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/MenuFactoryGenerator.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/menus/MenuFactoryGenerator.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/MenuHelper.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/menus/MenuHelper.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/MenuHelper.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/menus/MenuHelper.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/MenuLocationURI.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/menus/MenuLocationURI.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/MenuLocationURI.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/menus/MenuLocationURI.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/MenuPersistence.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/menus/MenuPersistence.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/MenuPersistence.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/menus/MenuPersistence.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/SlaveMenuService.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/menus/SlaveMenuService.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/SlaveMenuService.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/menus/SlaveMenuService.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/WorkbenchMenuService.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/menus/WorkbenchMenuService.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/WorkbenchMenuService.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/menus/WorkbenchMenuService.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/messages.properties b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/menus/messages.properties
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/messages.properties
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/menus/messages.properties
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/messages.properties b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/messages.properties
similarity index 98%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/messages.properties
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/messages.properties
index 62751910b19..08c857e04ff 100644
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/messages.properties
+++ b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/messages.properties
@@ -419,6 +419,9 @@ WorkbenchPreference_RunInBackgroundButton=Always r&un in background
WorkbenchPreference_RunInBackgroundToolTip=Run long operations in the background where possible
WorkbenchPreference_HeapStatusButton = Sho&w heap status
WorkbenchPreference_HeapStatusButtonToolTip = Show the heap status area on the bottom of the window
+WorkbenchPreference_AlignMultiPageEditorTabs= &Align multi-page editor tabs:
+WorkbenchPreference_AlignMultiPageEditorTabs_Top= &Top
+WorkbenchPreference_AlignMultiPageEditorTabs_Bottom= &Bottom
# --- Appearance ---
@@ -496,7 +499,12 @@ PreferencePage_noDescription = (No description available)
PreferencePageParameterValues_pageLabelSeparator = \ >\
ThemingEnabled = E&nable theming
ThemeChangeWarningText = Restart for the theme changes to take full effect
-ThemeChangeWarningTitle = Theme Changed
+ThemeChangeWarningTitle = Theme Changed
+RescaleAtRuntimeSettingChangeWarningTitle = DPI Setting Changed
+RescaleAtRuntimeSettingChangeWarningText = Restart for the DPI setting changes to take effect
+HiDpiSettingsGroupTitle = HiDPI settings
+RescaleAtRuntimeEnabled = Monitor-specific UI &scaling
+RescaleAtRuntimeDisclaimer = EXPERIMENTAL! Activating this option will dynamically scale all windows according to the monitor they are currently in. It will also set the default browser to Edge in order to provide the appropriate scaling of content displayed in a browser. This feature is still in development and therefore considered experimental.
# --- Workbench -----
WorkbenchPreference_openMode=Open mode
WorkbenchPreference_doubleClick=D&ouble click
@@ -729,8 +737,8 @@ PageLayout_missingRefPart=Referenced part does not exist yet: {0}.
# Keys used in the reuse editor which is released as experimental.
# ==============================================================================
PinEditorAction_toolTip=Pin Editor
-WorkbenchPreference_reuseEditors=&Close editors automatically
-WorkbenchPreference_reuseEditorsThreshold=Number of opened editors before closi&ng:
+WorkbenchPreference_reuseEditors=&Close editors if there are more than
+WorkbenchPreference_reuseEditors_closing=editors open
WorkbenchPreference_reuseEditorsThresholdError=The number of opened editors should be more than 0.
WorkbenchPreference_recentFiles=Size of &recently opened files list:
WorkbenchPreference_recentFilesError=The size of the recently opened files list should be between 0 and {0}.
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/misc/ExternalEditor.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/misc/ExternalEditor.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/misc/ExternalEditor.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/misc/ExternalEditor.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/misc/ExternalProgramImageDescriptor.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/misc/ExternalProgramImageDescriptor.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/misc/ExternalProgramImageDescriptor.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/misc/ExternalProgramImageDescriptor.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/misc/Policy.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/misc/Policy.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/misc/Policy.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/misc/Policy.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/misc/ProgramImageDescriptor.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/misc/ProgramImageDescriptor.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/misc/ProgramImageDescriptor.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/misc/ProgramImageDescriptor.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/misc/StatusUtil.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/misc/StatusUtil.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/misc/StatusUtil.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/misc/StatusUtil.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/misc/TestPartListener.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/misc/TestPartListener.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/misc/TestPartListener.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/misc/TestPartListener.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/misc/UIListenerLogging.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/misc/UIListenerLogging.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/misc/UIListenerLogging.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/misc/UIListenerLogging.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/misc/UIStats.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/misc/UIStats.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/misc/UIStats.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/misc/UIStats.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/model/ContributionService.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/model/ContributionService.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/model/ContributionService.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/model/ContributionService.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/operations/AdvancedValidationUserApprover.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/operations/AdvancedValidationUserApprover.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/operations/AdvancedValidationUserApprover.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/operations/AdvancedValidationUserApprover.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/operations/TimeTriggeredProgressMonitorDialog.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/operations/TimeTriggeredProgressMonitorDialog.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/operations/TimeTriggeredProgressMonitorDialog.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/operations/TimeTriggeredProgressMonitorDialog.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/operations/WorkbenchOperationSupport.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/operations/WorkbenchOperationSupport.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/operations/WorkbenchOperationSupport.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/operations/WorkbenchOperationSupport.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/part/IMultiPageEditorSiteHolder.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/part/IMultiPageEditorSiteHolder.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/part/IMultiPageEditorSiteHolder.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/part/IMultiPageEditorSiteHolder.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/part/IPageSiteHolder.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/part/IPageSiteHolder.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/part/IPageSiteHolder.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/part/IPageSiteHolder.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/part/NullEditorInput.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/part/NullEditorInput.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/part/NullEditorInput.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/part/NullEditorInput.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/part/StatusPart.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/part/StatusPart.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/part/StatusPart.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/part/StatusPart.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/Base64.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/preferences/Base64.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/Base64.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/preferences/Base64.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/IDynamicPropertyMap.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/preferences/IDynamicPropertyMap.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/IDynamicPropertyMap.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/preferences/IDynamicPropertyMap.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/IPropertyMap.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/preferences/IPropertyMap.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/IPropertyMap.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/preferences/IPropertyMap.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/IPropertyMapListener.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/preferences/IPropertyMapListener.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/IPropertyMapListener.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/preferences/IPropertyMapListener.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/PreferenceTransferElement.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/preferences/PreferenceTransferElement.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/PreferenceTransferElement.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/preferences/PreferenceTransferElement.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/PreferenceTransferManager.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/preferences/PreferenceTransferManager.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/PreferenceTransferManager.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/preferences/PreferenceTransferManager.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/PreferencesSettingsTransfer.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/preferences/PreferencesSettingsTransfer.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/PreferencesSettingsTransfer.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/preferences/PreferencesSettingsTransfer.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/PropertyListenerList.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/preferences/PropertyListenerList.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/PropertyListenerList.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/preferences/PropertyListenerList.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/PropertyMapAdapter.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/preferences/PropertyMapAdapter.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/PropertyMapAdapter.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/preferences/PropertyMapAdapter.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/PropertyMapUnion.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/preferences/PropertyMapUnion.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/PropertyMapUnion.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/preferences/PropertyMapUnion.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/SettingsTransferRegistryReader.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/preferences/SettingsTransferRegistryReader.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/SettingsTransferRegistryReader.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/preferences/SettingsTransferRegistryReader.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/ThemeAdapter.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/preferences/ThemeAdapter.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/ThemeAdapter.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/preferences/ThemeAdapter.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/WorkbenchPreferenceExpressionNode.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/preferences/WorkbenchPreferenceExpressionNode.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/WorkbenchPreferenceExpressionNode.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/preferences/WorkbenchPreferenceExpressionNode.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/WorkbenchPreferenceExtensionNode.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/preferences/WorkbenchPreferenceExtensionNode.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/WorkbenchPreferenceExtensionNode.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/preferences/WorkbenchPreferenceExtensionNode.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/WorkbenchSettingsTransfer.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/preferences/WorkbenchSettingsTransfer.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/WorkbenchSettingsTransfer.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/preferences/WorkbenchSettingsTransfer.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/WorkingCopyPreferences.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/preferences/WorkingCopyPreferences.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/WorkingCopyPreferences.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/preferences/WorkingCopyPreferences.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/WorkingSetPropertyPage.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/preferences/WorkingSetPropertyPage.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/WorkingSetPropertyPage.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/preferences/WorkingSetPropertyPage.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/WorkingSetSettingsTransfer.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/preferences/WorkingSetSettingsTransfer.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/WorkingSetSettingsTransfer.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/preferences/WorkingSetSettingsTransfer.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/AbstractProgressViewer.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/progress/AbstractProgressViewer.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/AbstractProgressViewer.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/progress/AbstractProgressViewer.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/AnimationItem.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/progress/AnimationItem.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/AnimationItem.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/progress/AnimationItem.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/AnimationManager.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/progress/AnimationManager.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/AnimationManager.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/progress/AnimationManager.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/BlockedJobsDialog.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/progress/BlockedJobsDialog.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/BlockedJobsDialog.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/progress/BlockedJobsDialog.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/DetailedProgressViewer.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/progress/DetailedProgressViewer.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/DetailedProgressViewer.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/progress/DetailedProgressViewer.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/FinishedJobs.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/progress/FinishedJobs.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/FinishedJobs.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/progress/FinishedJobs.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/GroupInfo.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/progress/GroupInfo.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/GroupInfo.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/progress/GroupInfo.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/IAnimationProcessor.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/progress/IAnimationProcessor.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/IAnimationProcessor.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/progress/IAnimationProcessor.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/IJobBusyListener.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/progress/IJobBusyListener.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/IJobBusyListener.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/progress/IJobBusyListener.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/IJobProgressManagerListener.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/progress/IJobProgressManagerListener.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/IJobProgressManagerListener.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/progress/IJobProgressManagerListener.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/IProgressUpdateCollector.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/progress/IProgressUpdateCollector.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/IProgressUpdateCollector.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/progress/IProgressUpdateCollector.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/JobInfo.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/progress/JobInfo.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/JobInfo.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/progress/JobInfo.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/JobSnapshot.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/progress/JobSnapshot.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/JobSnapshot.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/progress/JobSnapshot.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/JobTreeElement.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/progress/JobTreeElement.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/JobTreeElement.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/progress/JobTreeElement.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/JobsViewPreferenceDialog.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/progress/JobsViewPreferenceDialog.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/JobsViewPreferenceDialog.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/progress/JobsViewPreferenceDialog.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressAnimationItem.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/progress/ProgressAnimationItem.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressAnimationItem.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/progress/ProgressAnimationItem.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressAnimationProcessor.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/progress/ProgressAnimationProcessor.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressAnimationProcessor.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/progress/ProgressAnimationProcessor.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressCanvasViewer.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/progress/ProgressCanvasViewer.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressCanvasViewer.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/progress/ProgressCanvasViewer.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressContentProvider.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/progress/ProgressContentProvider.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressContentProvider.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/progress/ProgressContentProvider.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressInfoItem.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/progress/ProgressInfoItem.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressInfoItem.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/progress/ProgressInfoItem.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressLabelProvider.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/progress/ProgressLabelProvider.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressLabelProvider.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/progress/ProgressLabelProvider.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressManager.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/progress/ProgressManager.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressManager.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/progress/ProgressManager.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressManagerUtil.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/progress/ProgressManagerUtil.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressManagerUtil.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/progress/ProgressManagerUtil.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressMessages.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/progress/ProgressMessages.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressMessages.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/progress/ProgressMessages.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressMonitorFocusJobDialog.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/progress/ProgressMonitorFocusJobDialog.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressMonitorFocusJobDialog.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/progress/ProgressMonitorFocusJobDialog.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressMonitorJobsDialog.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/progress/ProgressMonitorJobsDialog.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressMonitorJobsDialog.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/progress/ProgressMonitorJobsDialog.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressRegion.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/progress/ProgressRegion.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressRegion.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/progress/ProgressRegion.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressView.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/progress/ProgressView.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressView.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/progress/ProgressView.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressViewUpdater.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/progress/ProgressViewUpdater.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressViewUpdater.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/progress/ProgressViewUpdater.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressViewerContentProvider.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/progress/ProgressViewerContentProvider.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressViewerContentProvider.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/progress/ProgressViewerContentProvider.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressViewerLabelProvider.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/progress/ProgressViewerLabelProvider.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressViewerLabelProvider.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/progress/ProgressViewerLabelProvider.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/StatusAdapterHelper.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/progress/StatusAdapterHelper.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/StatusAdapterHelper.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/progress/StatusAdapterHelper.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/SubTaskInfo.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/progress/SubTaskInfo.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/SubTaskInfo.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/progress/SubTaskInfo.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/TaskBarProgressManager.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/progress/TaskBarProgressManager.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/TaskBarProgressManager.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/progress/TaskBarProgressManager.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/TaskInfo.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/progress/TaskInfo.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/TaskInfo.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/progress/TaskInfo.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/WorkbenchSiteProgressService.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/progress/WorkbenchSiteProgressService.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/WorkbenchSiteProgressService.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/progress/WorkbenchSiteProgressService.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/messages.properties b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/progress/messages.properties
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/messages.properties
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/progress/messages.properties
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/provisional/application/IActionBarConfigurer2.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/provisional/application/IActionBarConfigurer2.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/provisional/application/IActionBarConfigurer2.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/provisional/application/IActionBarConfigurer2.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/CamelUtil.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/quickaccess/CamelUtil.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/CamelUtil.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/quickaccess/CamelUtil.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/PreviousPicksProvider.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/quickaccess/PreviousPicksProvider.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/PreviousPicksProvider.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/quickaccess/PreviousPicksProvider.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/QuickAccessContents.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/quickaccess/QuickAccessContents.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/QuickAccessContents.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/quickaccess/QuickAccessContents.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/QuickAccessDialog.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/quickaccess/QuickAccessDialog.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/QuickAccessDialog.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/quickaccess/QuickAccessDialog.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/QuickAccessEntry.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/quickaccess/QuickAccessEntry.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/QuickAccessEntry.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/quickaccess/QuickAccessEntry.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/QuickAccessExtensionManager.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/quickaccess/QuickAccessExtensionManager.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/QuickAccessExtensionManager.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/quickaccess/QuickAccessExtensionManager.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/QuickAccessHandler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/quickaccess/QuickAccessHandler.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/QuickAccessHandler.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/quickaccess/QuickAccessHandler.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/QuickAccessMatcher.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/quickaccess/QuickAccessMatcher.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/QuickAccessMatcher.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/quickaccess/QuickAccessMatcher.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/QuickAccessMessages.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/quickaccess/QuickAccessMessages.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/QuickAccessMessages.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/quickaccess/QuickAccessMessages.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/QuickAccessProvider.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/quickaccess/QuickAccessProvider.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/QuickAccessProvider.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/quickaccess/QuickAccessProvider.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/SearchField.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/quickaccess/SearchField.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/SearchField.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/quickaccess/SearchField.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/messages.properties b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/quickaccess/messages.properties
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/messages.properties
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/quickaccess/messages.properties
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/providers/ActionElement.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/quickaccess/providers/ActionElement.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/providers/ActionElement.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/quickaccess/providers/ActionElement.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/providers/ActionProvider.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/quickaccess/providers/ActionProvider.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/providers/ActionProvider.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/quickaccess/providers/ActionProvider.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/providers/CommandElement.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/quickaccess/providers/CommandElement.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/providers/CommandElement.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/quickaccess/providers/CommandElement.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/providers/CommandProvider.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/quickaccess/providers/CommandProvider.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/providers/CommandProvider.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/quickaccess/providers/CommandProvider.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/providers/EditorElement.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/quickaccess/providers/EditorElement.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/providers/EditorElement.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/quickaccess/providers/EditorElement.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/providers/EditorProvider.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/quickaccess/providers/EditorProvider.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/providers/EditorProvider.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/quickaccess/providers/EditorProvider.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/providers/HelpSearchElement.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/quickaccess/providers/HelpSearchElement.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/providers/HelpSearchElement.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/quickaccess/providers/HelpSearchElement.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/providers/HelpSearchProvider.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/quickaccess/providers/HelpSearchProvider.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/providers/HelpSearchProvider.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/quickaccess/providers/HelpSearchProvider.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/providers/PerspectiveElement.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/quickaccess/providers/PerspectiveElement.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/providers/PerspectiveElement.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/quickaccess/providers/PerspectiveElement.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/providers/PerspectiveProvider.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/quickaccess/providers/PerspectiveProvider.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/providers/PerspectiveProvider.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/quickaccess/providers/PerspectiveProvider.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/providers/PreferenceElement.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/quickaccess/providers/PreferenceElement.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/providers/PreferenceElement.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/quickaccess/providers/PreferenceElement.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/providers/PreferenceProvider.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/quickaccess/providers/PreferenceProvider.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/providers/PreferenceProvider.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/quickaccess/providers/PreferenceProvider.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/providers/PropertiesElement.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/quickaccess/providers/PropertiesElement.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/providers/PropertiesElement.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/quickaccess/providers/PropertiesElement.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/providers/PropertiesProvider.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/quickaccess/providers/PropertiesProvider.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/providers/PropertiesProvider.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/quickaccess/providers/PropertiesProvider.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/providers/ViewElement.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/quickaccess/providers/ViewElement.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/providers/ViewElement.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/quickaccess/providers/ViewElement.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/providers/ViewProvider.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/quickaccess/providers/ViewProvider.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/providers/ViewProvider.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/quickaccess/providers/ViewProvider.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/providers/WizardElement.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/quickaccess/providers/WizardElement.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/providers/WizardElement.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/quickaccess/providers/WizardElement.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/providers/WizardProvider.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/quickaccess/providers/WizardProvider.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/providers/WizardProvider.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/quickaccess/providers/WizardProvider.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/ActionSetDescriptor.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/registry/ActionSetDescriptor.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/ActionSetDescriptor.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/registry/ActionSetDescriptor.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/ActionSetRegistry.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/registry/ActionSetRegistry.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/ActionSetRegistry.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/registry/ActionSetRegistry.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/CategorizedPageRegistryReader.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/registry/CategorizedPageRegistryReader.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/CategorizedPageRegistryReader.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/registry/CategorizedPageRegistryReader.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/Category.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/registry/Category.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/Category.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/registry/Category.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/EditorDescriptor.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/registry/EditorDescriptor.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/EditorDescriptor.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/registry/EditorDescriptor.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/EditorRegistry.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/registry/EditorRegistry.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/EditorRegistry.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/registry/EditorRegistry.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/EditorRegistryReader.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/registry/EditorRegistryReader.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/EditorRegistryReader.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/registry/EditorRegistryReader.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/FileEditorMapping.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/registry/FileEditorMapping.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/FileEditorMapping.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/registry/FileEditorMapping.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/IActionSet.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/registry/IActionSet.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/IActionSet.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/registry/IActionSet.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/IActionSetDescriptor.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/registry/IActionSetDescriptor.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/IActionSetDescriptor.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/registry/IActionSetDescriptor.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/IWorkbenchRegistryConstants.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/registry/IWorkbenchRegistryConstants.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/IWorkbenchRegistryConstants.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/registry/IWorkbenchRegistryConstants.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/ImportExportPespectiveHandler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/registry/ImportExportPespectiveHandler.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/ImportExportPespectiveHandler.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/registry/ImportExportPespectiveHandler.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/KeywordRegistry.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/registry/KeywordRegistry.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/KeywordRegistry.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/registry/KeywordRegistry.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/PerspectiveDescriptor.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/registry/PerspectiveDescriptor.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/PerspectiveDescriptor.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/registry/PerspectiveDescriptor.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/PerspectiveParameterValues.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/registry/PerspectiveParameterValues.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/PerspectiveParameterValues.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/registry/PerspectiveParameterValues.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/PerspectiveRegistry.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/registry/PerspectiveRegistry.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/PerspectiveRegistry.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/registry/PerspectiveRegistry.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/PreferencePageParameterValues.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/registry/PreferencePageParameterValues.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/PreferencePageParameterValues.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/registry/PreferencePageParameterValues.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/PreferencePageRegistryReader.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/registry/PreferencePageRegistryReader.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/PreferencePageRegistryReader.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/registry/PreferencePageRegistryReader.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/PreferenceTransferRegistryReader.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/registry/PreferenceTransferRegistryReader.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/PreferenceTransferRegistryReader.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/registry/PreferenceTransferRegistryReader.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/PropertyPagesRegistryReader.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/registry/PropertyPagesRegistryReader.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/PropertyPagesRegistryReader.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/registry/PropertyPagesRegistryReader.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/RegistryReader.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/registry/RegistryReader.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/RegistryReader.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/registry/RegistryReader.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/StickyViewDescriptor.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/registry/StickyViewDescriptor.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/StickyViewDescriptor.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/registry/StickyViewDescriptor.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/ViewCategory.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/registry/ViewCategory.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/ViewCategory.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/registry/ViewCategory.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/ViewDescriptor.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/registry/ViewDescriptor.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/ViewDescriptor.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/registry/ViewDescriptor.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/ViewParameterValues.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/registry/ViewParameterValues.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/ViewParameterValues.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/registry/ViewParameterValues.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/ViewRegistry.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/registry/ViewRegistry.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/ViewRegistry.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/registry/ViewRegistry.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/WizardParameterValues.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/registry/WizardParameterValues.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/WizardParameterValues.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/registry/WizardParameterValues.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/WizardsRegistryReader.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/registry/WizardsRegistryReader.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/WizardsRegistryReader.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/registry/WizardsRegistryReader.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/WorkingSetDescriptor.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/registry/WorkingSetDescriptor.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/WorkingSetDescriptor.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/registry/WorkingSetDescriptor.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/WorkingSetRegistry.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/registry/WorkingSetRegistry.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/WorkingSetRegistry.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/registry/WorkingSetRegistry.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/WorkingSetRegistryReader.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/registry/WorkingSetRegistryReader.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/WorkingSetRegistryReader.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/registry/WorkingSetRegistryReader.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/ActionSetSourceProvider.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/services/ActionSetSourceProvider.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/ActionSetSourceProvider.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/services/ActionSetSourceProvider.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/EvaluationReference.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/services/EvaluationReference.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/EvaluationReference.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/services/EvaluationReference.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/EvaluationResultCache.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/services/EvaluationResultCache.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/EvaluationResultCache.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/services/EvaluationResultCache.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/EvaluationService.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/services/EvaluationService.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/EvaluationService.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/services/EvaluationService.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/EvaluationServiceFactory.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/services/EvaluationServiceFactory.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/EvaluationServiceFactory.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/services/EvaluationServiceFactory.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/ExpressionAuthority.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/services/ExpressionAuthority.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/ExpressionAuthority.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/services/ExpressionAuthority.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/IEvaluationResultCache.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/services/IEvaluationResultCache.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/IEvaluationResultCache.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/services/IEvaluationResultCache.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/INestable.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/services/INestable.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/INestable.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/services/INestable.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/IServiceLocatorCreator.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/services/IServiceLocatorCreator.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/IServiceLocatorCreator.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/services/IServiceLocatorCreator.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/IWorkbenchLocationService.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/services/IWorkbenchLocationService.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/IWorkbenchLocationService.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/services/IWorkbenchLocationService.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/LogThrottle.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/services/LogThrottle.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/LogThrottle.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/services/LogThrottle.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/MenuSourceProvider.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/services/MenuSourceProvider.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/MenuSourceProvider.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/services/MenuSourceProvider.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/PreferencePersistence.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/services/PreferencePersistence.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/PreferencePersistence.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/services/PreferencePersistence.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/RegistryPersistence.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/services/RegistryPersistence.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/RegistryPersistence.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/services/RegistryPersistence.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/ServiceLocator.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/services/ServiceLocator.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/ServiceLocator.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/services/ServiceLocator.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/ServiceLocatorCreator.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/services/ServiceLocatorCreator.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/ServiceLocatorCreator.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/services/ServiceLocatorCreator.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/SlaveEvaluationService.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/services/SlaveEvaluationService.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/SlaveEvaluationService.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/services/SlaveEvaluationService.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/SourcePriorityNameMapping.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/services/SourcePriorityNameMapping.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/SourcePriorityNameMapping.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/services/SourcePriorityNameMapping.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/SourceProviderService.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/services/SourceProviderService.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/SourceProviderService.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/services/SourceProviderService.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/WorkbenchLocationService.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/services/WorkbenchLocationService.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/WorkbenchLocationService.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/services/WorkbenchLocationService.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/WorkbenchServiceRegistry.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/services/WorkbenchServiceRegistry.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/WorkbenchServiceRegistry.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/services/WorkbenchServiceRegistry.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/WorkbenchSourceProvider.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/services/WorkbenchSourceProvider.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/WorkbenchSourceProvider.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/services/WorkbenchSourceProvider.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/splash/EclipseSplashHandler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/splash/EclipseSplashHandler.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/splash/EclipseSplashHandler.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/splash/EclipseSplashHandler.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/splash/SplashHandlerFactory.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/splash/SplashHandlerFactory.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/splash/SplashHandlerFactory.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/splash/SplashHandlerFactory.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/statushandlers/DefaultDetailsArea.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/statushandlers/DefaultDetailsArea.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/statushandlers/DefaultDetailsArea.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/statushandlers/DefaultDetailsArea.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/statushandlers/DetailsAreaManager.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/statushandlers/DetailsAreaManager.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/statushandlers/DetailsAreaManager.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/statushandlers/DetailsAreaManager.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/statushandlers/IStatusDialogConstants.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/statushandlers/IStatusDialogConstants.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/statushandlers/IStatusDialogConstants.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/statushandlers/IStatusDialogConstants.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/statushandlers/InternalDialog.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/statushandlers/InternalDialog.java
similarity index 99%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/statushandlers/InternalDialog.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/statushandlers/InternalDialog.java
index c7a7560de45..fbd51b76f40 100644
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/statushandlers/InternalDialog.java
+++ b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/statushandlers/InternalDialog.java
@@ -239,7 +239,7 @@ private void createTitleArea(Composite parent) {
titleImageLabel.setLayoutData(layoutData);
GridData messageData = new GridData(SWT.FILL, SWT.FILL, true, true);
- messageData.widthHint = convertWidthInCharsToPixels(50);
+ messageData.widthHint = convertWidthInCharsToPixels(70);
mainMessageLabel = new Label(titleArea, SWT.WRAP);
mainMessageLabel.setLayoutData(messageData);
// main message set up early, to address bug 222391
@@ -602,7 +602,7 @@ private Composite createSingleStatusDisplayArea(Composite parent) {
// label that wraps
singleStatusLabel = new Label(singleStatusParent, SWT.WRAP);
GridData labelLayoutData = new GridData(SWT.FILL, SWT.FILL, true, true);
- labelLayoutData.widthHint = convertWidthInCharsToPixels(50);
+ labelLayoutData.widthHint = convertWidthInCharsToPixels(70);
singleStatusLabel.setLayoutData(labelLayoutData);
// main message set up early, to address bug 222391
singleStatusLabel.setText(getLabelProviderWrapper().getColumnText(getCurrentStatusAdapter(), 0));
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/statushandlers/LabelProviderWrapper.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/statushandlers/LabelProviderWrapper.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/statushandlers/LabelProviderWrapper.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/statushandlers/LabelProviderWrapper.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/statushandlers/StackTraceSupportArea.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/statushandlers/StackTraceSupportArea.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/statushandlers/StackTraceSupportArea.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/statushandlers/StackTraceSupportArea.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/statushandlers/StatusHandlerDescriptor.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/statushandlers/StatusHandlerDescriptor.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/statushandlers/StatusHandlerDescriptor.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/statushandlers/StatusHandlerDescriptor.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/statushandlers/StatusHandlerDescriptorsMap.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/statushandlers/StatusHandlerDescriptorsMap.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/statushandlers/StatusHandlerDescriptorsMap.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/statushandlers/StatusHandlerDescriptorsMap.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/statushandlers/StatusHandlerProductBindingDescriptor.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/statushandlers/StatusHandlerProductBindingDescriptor.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/statushandlers/StatusHandlerProductBindingDescriptor.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/statushandlers/StatusHandlerProductBindingDescriptor.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/statushandlers/StatusHandlerRegistry.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/statushandlers/StatusHandlerRegistry.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/statushandlers/StatusHandlerRegistry.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/statushandlers/StatusHandlerRegistry.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/statushandlers/SupportTray.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/statushandlers/SupportTray.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/statushandlers/SupportTray.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/statushandlers/SupportTray.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/statushandlers/WorkbenchStatusDialogManagerImpl.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/statushandlers/WorkbenchStatusDialogManagerImpl.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/statushandlers/WorkbenchStatusDialogManagerImpl.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/statushandlers/WorkbenchStatusDialogManagerImpl.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/statushandlers/package.html b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/statushandlers/package.html
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/statushandlers/package.html
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/statushandlers/package.html
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/testing/ContributionInfoMessages.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/testing/ContributionInfoMessages.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/testing/ContributionInfoMessages.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/testing/ContributionInfoMessages.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/testing/PluginContributionAdapterFactory.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/testing/PluginContributionAdapterFactory.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/testing/PluginContributionAdapterFactory.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/testing/PluginContributionAdapterFactory.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/testing/WorkbenchPartTestable.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/testing/WorkbenchPartTestable.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/testing/WorkbenchPartTestable.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/testing/WorkbenchPartTestable.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/testing/WorkbenchTestable.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/testing/WorkbenchTestable.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/testing/WorkbenchTestable.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/testing/WorkbenchTestable.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/testing/messages.properties b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/testing/messages.properties
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/testing/messages.properties
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/testing/messages.properties
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/CascadingColorRegistry.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/themes/CascadingColorRegistry.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/CascadingColorRegistry.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/themes/CascadingColorRegistry.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/CascadingFontRegistry.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/themes/CascadingFontRegistry.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/CascadingFontRegistry.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/themes/CascadingFontRegistry.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/CascadingMap.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/themes/CascadingMap.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/CascadingMap.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/themes/CascadingMap.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/CascadingTheme.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/themes/CascadingTheme.java
similarity index 98%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/CascadingTheme.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/themes/CascadingTheme.java
index a7bd34e6a9c..4eeb85dcb26 100755
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/CascadingTheme.java
+++ b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/themes/CascadingTheme.java
@@ -102,7 +102,7 @@ public boolean getBoolean(String key) {
}
@Override
- public Set keySet() {
+ public Set keySet() {
return currentTheme.keySet();
}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/ColorAndFontProviderImpl.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/themes/ColorAndFontProviderImpl.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/ColorAndFontProviderImpl.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/themes/ColorAndFontProviderImpl.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/ColorDefinition.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/themes/ColorDefinition.java
similarity index 98%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/ColorDefinition.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/themes/ColorDefinition.java
index 3a5fcb2b7a8..35e00089bc6 100644
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/ColorDefinition.java
+++ b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/themes/ColorDefinition.java
@@ -155,4 +155,10 @@ public void setValue(RGB data) {
appendState(State.OVERRIDDEN);
}
}
+
+ @Override
+ public void setEditable(Boolean editable) {
+ isEditable = editable;
+ }
+
}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/ColorsAndFontsPreferencePage.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/themes/ColorsAndFontsPreferencePage.java
similarity index 97%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/ColorsAndFontsPreferencePage.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/themes/ColorsAndFontsPreferencePage.java
index 347449f2ac0..a6f6680a8d9 100644
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/ColorsAndFontsPreferencePage.java
+++ b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/themes/ColorsAndFontsPreferencePage.java
@@ -35,8 +35,10 @@
import org.eclipse.core.runtime.IStatus;
import org.eclipse.e4.core.services.events.IEventBroker;
import org.eclipse.e4.ui.css.swt.theme.IThemeEngine;
+import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.preference.PreferenceConverter;
import org.eclipse.jface.preference.PreferencePage;
+import org.eclipse.jface.resource.DataFormatException;
import org.eclipse.jface.resource.JFaceResources;
import org.eclipse.jface.resource.StringConverter;
import org.eclipse.jface.util.IPropertyChangeListener;
@@ -87,6 +89,7 @@
import org.eclipse.ui.internal.WorkbenchPlugin;
import org.eclipse.ui.internal.misc.StatusUtil;
import org.eclipse.ui.internal.util.PrefUtil;
+import org.eclipse.ui.themes.ColorUtil;
import org.eclipse.ui.themes.ITheme;
import org.eclipse.ui.themes.IThemeManager;
import org.eclipse.ui.themes.IThemePreview;
@@ -331,9 +334,20 @@ private class PresentationLabelProvider extends LabelProvider implements IFontPr
private int usableImageSize = -1;
+ private static final int REFRESH_INTERVAL_IN_MS = 300;
+
+ private final Runnable updateControlsAndRefreshTreeRunnable = () -> {
+ if (fontChangeButton == null || fontChangeButton.isDisposed()) {
+ return;
+ }
+ updateControls();
+ tree.getViewer().refresh();
+ };
+
private IPropertyChangeListener listener = event -> {
if (event.getNewValue() != null) {
fireLabelProviderChanged(new LabelProviderChangedEvent(PresentationLabelProvider.this));
+ Display.getDefault().timerExec(REFRESH_INTERVAL_IN_MS, updateControlsAndRefreshTreeRunnable);
} else {
// Some theme definition element has been modified and we
// need to refresh the viewer
@@ -1304,6 +1318,30 @@ private void updateThemeInfo(IThemeManager manager) {
labelProvider.hookListeners(); // rehook the listeners
}
+ private RGB getColorTakingPreferenceDefaultValueIntoAccount(ColorDefinition definition) {
+ final RGB valueFromExtension = definition.getValue();
+ IPreferenceStore store = getPreferenceStore();
+ if (store == null) {
+ return valueFromExtension;
+ }
+ String id = definition.getId();
+ if (id == null || id.isBlank()) {
+ return valueFromExtension;
+ }
+ String storeDefault = store.getDefaultString(id);
+ if (storeDefault == null) {
+ return valueFromExtension;
+ }
+ try {
+ RGB defaultRGB = ColorUtil.getColorValue(storeDefault);
+ if (defaultRGB != null && !defaultRGB.equals(valueFromExtension)) {
+ return defaultRGB;
+ }
+ } catch (DataFormatException e) { // silently ignored
+ }
+ return valueFromExtension;
+ }
+
/**
* Answers whether the definition is currently set to the default value.
*
@@ -1314,23 +1352,29 @@ private void updateThemeInfo(IThemeManager manager) {
*/
private boolean isDefault(ColorDefinition definition) {
String id = definition.getId();
-
if (colorPreferencesToSet.containsKey(definition)) {
if (definition.getValue() != null) { // value-based color
- if (colorPreferencesToSet.get(definition).equals(definition.getValue()))
+ if (colorPreferencesToSet.get(definition)
+ .equals(getColorTakingPreferenceDefaultValueIntoAccount(definition)))
return true;
} else if (colorPreferencesToSet.get(definition).equals(getColorAncestorValue(definition)))
return true;
} else if (colorValuesToSet.containsKey(id)) {
if (definition.getValue() != null) { // value-based color
- if (colorValuesToSet.get(id).equals(definition.getValue()))
+ if (colorValuesToSet.get(id).equals(getColorTakingPreferenceDefaultValueIntoAccount(definition)))
return true;
} else {
if (colorValuesToSet.get(id).equals(getColorAncestorValue(definition)))
return true;
}
} else if (definition.getValue() != null) { // value-based color
- if (getPreferenceStore().isDefault(createPreferenceKey(definition)))
+ IPreferenceStore store = getPreferenceStore();
+ String defaultString = store.getDefaultString(id);
+ String string = store.getString(id);
+ if (defaultString != null && string != null && defaultString.equals(string)) {
+ return true;
+ }
+ if (store.isDefault(createPreferenceKey(definition)))
return true;
} else {
// a descendant is default if it's the same value as its ancestor
@@ -1516,8 +1560,9 @@ private void refreshCategory() {
private boolean resetColor(ColorDefinition definition, boolean force) {
if (force || !isDefault(definition)) {
RGB newRGB;
- if (definition.getValue() != null)
- newRGB = definition.getValue();
+ if (definition.getValue() != null) {
+ newRGB = getColorTakingPreferenceDefaultValueIntoAccount(definition);
+ }
else
newRGB = getColorAncestorValue(definition);
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/ColorsAndFontsPreferencePage.properties b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/themes/ColorsAndFontsPreferencePage.properties
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/ColorsAndFontsPreferencePage.properties
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/themes/ColorsAndFontsPreferencePage.properties
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/FontDefinition.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/themes/FontDefinition.java
similarity index 97%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/FontDefinition.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/themes/FontDefinition.java
index 71c92d402a8..a1d1b077198 100644
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/FontDefinition.java
+++ b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/themes/FontDefinition.java
@@ -138,4 +138,10 @@ public void setValue(FontData[] data) {
appendState(State.OVERRIDDEN);
}
}
+
+ @Override
+ public void setEditable(Boolean editable) {
+ isEditable = editable;
+ }
+
}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/ICategorizedThemeElementDefinition.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/themes/ICategorizedThemeElementDefinition.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/ICategorizedThemeElementDefinition.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/themes/ICategorizedThemeElementDefinition.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/IEditable.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/themes/IEditable.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/IEditable.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/themes/IEditable.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/IHierarchalThemeElementDefinition.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/themes/IHierarchalThemeElementDefinition.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/IHierarchalThemeElementDefinition.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/themes/IHierarchalThemeElementDefinition.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/IThemeDescriptor.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/themes/IThemeDescriptor.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/IThemeDescriptor.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/themes/IThemeDescriptor.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/IThemeElementDefinition.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/themes/IThemeElementDefinition.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/IThemeElementDefinition.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/themes/IThemeElementDefinition.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/IThemeRegistry.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/themes/IThemeRegistry.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/IThemeRegistry.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/themes/IThemeRegistry.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/LightColorFactory.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/themes/LightColorFactory.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/LightColorFactory.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/themes/LightColorFactory.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/RGBBrightnessColorFactory.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/themes/RGBBrightnessColorFactory.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/RGBBrightnessColorFactory.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/themes/RGBBrightnessColorFactory.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/RGBContrastFactory.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/themes/RGBContrastFactory.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/RGBContrastFactory.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/themes/RGBContrastFactory.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/RGBInfoColorFactory.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/themes/RGBInfoColorFactory.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/RGBInfoColorFactory.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/themes/RGBInfoColorFactory.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/RGBVisibleContrastColorFactory.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/themes/RGBVisibleContrastColorFactory.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/RGBVisibleContrastColorFactory.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/themes/RGBVisibleContrastColorFactory.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/Theme.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/themes/Theme.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/Theme.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/themes/Theme.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/Theme.properties b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/themes/Theme.properties
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/Theme.properties
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/themes/Theme.properties
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/ThemeDescriptor.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/themes/ThemeDescriptor.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/ThemeDescriptor.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/themes/ThemeDescriptor.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/ThemeElementCategory.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/themes/ThemeElementCategory.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/ThemeElementCategory.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/themes/ThemeElementCategory.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/ThemeElementDefinition.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/themes/ThemeElementDefinition.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/ThemeElementDefinition.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/themes/ThemeElementDefinition.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/ThemeElementHelper.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/themes/ThemeElementHelper.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/ThemeElementHelper.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/themes/ThemeElementHelper.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/ThemeRegistry.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/themes/ThemeRegistry.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/ThemeRegistry.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/themes/ThemeRegistry.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/ThemeRegistryReader.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/themes/ThemeRegistryReader.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/ThemeRegistryReader.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/themes/ThemeRegistryReader.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/ThemeRegistryReader.properties b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/themes/ThemeRegistryReader.properties
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/ThemeRegistryReader.properties
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/themes/ThemeRegistryReader.properties
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/ThemesExtension.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/themes/ThemesExtension.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/ThemesExtension.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/themes/ThemesExtension.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/WorkbenchPreview.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/themes/WorkbenchPreview.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/WorkbenchPreview.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/themes/WorkbenchPreview.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/WorkbenchThemeManager.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/themes/WorkbenchThemeManager.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/WorkbenchThemeManager.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/themes/WorkbenchThemeManager.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/tweaklets/DummyTitlePathUpdater.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/tweaklets/DummyTitlePathUpdater.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/tweaklets/DummyTitlePathUpdater.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/tweaklets/DummyTitlePathUpdater.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/tweaklets/InterceptContributions.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/tweaklets/InterceptContributions.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/tweaklets/InterceptContributions.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/tweaklets/InterceptContributions.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/tweaklets/TabBehaviour.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/tweaklets/TabBehaviour.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/tweaklets/TabBehaviour.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/tweaklets/TabBehaviour.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/tweaklets/TabBehaviourMRU.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/tweaklets/TabBehaviourMRU.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/tweaklets/TabBehaviourMRU.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/tweaklets/TabBehaviourMRU.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/tweaklets/TitlePathUpdater.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/tweaklets/TitlePathUpdater.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/tweaklets/TitlePathUpdater.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/tweaklets/TitlePathUpdater.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/tweaklets/Tweaklets.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/tweaklets/Tweaklets.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/tweaklets/Tweaklets.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/tweaklets/Tweaklets.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/util/BundleUtility.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/util/BundleUtility.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/util/BundleUtility.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/util/BundleUtility.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/util/ConfigurationElementMemento.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/util/ConfigurationElementMemento.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/util/ConfigurationElementMemento.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/util/ConfigurationElementMemento.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/util/Descriptors.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/util/Descriptors.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/util/Descriptors.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/util/Descriptors.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/util/ImageSupport.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/util/ImageSupport.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/util/ImageSupport.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/util/ImageSupport.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/util/PrefUtil.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/util/PrefUtil.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/util/PrefUtil.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/util/PrefUtil.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/util/Util.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/util/Util.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/util/Util.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/util/Util.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/wizards/AbstractExtensionWizardRegistry.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/wizards/AbstractExtensionWizardRegistry.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/wizards/AbstractExtensionWizardRegistry.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/wizards/AbstractExtensionWizardRegistry.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/wizards/AbstractWizardRegistry.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/wizards/AbstractWizardRegistry.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/wizards/AbstractWizardRegistry.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/wizards/AbstractWizardRegistry.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/wizards/ExportWizardRegistry.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/wizards/ExportWizardRegistry.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/wizards/ExportWizardRegistry.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/wizards/ExportWizardRegistry.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/wizards/ImportWizardRegistry.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/wizards/ImportWizardRegistry.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/wizards/ImportWizardRegistry.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/wizards/ImportWizardRegistry.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/wizards/NewWizardRegistry.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/wizards/NewWizardRegistry.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/wizards/NewWizardRegistry.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/wizards/NewWizardRegistry.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/wizards/preferences/PreferencesContentProvider.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/wizards/preferences/PreferencesContentProvider.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/wizards/preferences/PreferencesContentProvider.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/wizards/preferences/PreferencesContentProvider.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/wizards/preferences/PreferencesExportWizard.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/wizards/preferences/PreferencesExportWizard.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/wizards/preferences/PreferencesExportWizard.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/wizards/preferences/PreferencesExportWizard.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/wizards/preferences/PreferencesImportWizard.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/wizards/preferences/PreferencesImportWizard.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/wizards/preferences/PreferencesImportWizard.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/wizards/preferences/PreferencesImportWizard.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/wizards/preferences/PreferencesMessages.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/wizards/preferences/PreferencesMessages.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/wizards/preferences/PreferencesMessages.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/wizards/preferences/PreferencesMessages.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/wizards/preferences/WizardPreferencesExportPage1.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/wizards/preferences/WizardPreferencesExportPage1.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/wizards/preferences/WizardPreferencesExportPage1.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/wizards/preferences/WizardPreferencesExportPage1.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/wizards/preferences/WizardPreferencesImportPage1.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/wizards/preferences/WizardPreferencesImportPage1.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/wizards/preferences/WizardPreferencesImportPage1.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/wizards/preferences/WizardPreferencesImportPage1.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/wizards/preferences/WizardPreferencesPage.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/wizards/preferences/WizardPreferencesPage.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/wizards/preferences/WizardPreferencesPage.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/wizards/preferences/WizardPreferencesPage.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/wizards/preferences/messages.properties b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/wizards/preferences/messages.properties
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/wizards/preferences/messages.properties
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/wizards/preferences/messages.properties
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/intro/IIntroManager.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/intro/IIntroManager.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/intro/IIntroManager.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/intro/IIntroManager.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/intro/IIntroPart.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/intro/IIntroPart.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/intro/IIntroPart.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/intro/IIntroPart.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/intro/IIntroSite.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/intro/IIntroSite.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/intro/IIntroSite.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/intro/IIntroSite.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/intro/IntroContentDetector.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/intro/IntroContentDetector.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/intro/IntroContentDetector.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/intro/IntroContentDetector.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/intro/package.html b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/intro/package.html
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/intro/package.html
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/intro/package.html
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/keys/CharacterKey.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/keys/CharacterKey.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/keys/CharacterKey.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/keys/CharacterKey.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/keys/IBindingService.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/keys/IBindingService.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/keys/IBindingService.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/keys/IBindingService.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/keys/IKeyFormatter.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/keys/IKeyFormatter.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/keys/IKeyFormatter.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/keys/IKeyFormatter.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/keys/Key.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/keys/Key.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/keys/Key.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/keys/Key.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/keys/KeyFormatterFactory.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/keys/KeyFormatterFactory.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/keys/KeyFormatterFactory.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/keys/KeyFormatterFactory.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/keys/KeySequence.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/keys/KeySequence.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/keys/KeySequence.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/keys/KeySequence.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/keys/KeyStroke.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/keys/KeyStroke.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/keys/KeyStroke.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/keys/KeyStroke.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/keys/ModifierKey.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/keys/ModifierKey.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/keys/ModifierKey.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/keys/ModifierKey.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/keys/NaturalKey.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/keys/NaturalKey.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/keys/NaturalKey.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/keys/NaturalKey.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/keys/ParseException.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/keys/ParseException.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/keys/ParseException.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/keys/ParseException.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/keys/SWTKeySupport.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/keys/SWTKeySupport.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/keys/SWTKeySupport.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/keys/SWTKeySupport.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/keys/SpecialKey.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/keys/SpecialKey.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/keys/SpecialKey.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/keys/SpecialKey.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/keys/package.html b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/keys/package.html
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/keys/package.html
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/keys/package.html
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/AbstractContributionFactory.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/menus/AbstractContributionFactory.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/AbstractContributionFactory.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/menus/AbstractContributionFactory.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/AbstractWorkbenchTrimWidget.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/menus/AbstractWorkbenchTrimWidget.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/AbstractWorkbenchTrimWidget.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/menus/AbstractWorkbenchTrimWidget.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/CommandContributionItem.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/menus/CommandContributionItem.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/CommandContributionItem.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/menus/CommandContributionItem.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/CommandContributionItemParameter.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/menus/CommandContributionItemParameter.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/CommandContributionItemParameter.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/menus/CommandContributionItemParameter.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/ExtensionContributionFactory.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/menus/ExtensionContributionFactory.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/ExtensionContributionFactory.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/menus/ExtensionContributionFactory.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/IContributionRoot.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/menus/IContributionRoot.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/IContributionRoot.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/menus/IContributionRoot.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/IMenuService.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/menus/IMenuService.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/IMenuService.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/menus/IMenuService.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/IWorkbenchContribution.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/menus/IWorkbenchContribution.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/IWorkbenchContribution.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/menus/IWorkbenchContribution.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/IWorkbenchWidget.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/menus/IWorkbenchWidget.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/IWorkbenchWidget.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/menus/IWorkbenchWidget.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/MenuUtil.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/menus/MenuUtil.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/MenuUtil.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/menus/MenuUtil.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/UIElement.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/menus/UIElement.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/UIElement.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/menus/UIElement.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/WorkbenchWindowControlContribution.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/menus/WorkbenchWindowControlContribution.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/WorkbenchWindowControlContribution.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/menus/WorkbenchWindowControlContribution.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/package.html b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/menus/package.html
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/package.html
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/menus/package.html
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/model/AdaptableList.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/model/AdaptableList.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/model/AdaptableList.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/model/AdaptableList.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/model/BaseWorkbenchContentProvider.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/model/BaseWorkbenchContentProvider.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/model/BaseWorkbenchContentProvider.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/model/BaseWorkbenchContentProvider.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/model/ContributionComparator.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/model/ContributionComparator.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/model/ContributionComparator.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/model/ContributionComparator.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/model/IComparableContribution.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/model/IComparableContribution.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/model/IComparableContribution.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/model/IComparableContribution.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/model/IContributionService.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/model/IContributionService.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/model/IContributionService.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/model/IContributionService.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/model/IWorkbenchAdapter.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/model/IWorkbenchAdapter.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/model/IWorkbenchAdapter.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/model/IWorkbenchAdapter.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/model/IWorkbenchAdapter2.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/model/IWorkbenchAdapter2.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/model/IWorkbenchAdapter2.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/model/IWorkbenchAdapter2.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/model/IWorkbenchAdapter3.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/model/IWorkbenchAdapter3.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/model/IWorkbenchAdapter3.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/model/IWorkbenchAdapter3.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/model/PerspectiveLabelProvider.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/model/PerspectiveLabelProvider.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/model/PerspectiveLabelProvider.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/model/PerspectiveLabelProvider.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/model/WorkbenchAdapter.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/model/WorkbenchAdapter.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/model/WorkbenchAdapter.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/model/WorkbenchAdapter.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/model/WorkbenchLabelProvider.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/model/WorkbenchLabelProvider.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/model/WorkbenchLabelProvider.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/model/WorkbenchLabelProvider.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/model/WorkbenchPartLabelProvider.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/model/WorkbenchPartLabelProvider.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/model/WorkbenchPartLabelProvider.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/model/WorkbenchPartLabelProvider.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/model/WorkbenchViewerComparator.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/model/WorkbenchViewerComparator.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/model/WorkbenchViewerComparator.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/model/WorkbenchViewerComparator.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/model/WorkbenchViewerSorter.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/model/WorkbenchViewerSorter.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/model/WorkbenchViewerSorter.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/model/WorkbenchViewerSorter.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/model/package.html b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/model/package.html
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/model/package.html
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/model/package.html
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/operations/IWorkbenchOperationSupport.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/operations/IWorkbenchOperationSupport.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/operations/IWorkbenchOperationSupport.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/operations/IWorkbenchOperationSupport.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/operations/LinearUndoViolationUserApprover.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/operations/LinearUndoViolationUserApprover.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/operations/LinearUndoViolationUserApprover.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/operations/LinearUndoViolationUserApprover.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/operations/NonLocalUndoUserApprover.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/operations/NonLocalUndoUserApprover.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/operations/NonLocalUndoUserApprover.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/operations/NonLocalUndoUserApprover.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/operations/OperationHistoryActionHandler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/operations/OperationHistoryActionHandler.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/operations/OperationHistoryActionHandler.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/operations/OperationHistoryActionHandler.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/operations/RedoActionHandler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/operations/RedoActionHandler.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/operations/RedoActionHandler.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/operations/RedoActionHandler.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/operations/UndoActionHandler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/operations/UndoActionHandler.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/operations/UndoActionHandler.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/operations/UndoActionHandler.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/operations/UndoRedoActionGroup.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/operations/UndoRedoActionGroup.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/operations/UndoRedoActionGroup.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/operations/UndoRedoActionGroup.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/operations/package.html b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/operations/package.html
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/operations/package.html
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/operations/package.html
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/package.html b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/package.html
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/package.html
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/package.html
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/AbstractMultiEditor.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/AbstractMultiEditor.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/AbstractMultiEditor.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/AbstractMultiEditor.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/CellEditorActionHandler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/CellEditorActionHandler.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/CellEditorActionHandler.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/CellEditorActionHandler.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/CoolItemGroupMarker.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/CoolItemGroupMarker.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/CoolItemGroupMarker.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/CoolItemGroupMarker.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/DrillDownAdapter.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/DrillDownAdapter.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/DrillDownAdapter.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/DrillDownAdapter.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/DrillDownComposite.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/DrillDownComposite.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/DrillDownComposite.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/DrillDownComposite.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/DrillFrame.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/DrillFrame.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/DrillFrame.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/DrillFrame.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/DrillStack.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/DrillStack.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/DrillStack.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/DrillStack.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/EditorActionBarContributor.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/EditorActionBarContributor.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/EditorActionBarContributor.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/EditorActionBarContributor.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/EditorInputTransfer.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/EditorInputTransfer.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/EditorInputTransfer.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/EditorInputTransfer.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/EditorPart.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/EditorPart.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/EditorPart.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/EditorPart.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/IContributedContentsView.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/IContributedContentsView.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/IContributedContentsView.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/IContributedContentsView.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/IDropActionDelegate.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/IDropActionDelegate.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/IDropActionDelegate.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/IDropActionDelegate.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/IPage.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/IPage.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/IPage.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/IPage.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/IPageBookViewPage.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/IPageBookViewPage.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/IPageBookViewPage.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/IPageBookViewPage.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/IPageSite.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/IPageSite.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/IPageSite.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/IPageSite.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/ISetSelectionTarget.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/ISetSelectionTarget.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/ISetSelectionTarget.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/ISetSelectionTarget.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/IShowInSource.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/IShowInSource.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/IShowInSource.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/IShowInSource.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/IShowInTarget.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/IShowInTarget.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/IShowInTarget.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/IShowInTarget.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/IShowInTargetList.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/IShowInTargetList.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/IShowInTargetList.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/IShowInTargetList.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/IWorkbenchPartOrientation.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/IWorkbenchPartOrientation.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/IWorkbenchPartOrientation.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/IWorkbenchPartOrientation.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/IntroPart.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/IntroPart.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/IntroPart.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/IntroPart.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/MessagePage.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/MessagePage.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/MessagePage.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/MessagePage.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/MultiEditor.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/MultiEditor.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/MultiEditor.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/MultiEditor.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/MultiEditorInput.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/MultiEditorInput.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/MultiEditorInput.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/MultiEditorInput.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/MultiPageEditorActionBarContributor.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/MultiPageEditorActionBarContributor.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/MultiPageEditorActionBarContributor.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/MultiPageEditorActionBarContributor.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/MultiPageEditorPart.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/MultiPageEditorPart.java
similarity index 94%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/MultiPageEditorPart.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/MultiPageEditorPart.java
index 68508e010ae..c95a1e2cf97 100644
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/MultiPageEditorPart.java
+++ b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/MultiPageEditorPart.java
@@ -17,6 +17,7 @@
import static org.eclipse.swt.events.SelectionListener.widgetSelectedAdapter;
+import java.beans.PropertyChangeListener;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.core.commands.AbstractHandler;
@@ -32,7 +33,9 @@
import org.eclipse.jface.dialogs.IPageChangeProvider;
import org.eclipse.jface.dialogs.IPageChangedListener;
import org.eclipse.jface.dialogs.PageChangedEvent;
+import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.util.PropertyChangeEvent;
import org.eclipse.jface.util.SafeRunnable;
import org.eclipse.jface.viewers.ISelectionProvider;
import org.eclipse.jface.viewers.SelectionChangedEvent;
@@ -56,6 +59,7 @@
import org.eclipse.ui.IPartService;
import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.IWorkbenchPartSite;
+import org.eclipse.ui.IWorkbenchPreferenceConstants;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.handlers.IHandlerService;
import org.eclipse.ui.internal.PartSite;
@@ -63,6 +67,7 @@
import org.eclipse.ui.internal.misc.Policy;
import org.eclipse.ui.internal.services.INestable;
import org.eclipse.ui.internal.services.IServiceLocatorCreator;
+import org.eclipse.ui.internal.util.PrefUtil;
import org.eclipse.ui.services.IDisposable;
import org.eclipse.ui.services.IServiceLocator;
@@ -149,10 +154,31 @@ public abstract class MultiPageEditorPart extends EditorPart implements IPageCha
private ListenerList pageChangeListeners = new ListenerList<>(ListenerList.IDENTITY);
/**
- * Creates an empty multi-page editor with no pages.
+ * Creates an empty multi-page editor with no pages and registers a
+ * {@link PropertyChangeListener} to listen for changes to the editor's
+ * preference..
*/
protected MultiPageEditorPart() {
super();
+ getAPIPreferenceStore().addPropertyChangeListener(event -> {
+ if (isUpdateRequired(event)) {
+ updateContainer();
+ }
+ });
+ }
+
+ /**
+ * Determines whether an update is required based on a property change event.
+ *
+ * @param event the {@link PropertyChangeEvent} triggered by a change in the
+ * preference store
+ * @since 3.134
+ */
+ protected boolean isUpdateRequired(PropertyChangeEvent event) {
+ if (event.getProperty().equals(IWorkbenchPreferenceConstants.ALIGN_MULTI_PAGE_EDITOR_TABS)) {
+ return true;
+ }
+ return false;
}
/**
@@ -264,7 +290,7 @@ protected CTabFolder createContainer(Composite parent) {
// use SWT.FLAT style so that an extra 1 pixel border is not reserved
// inside the folder
parent.setLayout(new FillLayout());
- final CTabFolder newContainer = new CTabFolder(parent, SWT.BOTTOM | SWT.FLAT);
+ final CTabFolder newContainer = new CTabFolder(parent, getTabStyle() | SWT.FLAT);
newContainer.addSelectionListener(widgetSelectedAdapter(e -> {
int newPageIndex = newContainer.indexOf((CTabItem) e.item);
pageChange(newPageIndex);
@@ -291,6 +317,29 @@ protected CTabFolder createContainer(Composite parent) {
return newContainer;
}
+ /**
+ * Determines the tab style based on user preferences.
+ *
+ * This method retrieves the user preference for aligning multi-page editor tabs
+ * on top or bottom, and returns the corresponding SWT style constant.
+ *
+ *
+ * @return {@code SWT.TOP} if the user prefers tabs to be aligned on top,
+ * {@code SWT.BOTTOM} if the user prefers tabs to be aligned on the
+ * bottom.
+ * @since 3.134
+ */
+ protected int getTabStyle() {
+ return getAPIPreferenceStore().getInt(IWorkbenchPreferenceConstants.ALIGN_MULTI_PAGE_EDITOR_TABS);
+ }
+
+ /**
+ * @since 3.134
+ */
+ protected IPreferenceStore getAPIPreferenceStore() {
+ return PrefUtil.getAPIPreferenceStore();
+ }
+
/**
* Creates a tab item at the given index and places the given control in the new
* item. The item is a CTabItem with no style bits set.
@@ -1230,4 +1279,23 @@ public void run() {
});
}
}
+
+ /**
+ * Updates the tab position of the container in the multi-page editor.
+ *
+ *
+ * This method retrieves the current container and sets the tab position based
+ * on the user preference.
+ *
+ *
+ * @since 3.134
+ */
+ protected void updateContainer() {
+ Composite container = getContainer();
+ if (container instanceof CTabFolder tabFolder) {
+ tabFolder.setTabPosition(getTabStyle());
+ tabFolder.requestLayout();
+ }
+ }
+
}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/MultiPageEditorSite.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/MultiPageEditorSite.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/MultiPageEditorSite.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/MultiPageEditorSite.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/MultiPageSelectionProvider.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/MultiPageSelectionProvider.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/MultiPageSelectionProvider.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/MultiPageSelectionProvider.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/Page.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/Page.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/Page.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/Page.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/PageBook.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/PageBook.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/PageBook.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/PageBook.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/PageBookView.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/PageBookView.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/PageBookView.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/PageBookView.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/PageSite.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/PageSite.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/PageSite.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/PageSite.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/PageSwitcher.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/PageSwitcher.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/PageSwitcher.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/PageSwitcher.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/PluginDropAdapter.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/PluginDropAdapter.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/PluginDropAdapter.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/PluginDropAdapter.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/PluginTransfer.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/PluginTransfer.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/PluginTransfer.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/PluginTransfer.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/PluginTransferData.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/PluginTransferData.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/PluginTransferData.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/PluginTransferData.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/ShowInContext.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/ShowInContext.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/ShowInContext.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/ShowInContext.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/ViewPart.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/ViewPart.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/ViewPart.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/ViewPart.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/WorkbenchPart.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/WorkbenchPart.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/WorkbenchPart.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/WorkbenchPart.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/package.html b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/package.html
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/package.html
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/package.html
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/plugin/AbstractUIPlugin.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/plugin/AbstractUIPlugin.java
similarity index 98%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/plugin/AbstractUIPlugin.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/plugin/AbstractUIPlugin.java
index 114f08384fc..596df8c162e 100644
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/plugin/AbstractUIPlugin.java
+++ b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/plugin/AbstractUIPlugin.java
@@ -269,7 +269,7 @@ public IPreferenceStore getPreferenceStore() {
*
* @return IWorkbench the workbench for this plug-in
*/
- @Deprecated
+ @Deprecated(forRemoval = true, since = "2025-03")
public IWorkbench getWorkbench() {
return PlatformUI.getWorkbench();
}
@@ -297,7 +297,7 @@ public IWorkbench getWorkbench() {
* @deprecated this is only called if the runtime compatibility layer is
* present. See {@link #initializeDefaultPluginPreferences}.
*/
- @Deprecated
+ @Deprecated(forRemoval = true, since = "2025-03")
protected void initializeDefaultPreferences(IPreferenceStore store) {
// spec'ed to do nothing
}
@@ -322,7 +322,7 @@ protected void initializeDefaultPreferences(IPreferenceStore store) {
* @see #initializeDefaultPreferences
* @since 2.0
*/
- @Deprecated
+ @Deprecated(forRemoval = true, since = "2025-03")
@Override
protected void initializeDefaultPluginPreferences() {
// N.B. by the time this method is called, the plug-in has a
@@ -372,7 +372,7 @@ protected void initializeImageRegistry(ImageRegistry reg) {
* @deprecated
* @see PlatformUI#getDialogSettingsProvider(Bundle)
*/
- @Deprecated
+ @Deprecated(forRemoval = true, since = "2025-03")
protected void loadDialogSettings() {
PlatformUI.getDialogSettingsProvider(getBundle()).loadDialogSettings();
}
@@ -393,7 +393,7 @@ protected void loadDialogSettings() {
* being initialized. The plug-ins preferences are loaded from the
* file regardless of what this method does.
*/
- @Deprecated
+ @Deprecated(forRemoval = true, since = "2025-03")
protected void loadPreferenceStore() {
// do nothing by default
}
@@ -424,7 +424,7 @@ protected void refreshPluginActions() {
* @deprecated
* @see IDialogSettingsProvider#saveDialogSettings()
*/
- @Deprecated
+ @Deprecated(forRemoval = true, since = "2025-03")
protected void saveDialogSettings() {
PlatformUI.getDialogSettingsProvider(getBundle()).saveDialogSettings();
}
@@ -440,7 +440,7 @@ protected void saveDialogSettings() {
* savePluginPreferences, and exists only for backwards
* compatibility.
*/
- @Deprecated
+ @Deprecated(forRemoval = true, since = "2025-03")
protected void savePreferenceStore() {
savePluginPreferences();
}
@@ -451,7 +451,7 @@ protected void savePreferenceStore() {
*
* It is not called anymore as Eclipse 4.6 removed this plug-in.
*/
- @Deprecated
+ @Deprecated(forRemoval = true, since = "2025-03")
@Override
public void startup() throws CoreException {
// this method no longer does anything
@@ -477,7 +477,7 @@ public void startup() throws CoreException {
* org.eclipse.core.runtime.compatibility plug-in; in contrast, the
* stop method is always called.
*/
- @Deprecated
+ @Deprecated(forRemoval = true, since = "2025-03")
@Override
public void shutdown() throws CoreException {
// this method no longer does anything interesting
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/plugin/package.html b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/plugin/package.html
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/plugin/package.html
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/plugin/package.html
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/preferences/IWorkbenchPreferenceContainer.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/preferences/IWorkbenchPreferenceContainer.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/preferences/IWorkbenchPreferenceContainer.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/preferences/IWorkbenchPreferenceContainer.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/preferences/IWorkingCopyManager.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/preferences/IWorkingCopyManager.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/preferences/IWorkingCopyManager.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/preferences/IWorkingCopyManager.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/preferences/ScopedPreferenceStore.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/preferences/ScopedPreferenceStore.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/preferences/ScopedPreferenceStore.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/preferences/ScopedPreferenceStore.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/preferences/SettingsTransfer.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/preferences/SettingsTransfer.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/preferences/SettingsTransfer.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/preferences/SettingsTransfer.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/preferences/ViewPreferencesAction.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/preferences/ViewPreferencesAction.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/preferences/ViewPreferencesAction.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/preferences/ViewPreferencesAction.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/preferences/ViewSettingsDialog.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/preferences/ViewSettingsDialog.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/preferences/ViewSettingsDialog.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/preferences/ViewSettingsDialog.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/preferences/WizardPropertyPage.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/preferences/WizardPropertyPage.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/preferences/WizardPropertyPage.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/preferences/WizardPropertyPage.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/preferences/WorkingCopyManager.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/preferences/WorkingCopyManager.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/preferences/WorkingCopyManager.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/preferences/WorkingCopyManager.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/preferences/package.html b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/preferences/package.html
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/preferences/package.html
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/preferences/package.html
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/progress/DeferredTreeContentManager.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/progress/DeferredTreeContentManager.java
similarity index 99%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/progress/DeferredTreeContentManager.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/progress/DeferredTreeContentManager.java
index c5f6bffab5b..1defb7d61ad 100644
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/progress/DeferredTreeContentManager.java
+++ b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/progress/DeferredTreeContentManager.java
@@ -87,7 +87,7 @@ static class DeferredContentFamily {
* @param site part site
* @deprecated in 3.4. provider is not used by this class
*/
- @Deprecated
+ @Deprecated(forRemoval = true, since = "2025-03")
public DeferredTreeContentManager(ITreeContentProvider provider, AbstractTreeViewer viewer,
IWorkbenchPartSite site) {
this(viewer, site);
@@ -101,7 +101,7 @@ public DeferredTreeContentManager(ITreeContentProvider provider, AbstractTreeVie
* @param viewer The tree viewer that the results are added to
* @deprecated in 3.4. provider is not used by this class
*/
- @Deprecated
+ @Deprecated(forRemoval = true, since = "2025-03")
public DeferredTreeContentManager(ITreeContentProvider provider, AbstractTreeViewer viewer) {
this(viewer);
}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/progress/IDeferredWorkbenchAdapter.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/progress/IDeferredWorkbenchAdapter.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/progress/IDeferredWorkbenchAdapter.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/progress/IDeferredWorkbenchAdapter.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/progress/IElementCollector.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/progress/IElementCollector.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/progress/IElementCollector.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/progress/IElementCollector.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/progress/IJobRunnable.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/progress/IJobRunnable.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/progress/IJobRunnable.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/progress/IJobRunnable.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/progress/IProgressConstants.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/progress/IProgressConstants.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/progress/IProgressConstants.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/progress/IProgressConstants.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/progress/IProgressConstants2.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/progress/IProgressConstants2.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/progress/IProgressConstants2.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/progress/IProgressConstants2.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/progress/IProgressService.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/progress/IProgressService.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/progress/IProgressService.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/progress/IProgressService.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/progress/IWorkbenchSiteProgressService.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/progress/IWorkbenchSiteProgressService.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/progress/IWorkbenchSiteProgressService.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/progress/IWorkbenchSiteProgressService.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/progress/PendingUpdateAdapter.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/progress/PendingUpdateAdapter.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/progress/PendingUpdateAdapter.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/progress/PendingUpdateAdapter.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/progress/UIJob.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/progress/UIJob.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/progress/UIJob.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/progress/UIJob.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/progress/WorkbenchJob.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/progress/WorkbenchJob.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/progress/WorkbenchJob.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/progress/WorkbenchJob.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/progress/package.html b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/progress/package.html
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/progress/package.html
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/progress/package.html
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/quickaccess/IQuickAccessComputer.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/quickaccess/IQuickAccessComputer.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/quickaccess/IQuickAccessComputer.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/quickaccess/IQuickAccessComputer.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/quickaccess/IQuickAccessComputerExtension.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/quickaccess/IQuickAccessComputerExtension.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/quickaccess/IQuickAccessComputerExtension.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/quickaccess/IQuickAccessComputerExtension.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/quickaccess/QuickAccessElement.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/quickaccess/QuickAccessElement.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/quickaccess/QuickAccessElement.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/quickaccess/QuickAccessElement.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/services/AbstractServiceFactory.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/services/AbstractServiceFactory.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/services/AbstractServiceFactory.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/services/AbstractServiceFactory.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/services/IDisposable.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/services/IDisposable.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/services/IDisposable.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/services/IDisposable.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/services/IEvaluationReference.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/services/IEvaluationReference.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/services/IEvaluationReference.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/services/IEvaluationReference.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/services/IEvaluationService.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/services/IEvaluationService.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/services/IEvaluationService.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/services/IEvaluationService.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/services/IServiceLocator.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/services/IServiceLocator.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/services/IServiceLocator.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/services/IServiceLocator.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/services/IServiceScopes.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/services/IServiceScopes.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/services/IServiceScopes.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/services/IServiceScopes.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/services/IServiceWithSources.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/services/IServiceWithSources.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/services/IServiceWithSources.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/services/IServiceWithSources.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/services/ISourceProviderService.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/services/ISourceProviderService.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/services/ISourceProviderService.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/services/ISourceProviderService.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/services/package.html b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/services/package.html
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/services/package.html
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/services/package.html
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/splash/AbstractSplashHandler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/splash/AbstractSplashHandler.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/splash/AbstractSplashHandler.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/splash/AbstractSplashHandler.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/splash/BasicSplashHandler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/splash/BasicSplashHandler.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/splash/BasicSplashHandler.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/splash/BasicSplashHandler.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/splash/package.html b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/splash/package.html
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/splash/package.html
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/splash/package.html
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/statushandlers/AbstractStatusAreaProvider.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/statushandlers/AbstractStatusAreaProvider.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/statushandlers/AbstractStatusAreaProvider.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/statushandlers/AbstractStatusAreaProvider.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/statushandlers/AbstractStatusHandler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/statushandlers/AbstractStatusHandler.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/statushandlers/AbstractStatusHandler.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/statushandlers/AbstractStatusHandler.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/statushandlers/IStatusAdapterConstants.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/statushandlers/IStatusAdapterConstants.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/statushandlers/IStatusAdapterConstants.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/statushandlers/IStatusAdapterConstants.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/statushandlers/StatusAdapter.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/statushandlers/StatusAdapter.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/statushandlers/StatusAdapter.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/statushandlers/StatusAdapter.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/statushandlers/StatusManager.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/statushandlers/StatusManager.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/statushandlers/StatusManager.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/statushandlers/StatusManager.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/statushandlers/WorkbenchErrorHandler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/statushandlers/WorkbenchErrorHandler.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/statushandlers/WorkbenchErrorHandler.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/statushandlers/WorkbenchErrorHandler.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/statushandlers/WorkbenchStatusDialogManager.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/statushandlers/WorkbenchStatusDialogManager.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/statushandlers/WorkbenchStatusDialogManager.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/statushandlers/WorkbenchStatusDialogManager.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/statushandlers/package.html b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/statushandlers/package.html
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/statushandlers/package.html
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/statushandlers/package.html
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/swt/IFocusService.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/swt/IFocusService.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/swt/IFocusService.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/swt/IFocusService.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/swt/package.html b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/swt/package.html
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/swt/package.html
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/swt/package.html
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/themes/ColorUtil.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/themes/ColorUtil.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/themes/ColorUtil.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/themes/ColorUtil.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/themes/IColorFactory.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/themes/IColorFactory.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/themes/IColorFactory.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/themes/IColorFactory.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/themes/ITheme.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/themes/ITheme.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/themes/ITheme.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/themes/ITheme.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/themes/IThemeManager.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/themes/IThemeManager.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/themes/IThemeManager.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/themes/IThemeManager.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/themes/IThemePreview.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/themes/IThemePreview.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/themes/IThemePreview.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/themes/IThemePreview.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/themes/RGBBlendColorFactory.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/themes/RGBBlendColorFactory.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/themes/RGBBlendColorFactory.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/themes/RGBBlendColorFactory.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/themes/package.html b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/themes/package.html
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/themes/package.html
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/themes/package.html
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/views/IStickyViewDescriptor.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/views/IStickyViewDescriptor.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/views/IStickyViewDescriptor.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/views/IStickyViewDescriptor.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/views/IViewCategory.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/views/IViewCategory.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/views/IViewCategory.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/views/IViewCategory.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/views/IViewDescriptor.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/views/IViewDescriptor.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/views/IViewDescriptor.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/views/IViewDescriptor.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/views/IViewRegistry.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/views/IViewRegistry.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/views/IViewRegistry.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/views/IViewRegistry.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/views/WorkbenchViewerSetup.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/views/WorkbenchViewerSetup.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/views/WorkbenchViewerSetup.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/views/WorkbenchViewerSetup.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/views/package.html b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/views/package.html
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/views/package.html
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/views/package.html
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/wizards/IWizardCategory.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/wizards/IWizardCategory.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/wizards/IWizardCategory.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/wizards/IWizardCategory.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/wizards/IWizardDescriptor.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/wizards/IWizardDescriptor.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/wizards/IWizardDescriptor.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/wizards/IWizardDescriptor.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/wizards/IWizardRegistry.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/wizards/IWizardRegistry.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/wizards/IWizardRegistry.java
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/wizards/IWizardRegistry.java
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/wizards/package.html b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/wizards/package.html
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/wizards/package.html
rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/wizards/package.html
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI Editor Support/org/eclipse/ui/internal/editorsupport/ComponentSupport.java b/bundles/org.eclipse.ui.workbench/eclipseuieditorsupport/org/eclipse/ui/internal/editorsupport/ComponentSupport.java
similarity index 100%
rename from bundles/org.eclipse.ui.workbench/Eclipse UI Editor Support/org/eclipse/ui/internal/editorsupport/ComponentSupport.java
rename to bundles/org.eclipse.ui.workbench/eclipseuieditorsupport/org/eclipse/ui/internal/editorsupport/ComponentSupport.java
diff --git a/bundles/org.eclipse.ui.workbench/forceQualifierUpdate.txt b/bundles/org.eclipse.ui.workbench/forceQualifierUpdate.txt
index 19d1ac647e9..bf582b693bc 100644
--- a/bundles/org.eclipse.ui.workbench/forceQualifierUpdate.txt
+++ b/bundles/org.eclipse.ui.workbench/forceQualifierUpdate.txt
@@ -15,4 +15,5 @@ Bug 578351 - Lambda generation order is unstable in ecj
https://github.com/eclipse-platform/eclipse.platform.releng.aggregator/issues/1184
https://github.com/eclipse-platform/eclipse.platform.releng.aggregator/issues/1750
https://github.com/eclipse-platform/eclipse.platform.releng.aggregator/issues/1923
-https://github.com/eclipse-platform/eclipse.platform.releng.aggregator/issues/2044
\ No newline at end of file
+https://github.com/eclipse-platform/eclipse.platform.releng.aggregator/issues/2044
+https://github.com/eclipse-platform/eclipse.platform.releng.aggregator/issues/2595
\ No newline at end of file
diff --git a/bundles/org.eclipse.ui.workbench/plugin.xml b/bundles/org.eclipse.ui.workbench/plugin.xml
index 4bb0ed0b704..60430be86db 100644
--- a/bundles/org.eclipse.ui.workbench/plugin.xml
+++ b/bundles/org.eclipse.ui.workbench/plugin.xml
@@ -7,22 +7,6 @@
-
-
-
-
-
-
-
-
+
+
@@ -2207,11 +2214,11 @@
class="org.eclipse.ui.internal.CloseEditorHandler"
commandId="org.eclipse.ui.file.close">
-
-
-
+
+
+
+
+
diff --git a/bundles/org.eclipse.ui/src/org/eclipse/ui/internal/SearchDecoration.java b/bundles/org.eclipse.ui/src/org/eclipse/ui/internal/SearchDecoration.java
new file mode 100644
index 00000000000..eb34621d71f
--- /dev/null
+++ b/bundles/org.eclipse.ui/src/org/eclipse/ui/internal/SearchDecoration.java
@@ -0,0 +1,122 @@
+/*******************************************************************************
+ * Copyright (c) 2024 Vector Informatik GmbH 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
+ *
+ * Contributors:
+ * Vector Informatik GmbH - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.ui.internal;
+
+import java.util.regex.Pattern;
+import java.util.regex.PatternSyntaxException;
+
+import org.eclipse.jface.fieldassist.ControlDecoration;
+import org.eclipse.jface.fieldassist.FieldDecorationRegistry;
+import org.eclipse.swt.graphics.GC;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.widgets.Control;
+
+/**
+ * This class contains methods to validate and decorate search fields.
+ */
+public class SearchDecoration {
+
+ private SearchDecoration() {
+ // avoid instantiation
+ }
+
+ /**
+ * Validate the given regular expression and change the control decoration
+ * accordingly. If the expression is invalid then the decoration will show an
+ * error icon and a message and if the expression is valid then the decoration
+ * will be hidden.
+ *
+ * @param regex The regular expression to be validated.
+ * @param targetDecoration The control decoration that will show the result of
+ * the validation.
+ */
+ public static boolean validateRegex(String regex, ControlDecoration targetDecoration) {
+ String errorMessage = getValidationError(regex, targetDecoration.getControl());
+ if (errorMessage.isEmpty()) {
+ targetDecoration.hide();
+ return true;
+ }
+
+ Image decorationImage = FieldDecorationRegistry.getDefault()
+ .getFieldDecoration(FieldDecorationRegistry.DEC_ERROR).getImage();
+ targetDecoration.setImage(decorationImage);
+ targetDecoration.setDescriptionText(errorMessage);
+ targetDecoration.show();
+ return false;
+ }
+
+ /**
+ * Validate a regular expression.
+ *
+ * @return The appropriate error message if the regex is invalid or an empty
+ * string if the regex is valid.
+ */
+ private static String getValidationError(String regex, Control targetControl) {
+ try {
+ Pattern.compile(regex);
+ return ""; //$NON-NLS-1$
+ } catch (PatternSyntaxException e) {
+ return buildValidationErrorString(e, targetControl);
+ }
+ }
+
+ private static String buildValidationErrorString(PatternSyntaxException e, Control targetControl) {
+ String description = e.getDescription();
+ int errorIndex = e.getIndex();
+
+ if (errorIndex == -1) {
+ return description;
+ }
+
+ GC gc = new GC(targetControl);
+ String pattern = e.getPattern();
+
+ // This happens when the error is in the last (still unwritten) character e.g.
+ // for an "Unescaped trailing backslash"
+ if (errorIndex >= pattern.length()) {
+ pattern += " "; //$NON-NLS-1$
+ }
+
+ StringBuilder validationErrorMessage = new StringBuilder();
+
+ validationErrorMessage.append(description);
+ validationErrorMessage.append(" at index ").append(errorIndex).append(System.lineSeparator()); //$NON-NLS-1$
+ validationErrorMessage.append(pattern).append(System.lineSeparator());
+
+ String stringToIndexString = pattern.substring(0, errorIndex + 1);
+ String hairSpace = "\u200A"; //$NON-NLS-1$
+ int hairSpaceWidth = gc.stringExtent(hairSpace).x;
+
+ int stringToIndex = gc.stringExtent(stringToIndexString).x;
+ String lastCharacter = stringToIndexString.substring(stringToIndexString.length() - 1);
+
+ int widthLastChar = gc.stringExtent(lastCharacter).x;
+ int upWidth = gc.stringExtent("^").x; //$NON-NLS-1$
+
+ double howFar = stringToIndex - widthLastChar / 2 - upWidth / 2;
+ int currentWidth = 0;
+
+ while (currentWidth < howFar) {
+ currentWidth += hairSpaceWidth;
+ validationErrorMessage.append(hairSpace);
+ }
+
+ validationErrorMessage.append("^"); //$NON-NLS-1$
+ gc.dispose();
+
+ return validationErrorMessage.toString();
+ }
+
+}
\ No newline at end of file
diff --git a/bundles/org.eclipse.ui/src/org/eclipse/ui/internal/UIPreferenceInitializer.java b/bundles/org.eclipse.ui/src/org/eclipse/ui/internal/UIPreferenceInitializer.java
index 43d4221d6a7..a8baebcab2f 100644
--- a/bundles/org.eclipse.ui/src/org/eclipse/ui/internal/UIPreferenceInitializer.java
+++ b/bundles/org.eclipse.ui/src/org/eclipse/ui/internal/UIPreferenceInitializer.java
@@ -55,10 +55,6 @@ public void initializeDefaultPreferences() {
// Deprecated but kept for backwards compatibility
node.put(IWorkbenchPreferenceConstants.PROJECT_OPEN_NEW_PERSPECTIVE,
IWorkbenchPreferenceConstants.OPEN_PERSPECTIVE_REPLACE);
- node.put(IWorkbenchPreferenceConstants.SHIFT_OPEN_NEW_PERSPECTIVE,
- IWorkbenchPreferenceConstants.OPEN_PERSPECTIVE_REPLACE);
- node.put(IWorkbenchPreferenceConstants.ALTERNATE_OPEN_NEW_PERSPECTIVE,
- IWorkbenchPreferenceConstants.OPEN_PERSPECTIVE_REPLACE);
// Although there is no longer any item on the preference pages
// for setting the linking preference, since it is now a per-part
diff --git a/docs/Eclipse4_RCP_Contexts.md b/docs/Eclipse4_RCP_Contexts.md
index 57ec1aff16a..7e7a3d09a83 100644
--- a/docs/Eclipse4_RCP_Contexts.md
+++ b/docs/Eclipse4_RCP_Contexts.md
@@ -194,7 +194,8 @@ These contexts — and the services requested — are bounded by the lifecycle o
This approach exposes a context function as the implementation of a service defined OSGi Declarative Services.
This pattern is used for creating the _IEventBroker_, using the new DS annotations support.
- @Component(service = IContextFunction.class, property = "service.context.key=org.eclipse.e4.core.services.events.IEventBroker")
+ @Component(service = IContextFunction.class)
+ @IContextFunction.ServiceContextKey(org.eclipse.e4.core.services.events.IEventBroker.class)
public class EventBrokerFactory extends ContextFunction {
@Override
public Object compute(IEclipseContext context, String contextKey) {
diff --git a/docs/JFaceSnippets.md b/docs/JFaceSnippets.md
index f557f878ccc..d871e4bec46 100644
--- a/docs/JFaceSnippets.md
+++ b/docs/JFaceSnippets.md
@@ -21,6 +21,9 @@ Contents
* [1.2 Snippet082 - Color Selector](#Snippet082---Color-Selector)
* [2 Notification](#Notification)
* [2.1 Snippet081 - Notification API](#Snippet081---Notification-API)
+ * [2.2 Snippet083 - Notification Popup with Functions](#Snippet083---Notification-Popup-with-Functions)
+ * [2.3 Snippet084 - Notification Popup with Custom Delay and Fade](#Snippet084---Notification-Popup-with-Custom-Delay-and-Fade)
+ * [2.4 Snippet085 - Notification popup with user interaction](#Snippet085---Notification-popup-with-user-interaction)
* [3 Layout](#Layout)
* [3.1 Snippet013 - Grid Layout Factory](#Snippet013---Grid-Layout-Factory)
* [3.2 Snippet016 - Table Layout](#Snippet016---Table-Layout)
@@ -127,6 +130,28 @@ Demonstrates usage of the non-blocking notification API

+### [Snippet083 - Notification Popup with Functions](https://github.com/eclipse-platform/eclipse.platform.ui/blob/master/examples/org.eclipse.jface.snippets/Eclipse%20JFace%20Snippets/org/eclipse/jface/snippets/notifications/Snippet083NotificationPopupWithFunctions.java)
+
+* [Snippet083 - Notification Popup with Functions](https://github.com/eclipse-platform/eclipse.platform.ui/blob/master/examples/org.eclipse.jface.snippets/Eclipse%20JFace%20Snippets/org/eclipse/jface/snippets/notifications/Snippet083NotificationPopupWithFunctions.java)
+
+Demonstrates the creation of notification popups that include function callbacks for user interactions.
+
+### [Snippet084 - Notification Popup with Custom Delay and Fade](https://github.com/eclipse-platform/eclipse.platform.ui/blob/master/examples/org.eclipse.jface.snippets/Eclipse%20JFace%20Snippets/org/eclipse/jface/snippets/notifications/Snippet084NotificationPopupWithCustomDelayAndFade.java)
+
+* [Snippet084 - Notification Popup with Custom Delay and Fade](https://github.com/eclipse-platform/eclipse.platform.ui/blob/master/examples/org.eclipse.jface.snippets/Eclipse%20JFace%20Snippets/org/eclipse/jface/snippets/notifications/Snippet084NotificationPopupWithCustomDelayAndFade.java)
+
+Shows how to create notification popups with custom delay and fade effects for enhanced visual feedback.
+
+### [Snippet085 - Notification popup with user interaction](https://github.com/eclipse-platform/eclipse.platform.ui/blob/master/examples/org.eclipse.jface.snippets/Eclipse%20JFace%20Snippets/org/eclipse/jface/snippets/notifications/Snippet085NotificationPopupWithUserInteraction.java)
+
+This snippet demonstrates how to create a `NotificationPopup` that includes user interaction with a button. When the button is clicked, a confirmation dialog is shown.
+
+For the full code, please visit the [GitHub repository](https://github.com/eclipse-platform/eclipse.platform.ui/blob/master/examples/org.eclipse.jface.snippets/Eclipse%20JFace%20Snippets/org/eclipse/jface/snippets/notifications/Snippet085NotificationPopupWithUserInteraction.java).
+
+
+
+
+
Layout
------
diff --git a/docs/images/Snippet085NotificationPopupWithUserInteraction.png b/docs/images/Snippet085NotificationPopupWithUserInteraction.png
new file mode 100644
index 00000000000..7937c23b665
Binary files /dev/null and b/docs/images/Snippet085NotificationPopupWithUserInteraction.png differ
diff --git a/examples/org.eclipse.e4.demo.cssbridge/.gitignore b/examples/org.eclipse.e4.demo.cssbridge/.gitignore
new file mode 100644
index 00000000000..7bec98dd976
--- /dev/null
+++ b/examples/org.eclipse.e4.demo.cssbridge/.gitignore
@@ -0,0 +1 @@
+/OSGI-INF/org.eclipse.*.xml
diff --git a/examples/org.eclipse.e4.demo.cssbridge/.settings/org.eclipse.pde.ds.annotations.prefs b/examples/org.eclipse.e4.demo.cssbridge/.settings/org.eclipse.pde.ds.annotations.prefs
new file mode 100644
index 00000000000..5faf08b7d5c
--- /dev/null
+++ b/examples/org.eclipse.e4.demo.cssbridge/.settings/org.eclipse.pde.ds.annotations.prefs
@@ -0,0 +1,7 @@
+dsVersion=V1_4
+eclipse.preferences.version=1
+enabled=true
+generateBundleActivationPolicyLazy=true
+path=OSGI-INF
+validationErrorLevel=error
+validationErrorLevel.missingImplicitUnbindMethod=error
diff --git a/examples/org.eclipse.e4.demo.cssbridge/META-INF/MANIFEST.MF b/examples/org.eclipse.e4.demo.cssbridge/META-INF/MANIFEST.MF
index b93bb3f58fe..0de3cb3e103 100644
--- a/examples/org.eclipse.e4.demo.cssbridge/META-INF/MANIFEST.MF
+++ b/examples/org.eclipse.e4.demo.cssbridge/META-INF/MANIFEST.MF
@@ -15,7 +15,7 @@ Export-Package: org.eclipse.e4.demo.cssbridge.core,
org.eclipse.e4.demo.cssbridge.ui.views,
org.eclipse.e4.demo.cssbridge.util
Bundle-ActivationPolicy: lazy
-Service-Component: OSGI-INF/mailservice.xml
+Service-Component: OSGI-INF/org.eclipse.e4.demo.cssbridge.internal.core.DummyMailService.xml
Automatic-Module-Name: org.eclipse.e4.demo.cssbridge
Bundle-Vendor: %Bundle-Vendor
Bundle-Localization: plugin
diff --git a/examples/org.eclipse.e4.demo.cssbridge/OSGI-INF/mailservice.xml b/examples/org.eclipse.e4.demo.cssbridge/OSGI-INF/mailservice.xml
deleted file mode 100644
index a1d21b6f739..00000000000
--- a/examples/org.eclipse.e4.demo.cssbridge/OSGI-INF/mailservice.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/examples/org.eclipse.e4.demo.cssbridge/build.properties b/examples/org.eclipse.e4.demo.cssbridge/build.properties
index baec4a9632c..ac7c8ebc08a 100644
--- a/examples/org.eclipse.e4.demo.cssbridge/build.properties
+++ b/examples/org.eclipse.e4.demo.cssbridge/build.properties
@@ -3,7 +3,6 @@ bin.includes = plugin.xml,\
.,\
icons/,\
splash.bmp,\
- OSGI-INF/mailservice.xml,\
OSGI-INF/,\
plugin.properties
output.. = bin/
diff --git a/examples/org.eclipse.e4.demo.cssbridge/src/org/eclipse/e4/demo/cssbridge/internal/core/DummyMailService.java b/examples/org.eclipse.e4.demo.cssbridge/src/org/eclipse/e4/demo/cssbridge/internal/core/DummyMailService.java
index f381317d44d..65fb1cc4870 100644
--- a/examples/org.eclipse.e4.demo.cssbridge/src/org/eclipse/e4/demo/cssbridge/internal/core/DummyMailService.java
+++ b/examples/org.eclipse.e4.demo.cssbridge/src/org/eclipse/e4/demo/cssbridge/internal/core/DummyMailService.java
@@ -26,7 +26,9 @@
import org.eclipse.e4.demo.cssbridge.model.Importance;
import org.eclipse.e4.demo.cssbridge.model.Mail;
import org.eclipse.e4.demo.cssbridge.util.MailBuilder;
+import org.osgi.service.component.annotations.Component;
+@Component(service = IMailService.class)
public class DummyMailService implements IMailService {
private static final String MAILBOX_NAME = "me@this.com";
diff --git a/examples/org.eclipse.jface.snippets/Eclipse JFace Snippets/org/eclipse/jface/snippets/notifications/Snippet002NotificationPopupWithFunctions.java b/examples/org.eclipse.jface.snippets/Eclipse JFace Snippets/org/eclipse/jface/snippets/notifications/Snippet083NotificationPopupWithFunctions.java
similarity index 94%
rename from examples/org.eclipse.jface.snippets/Eclipse JFace Snippets/org/eclipse/jface/snippets/notifications/Snippet002NotificationPopupWithFunctions.java
rename to examples/org.eclipse.jface.snippets/Eclipse JFace Snippets/org/eclipse/jface/snippets/notifications/Snippet083NotificationPopupWithFunctions.java
index 256848ff6da..df8535ced2f 100644
--- a/examples/org.eclipse.jface.snippets/Eclipse JFace Snippets/org/eclipse/jface/snippets/notifications/Snippet002NotificationPopupWithFunctions.java
+++ b/examples/org.eclipse.jface.snippets/Eclipse JFace Snippets/org/eclipse/jface/snippets/notifications/Snippet083NotificationPopupWithFunctions.java
@@ -10,7 +10,7 @@
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
-public class Snippet002NotificationPopupWithFunctions {
+public class Snippet083NotificationPopupWithFunctions {
public static void main(String[] args) {
Display display = new Display();
diff --git a/examples/org.eclipse.jface.snippets/Eclipse JFace Snippets/org/eclipse/jface/snippets/notifications/Snippet004NotificationPopupWithCustomDelayAndFade.java b/examples/org.eclipse.jface.snippets/Eclipse JFace Snippets/org/eclipse/jface/snippets/notifications/Snippet084NotificationPopupWithCustomDelayAndFade.java
similarity index 89%
rename from examples/org.eclipse.jface.snippets/Eclipse JFace Snippets/org/eclipse/jface/snippets/notifications/Snippet004NotificationPopupWithCustomDelayAndFade.java
rename to examples/org.eclipse.jface.snippets/Eclipse JFace Snippets/org/eclipse/jface/snippets/notifications/Snippet084NotificationPopupWithCustomDelayAndFade.java
index 75d2e621a5d..3db81ad6d37 100644
--- a/examples/org.eclipse.jface.snippets/Eclipse JFace Snippets/org/eclipse/jface/snippets/notifications/Snippet004NotificationPopupWithCustomDelayAndFade.java
+++ b/examples/org.eclipse.jface.snippets/Eclipse JFace Snippets/org/eclipse/jface/snippets/notifications/Snippet084NotificationPopupWithCustomDelayAndFade.java
@@ -4,7 +4,7 @@
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
-public class Snippet004NotificationPopupWithCustomDelayAndFade {
+public class Snippet084NotificationPopupWithCustomDelayAndFade {
public static void main(String[] args) {
Display display = new Display();
diff --git a/examples/org.eclipse.jface.snippets/Eclipse JFace Snippets/org/eclipse/jface/snippets/notifications/Snippet085NotificationPopupWithUserInteraction.java b/examples/org.eclipse.jface.snippets/Eclipse JFace Snippets/org/eclipse/jface/snippets/notifications/Snippet085NotificationPopupWithUserInteraction.java
new file mode 100644
index 00000000000..9ca49362630
--- /dev/null
+++ b/examples/org.eclipse.jface.snippets/Eclipse JFace Snippets/org/eclipse/jface/snippets/notifications/Snippet085NotificationPopupWithUserInteraction.java
@@ -0,0 +1,74 @@
+package org.eclipse.jface.snippets.notifications;
+
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.notifications.NotificationPopup;
+import org.eclipse.jface.widgets.WidgetFactory;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Font;
+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.Display;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Shell;
+
+public class Snippet085NotificationPopupWithUserInteraction {
+
+ public static void main(String[] args) {
+ Display display = new Display();
+ Shell shell = new Shell(display); // Create the shell
+
+ // Set the size of the shell
+ shell.setSize(400, 200);
+
+ // Create content for the notification popup
+ Composite contentComposite = new Composite(shell, SWT.NONE);
+ GridLayout layout = new GridLayout();
+ layout.marginWidth = 10; // Margin width
+ layout.marginHeight = 10; // Margin height
+ contentComposite.setLayout(layout);
+
+ // Create a bold label with wrapped text
+ Label firstLine = new Label(contentComposite, SWT.WRAP);
+ firstLine.setText("It is recommended that you");
+ Font boldFont = new Font(display, "Arial", 10, SWT.BOLD);
+ firstLine.setFont(boldFont);
+ // Create a bold label with wrapped text
+ Label secondLine = new Label(contentComposite, SWT.WRAP);
+ secondLine.setText("update your configuration");
+ secondLine.setFont(boldFont);
+
+
+ // Create a button that will show the confirmation dialog when clicked
+ Button button = new Button(contentComposite, SWT.PUSH);
+ button.setText("Confirm");
+
+ button.addListener(SWT.Selection, event -> {
+ MessageDialog.openConfirm(shell, "Confirmation", "Button was pressed!");
+ });
+
+ // Set GridData for button to align properly in the layout
+ GridData gridData = new GridData(SWT.LEFT, SWT.CENTER, false, false);
+ button.setLayoutData(gridData);
+
+ // Create the notification popup
+ NotificationPopup.forDisplay(display)
+ .content(composite -> {
+ contentComposite.setParent(composite);
+ return composite;
+ })
+ .title(composite -> WidgetFactory.label(SWT.NONE).text("System update!!!").create(composite), true)
+ .open();
+
+ shell.open(); // Open the shell
+
+ while (!shell.isDisposed()) {
+ if (!display.readAndDispatch())
+ display.sleep();
+ }
+
+ boldFont.dispose(); // Dispose of the font when done
+ display.dispose();
+ }
+}
diff --git a/examples/org.eclipse.jface.text.examples/META-INF/MANIFEST.MF b/examples/org.eclipse.jface.text.examples/META-INF/MANIFEST.MF
index 22e98fc1e7e..406cc1a7a71 100644
--- a/examples/org.eclipse.jface.text.examples/META-INF/MANIFEST.MF
+++ b/examples/org.eclipse.jface.text.examples/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: CodeMinig Examples
Bundle-SymbolicName: org.eclipse.jface.text.examples
-Bundle-Version: 1.2.0.qualifier
+Bundle-Version: 1.2.100.qualifier
Bundle-RequiredExecutionEnvironment: JavaSE-17
Bundle-Vendor: Eclipse.org
Require-Bundle: org.eclipse.jface.text,
diff --git a/examples/org.eclipse.jface.text.examples/src/org/eclipse/jface/text/examples/codemining/CodeMiningDemo.java b/examples/org.eclipse.jface.text.examples/src/org/eclipse/jface/text/examples/codemining/CodeMiningDemo.java
index 1cc8a5cf656..b70080822bd 100644
--- a/examples/org.eclipse.jface.text.examples/src/org/eclipse/jface/text/examples/codemining/CodeMiningDemo.java
+++ b/examples/org.eclipse.jface.text.examples/src/org/eclipse/jface/text/examples/codemining/CodeMiningDemo.java
@@ -16,10 +16,12 @@
import java.util.concurrent.atomic.AtomicReference;
import org.eclipse.jface.layout.GridDataFactory;
+import org.eclipse.jface.resource.JFaceResources;
import org.eclipse.jface.text.Document;
import org.eclipse.jface.text.IDocument;
import org.eclipse.jface.text.IRegion;
import org.eclipse.jface.text.ITextViewerExtension2;
+import org.eclipse.jface.text.WhitespaceCharacterPainter;
import org.eclipse.jface.text.codemining.ICodeMiningProvider;
import org.eclipse.jface.text.reconciler.DirtyRegion;
import org.eclipse.jface.text.reconciler.IReconcilingStrategy;
@@ -42,6 +44,8 @@
*/
public class CodeMiningDemo {
+ private static boolean showWhitespaces = false;
+
public static void main(String[] args) throws Exception {
Display display = new Display();
@@ -54,7 +58,13 @@ public static void main(String[] args) throws Exception {
endOfLineText.setText(endOfLineString.get());
GridDataFactory.fillDefaults().grab(true, false).applyTo(endOfLineText);
- ISourceViewer sourceViewer = new SourceViewer(shell, null, SWT.V_SCROLL | SWT.BORDER);
+ SourceViewer sourceViewer = new SourceViewer(shell, null, SWT.V_SCROLL | SWT.BORDER);
+ sourceViewer.getTextWidget().setFont(JFaceResources.getTextFont());
+ if (showWhitespaces) {
+ WhitespaceCharacterPainter whitespaceCharPainter = new WhitespaceCharacterPainter(sourceViewer, true, true,
+ true, true, true, true, true, true, true, true, true, 100);
+ sourceViewer.addPainter(whitespaceCharPainter);
+ }
sourceViewer.setDocument(
new Document("// Type class & new keyword and see references CodeMining\n"
+ "// Name class with a number N to emulate Nms before resolving the references CodeMining\n"
@@ -71,7 +81,8 @@ public static void main(String[] args) throws Exception {
+ "new 5\n" //
+ "new 5\n" //
+ "multiline \n" //
- + "multiline \n\n"),
+ + "multiline \n\n" //
+ + "suffix \n"),
new AnnotationModel());
GridDataFactory.fillDefaults().grab(true, true).applyTo(sourceViewer.getTextWidget());
// Add AnnotationPainter (required by CodeMining)
@@ -83,7 +94,8 @@ public static void main(String[] args) throws Exception {
new ToEchoWithHeaderAndInlineCodeMiningProvider("echo"), //
new MultilineCodeMiningProvider(), //
new EmptyLineCodeMiningProvider(), //
- new EchoAtEndOfLineCodeMiningProvider(endOfLineString) });
+ new EchoAtEndOfLineCodeMiningProvider(endOfLineString), //
+ new LineContentCodeMiningAfterPositionProvider() });
// Execute codemining in a reconciler
MonoReconciler reconciler = new MonoReconciler(new IReconcilingStrategy() {
diff --git a/examples/org.eclipse.jface.text.examples/src/org/eclipse/jface/text/examples/codemining/EmptyLineCodeMiningProvider.java b/examples/org.eclipse.jface.text.examples/src/org/eclipse/jface/text/examples/codemining/EmptyLineCodeMiningProvider.java
index 0645d44e82b..d409db578e7 100644
--- a/examples/org.eclipse.jface.text.examples/src/org/eclipse/jface/text/examples/codemining/EmptyLineCodeMiningProvider.java
+++ b/examples/org.eclipse.jface.text.examples/src/org/eclipse/jface/text/examples/codemining/EmptyLineCodeMiningProvider.java
@@ -35,7 +35,7 @@ public CompletableFuture> provideCodeMinings(ITextVi
emptyLineHeaders.add(new LineHeaderCodeMining(line, document, this) {
@Override
public String getLabel() {
- return "Next line is empty";
+ return "Next line is \nempty";
}
});
}
diff --git a/examples/org.eclipse.jface.text.examples/src/org/eclipse/jface/text/examples/codemining/LineContentCodeMiningAfterPositionProvider.java b/examples/org.eclipse.jface.text.examples/src/org/eclipse/jface/text/examples/codemining/LineContentCodeMiningAfterPositionProvider.java
new file mode 100644
index 00000000000..e6bf0bb646f
--- /dev/null
+++ b/examples/org.eclipse.jface.text.examples/src/org/eclipse/jface/text/examples/codemining/LineContentCodeMiningAfterPositionProvider.java
@@ -0,0 +1,52 @@
+/*******************************************************************************
+ * Copyright (c) 2024, SAP SE
+ *
+ * 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.jface.text.examples.codemining;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.CompletableFuture;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.jface.text.ITextViewer;
+import org.eclipse.jface.text.Position;
+import org.eclipse.jface.text.codemining.AbstractCodeMiningProvider;
+import org.eclipse.jface.text.codemining.ICodeMining;
+import org.eclipse.jface.text.codemining.LineContentCodeMining;
+
+public class LineContentCodeMiningAfterPositionProvider extends AbstractCodeMiningProvider {
+
+ public LineContentCodeMiningAfterPositionProvider() {
+ }
+
+ @Override
+ public CompletableFuture> provideCodeMinings(ITextViewer viewer,
+ IProgressMonitor monitor) {
+ String suffix = "suffix";
+ int index = 0;
+ List res = new ArrayList<>();
+ while ((index = viewer.getDocument().get().indexOf(suffix, index)) != -1) {
+ index += suffix.length();
+ res.add(new LineContentCodeMining(new Position(index, 1), true, this) {
+ @Override
+ public String getLabel() {
+ return suffix;
+ }
+
+ @Override
+ public boolean isResolved() {
+ return true;
+ }
+ });
+ }
+ return CompletableFuture.completedFuture(res);
+ }
+}
+
diff --git a/examples/org.eclipse.ui.examples.iconpack/.project b/examples/org.eclipse.ui.examples.iconpack/.project
new file mode 100644
index 00000000000..f50ac3dc96d
--- /dev/null
+++ b/examples/org.eclipse.ui.examples.iconpack/.project
@@ -0,0 +1,22 @@
+
+
+ org.eclipse.ui.examples.iconpack
+
+
+
+
+
+ org.eclipse.pde.ManifestBuilder
+
+
+
+
+ org.eclipse.pde.SchemaBuilder
+
+
+
+
+
+ org.eclipse.pde.PluginNature
+
+
diff --git a/examples/org.eclipse.ui.examples.iconpack/.settings/org.eclipse.core.resources.prefs b/examples/org.eclipse.ui.examples.iconpack/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/examples/org.eclipse.ui.examples.iconpack/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/=UTF-8
diff --git a/examples/org.eclipse.ui.examples.iconpack/.settings/org.eclipse.pde.core.prefs b/examples/org.eclipse.ui.examples.iconpack/.settings/org.eclipse.pde.core.prefs
new file mode 100644
index 00000000000..e8ff8be0bab
--- /dev/null
+++ b/examples/org.eclipse.ui.examples.iconpack/.settings/org.eclipse.pde.core.prefs
@@ -0,0 +1,4 @@
+eclipse.preferences.version=1
+pluginProject.equinox=false
+pluginProject.extensions=false
+resolve.requirebundle=false
diff --git a/examples/org.eclipse.ui.examples.iconpack/META-INF/MANIFEST.MF b/examples/org.eclipse.ui.examples.iconpack/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..303312da8d3
--- /dev/null
+++ b/examples/org.eclipse.ui.examples.iconpack/META-INF/MANIFEST.MF
@@ -0,0 +1,9 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Iconpack
+Bundle-SymbolicName: org.eclipse.ui.examples.iconpack
+Bundle-Version: 1.0.0.qualifier
+Bundle-Vendor: Eclipse.org
+Automatic-Module-Name: org.eclipse.ui.examples.iconpack
+Equinox-Transformer: /transform.txt
+Require-Capability: osgi.extender;filter:="(osgi.extender=equinox.transforms.hook)"
diff --git a/examples/org.eclipse.ui.examples.iconpack/README.MD b/examples/org.eclipse.ui.examples.iconpack/README.MD
new file mode 100644
index 00000000000..81f601c4c09
--- /dev/null
+++ b/examples/org.eclipse.ui.examples.iconpack/README.MD
@@ -0,0 +1,78 @@
+# Example for providing an icon pack to Eclipse IDE / RCP
+
+This example demonstrate how to create an icon pack for the Eclipse IDE or a custom RCP application.
+
+An icon pack on a technical level is a simple bundle that can be installed like any other piece of software and
+ships one or more alternative representations of an existing icon resource to one or more bundles already installed
+in the system. This allows an icon pack to customize the look and feel of Eclipse RCP Applications even further
+beyond what is already possible with css.
+
+For a bundle to be recognized by the system one needs the following things demonstrated in this example:
+
+1. The bundle should list the following header in its manifest to make sure the equinox transform hook is made available when installing it:
+`Require-Capability: osgi.extender;filter:="(osgi.extender=equinox.transforms.hook)"`
+2. It needs to maintain transformer rules file, in our example this is done by the file `transform.txt` but any
+name / extension is valid here, the format of the file is described below.
+3. It must list the location in the manifest with the `Equinox-Transformer: /transform.txt` bundle header to be recognized by the framework
+4. Make sure that the icons and the transform rules files are included in the `bin.include` in the `build.properties`!
+
+## writing transformer rules file
+
+a transformer rules file is a simple text file that (similar to rewrite rules in a webserver) tells the framework what resources in a bundle should be replaced
+with another.
+
+The general format is `,,,`, where the last part can be omitted here as it defaults
+to `replace` what is the one we need for icon packs.
+
+### replace one icon by another
+
+Now assume we want to replace the save icon because a floppy-disk is really nothing people today know and might wonder what this strange quadratic thing should actually
+mean to them and today a downwards arrow is more common (even though for demonstration purpose our icon looks quite ugly so it is easily spotted as being replaced).
+
+1. We first need to know the bundle that provides this what in this case is the `org.eclipse.ui` so our pattern for matching this bundle would be `org\.eclipse\.ui`,
+what would only match this single bundle. If an icon has to be replaced in multiple bundles we can either use a less narrow pattern or use two different rules.
+2. Then one needs to find the icon to replace in this case it is `icons/full/etool16/save_edit.png`, as before we could use an exact match or we can use a more
+generic form to possibly match multiple path. In the example we use `icons/.*/save_edit.png`, please note that you even can replace a gif file by a png or whatever
+fileformat fits your needs. The code will still see the old name so this might still be used with care if the caller maybe make decisions based on the extension!
+3. Of course we need our replacement resource that will be used and we put it in as the last instruction as we are using the default replace tranformer that just keeps
+the provided resource as a replacement for the original.
+
+The full line then looks like this:
+
+```
+org\.eclipse\.ui,icons/.*/save_edit.png,/myicons/saveme.png
+```
+
+### replace multiple icons
+
+A transformer rules file can contain as many lines as you want and you can replace also icons from as many bundles as you like in the same icon pack.
+
+## Running the example
+
+If you want to run the example, make sure that you add the following to your run configuration (or extend an existing configuration):
+
+```
+-Dosgi.framework.extensions=org.eclipse.equinox.transforms.hook
+```
+
+this enables the equinox transforms hook extension also make sure that at least version `1.4.200` is used as it includes the required enhancements
+used in this example.
+
+Also make sure the example is included in the launch e.g. add it to an existing feature of your product / launch configuration.
+
+If everything worked well, you should see your new save icon in the toolbar like this:
+
+
+
+## Future enhancements
+
+This example is currently only a very bare example, everyone is encouraged to help enhancing it and sharing ideas how this can be made more comfortable,
+also there is currently no tooling around this so any help is appreciated.
+
+Here is an (incomplete) list of things that might be useful in future versions:
+
+1. supporting capture groups in a transform instruction to match a large amount of icon with one line and also support `@2x` variants more easily (currently it requires a duplicate line)
+2. having a way to exactly match a bundle without the need to escape special chars like `.` and supporting simple ant style glob pattern
+3. some tooling that allows to select a bundle and generate a list of icon replacements automatically
+4. support systemproperty or variable placeholders to support for example a theming system
+5. ...
\ No newline at end of file
diff --git a/examples/org.eclipse.ui.examples.iconpack/about.html b/examples/org.eclipse.ui.examples.iconpack/about.html
new file mode 100644
index 00000000000..164f781a8fd
--- /dev/null
+++ b/examples/org.eclipse.ui.examples.iconpack/about.html
@@ -0,0 +1,36 @@
+
+
+
+
+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 http://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 http://www.eclipse.org.
+
+
+
+
\ No newline at end of file
diff --git a/examples/org.eclipse.ui.examples.iconpack/build.properties b/examples/org.eclipse.ui.examples.iconpack/build.properties
new file mode 100644
index 00000000000..10a6e4470b9
--- /dev/null
+++ b/examples/org.eclipse.ui.examples.iconpack/build.properties
@@ -0,0 +1,6 @@
+bin.includes = META-INF/,\
+ myicons/,\
+ about.html,\
+ transform.txt
+
+src.includes = about.html
\ No newline at end of file
diff --git a/examples/org.eclipse.ui.examples.iconpack/forceQualifierUpdate.txt b/examples/org.eclipse.ui.examples.iconpack/forceQualifierUpdate.txt
new file mode 100644
index 00000000000..8ad7a91157b
--- /dev/null
+++ b/examples/org.eclipse.ui.examples.iconpack/forceQualifierUpdate.txt
@@ -0,0 +1 @@
+# To force a version qualifier update add the bug here
\ No newline at end of file
diff --git a/examples/org.eclipse.ui.examples.iconpack/myicons/saveme.png b/examples/org.eclipse.ui.examples.iconpack/myicons/saveme.png
new file mode 100644
index 00000000000..0f957d8a2e1
Binary files /dev/null and b/examples/org.eclipse.ui.examples.iconpack/myicons/saveme.png differ
diff --git a/examples/org.eclipse.ui.examples.iconpack/myicons/saveme@2x.png b/examples/org.eclipse.ui.examples.iconpack/myicons/saveme@2x.png
new file mode 100644
index 00000000000..93a325b47a8
Binary files /dev/null and b/examples/org.eclipse.ui.examples.iconpack/myicons/saveme@2x.png differ
diff --git a/examples/org.eclipse.ui.examples.iconpack/replaced_icon.png b/examples/org.eclipse.ui.examples.iconpack/replaced_icon.png
new file mode 100644
index 00000000000..fc7bd95c030
Binary files /dev/null and b/examples/org.eclipse.ui.examples.iconpack/replaced_icon.png differ
diff --git a/examples/org.eclipse.ui.examples.iconpack/transform.txt b/examples/org.eclipse.ui.examples.iconpack/transform.txt
new file mode 100644
index 00000000000..2008dd8491c
--- /dev/null
+++ b/examples/org.eclipse.ui.examples.iconpack/transform.txt
@@ -0,0 +1,4 @@
+org\.eclipse\.ui,icons/.*/save_edit.png,/myicons/saveme.png
+org\.eclipse\.ui,icons/.*/save_edit@2x.png,/myicons/saveme@2x.png
+
+
diff --git a/examples/org.eclipse.ui.examples.javaeditor/.settings/org.eclipse.pde.prefs b/examples/org.eclipse.ui.examples.javaeditor/.settings/org.eclipse.pde.prefs
index d1046a83ac5..0b77bbf17aa 100644
--- a/examples/org.eclipse.ui.examples.javaeditor/.settings/org.eclipse.pde.prefs
+++ b/examples/org.eclipse.ui.examples.javaeditor/.settings/org.eclipse.pde.prefs
@@ -16,7 +16,7 @@ compilers.p.internal=1
compilers.p.missing-packages=0
compilers.p.missing-version-export-package=2
compilers.p.missing-version-import-package=2
-compilers.p.missing-version-require-bundle=1
+compilers.p.missing-version-require-bundle=2
compilers.p.no-required-att=0
compilers.p.not-externalized-att=1
compilers.p.unknown-attribute=0
diff --git a/examples/org.eclipse.ui.examples.javaeditor/META-INF/MANIFEST.MF b/examples/org.eclipse.ui.examples.javaeditor/META-INF/MANIFEST.MF
index d2b442166d2..9f67ea8815d 100644
--- a/examples/org.eclipse.ui.examples.javaeditor/META-INF/MANIFEST.MF
+++ b/examples/org.eclipse.ui.examples.javaeditor/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.ui.examples.javaeditor; singleton:=true
-Bundle-Version: 3.4.300.qualifier
+Bundle-Version: 3.4.400.qualifier
Bundle-Activator: org.eclipse.ui.examples.javaeditor.JavaEditorExamplePlugin
Bundle-Vendor: %providerName
Bundle-Localization: plugin
diff --git a/examples/pom.xml b/examples/pom.xml
index e87bb500749..0f54452fce0 100644
--- a/examples/pom.xml
+++ b/examples/pom.xml
@@ -14,7 +14,7 @@
org.eclipse.platformeclipse.platform.ui
- 4.34.0-SNAPSHOT
+ 4.35.0-SNAPSHOTeclipse.platform.ui.examplespom
diff --git a/features/org.eclipse.e4.rcp/feature.xml b/features/org.eclipse.e4.rcp/feature.xml
index 82b63373cb5..0b345ae6218 100644
--- a/features/org.eclipse.e4.rcp/feature.xml
+++ b/features/org.eclipse.e4.rcp/feature.xml
@@ -2,7 +2,7 @@
@@ -76,10 +76,6 @@
id="org.eclipse.e4.core.contexts"
version="0.0.0"/>
-
-
diff --git a/pom.xml b/pom.xml
index 768d1c99e04..35b05d7c590 100644
--- a/pom.xml
+++ b/pom.xml
@@ -16,7 +16,7 @@
org.eclipseeclipse-platform-parent
- 4.34.0-SNAPSHOT
+ 4.35.0-SNAPSHOT../eclipse-platform-parent
@@ -29,6 +29,7 @@
${tests.ignoredWarnings}truetrue
+ true
diff --git a/releng/build.properties b/releng/build.properties
deleted file mode 100644
index b824bbfc4a7..00000000000
--- a/releng/build.properties
+++ /dev/null
@@ -1 +0,0 @@
-pom.model.artifactId=ui-releng
\ No newline at end of file
diff --git a/releng/org.eclipse.ui.releng/.project b/releng/org.eclipse.ui.releng/.project
index f866cdcb5e5..f9964ce782d 100644
--- a/releng/org.eclipse.ui.releng/.project
+++ b/releng/org.eclipse.ui.releng/.project
@@ -1,6 +1,6 @@
- org.eclipse.ui.releng
+ org.eclipse.platform.ui.setup
diff --git a/releng/org.eclipse.ui.releng/platformUIConfiguration.setup b/releng/org.eclipse.ui.releng/platformUIConfiguration.setup
new file mode 100644
index 00000000000..b21105c330c
--- /dev/null
+++ b/releng/org.eclipse.ui.releng/platformUIConfiguration.setup
@@ -0,0 +1,86 @@
+
+
+
+
+ https://www.eclipse.org/downloads/images/committers.png
+
+
+ Eclipse Platform UI
+
+
+
+
+
+ The Eclipse Platform UI installation provides the latest tools needed to work with the project's source code.
+
+
+
+
+
+
+ record
+
+
+
+
+
+
+
+
+
+
+
+ The Eclipse Platform UI workspace provides all the source code of the project.
+
+
+ <p>
+ The <code>Eclipse Platform UI</code> configuration provisions a dedicated development environment for the complete set of projects that comprise the Eclipse Platform UI,
+ i.e. the projects that are contained in the <a href="https://github.com/eclipse-platform/eclipse.platform.ui">eclipse.platform.ui</a> repository.
+ </p>
+ <p>
+ The installation is based on the latest successful integration build of the <code>Eclipse Platform SDK</code>,
+ the PDE target platform, like the installation, is also based on the latest integration build,
+ and the API baseline is based on the most recent release.
+ <p>
+ </p>
+ Please <a href="https://wiki.eclipse.org/Eclipse_Platform_SDK_Provisioning">read the tutorial instructions</a> for more details.
+ </p>
+
+
diff --git a/releng/org.eclipse.ui.releng/platformUi.setup b/releng/org.eclipse.ui.releng/platformUi.setup
index ec3a3b5ff6c..2debd24fcdd 100644
--- a/releng/org.eclipse.ui.releng/platformUi.setup
+++ b/releng/org.eclipse.ui.releng/platformUi.setup
@@ -13,6 +13,11 @@
xsi:schemaLocation="http://www.eclipse.org/oomph/setup/git/1.0 https://raw.githubusercontent.com/eclipse-oomph/oomph/master/setups/models/Git.ecore http://www.eclipse.org/oomph/predicates/1.0 https://raw.githubusercontent.com/eclipse-oomph/oomph/master/setups/models/Predicates.ecore http://www.eclipse.org/oomph/setup/targlets/1.0 https://raw.githubusercontent.com/eclipse-oomph/oomph/master/setups/models/SetupTarglets.ecore http://www.eclipse.org/oomph/setup/workingsets/1.0 https://raw.githubusercontent.com/eclipse-oomph/oomph/master/setups/models/SetupWorkingSets.ecore http://www.eclipse.org/oomph/workingsets/1.0 https://raw.githubusercontent.com/eclipse-oomph/oomph/master/setups/models/WorkingSets.ecore"
name="ui"
label="UI">
+
+
+
+
+
+
+
+
@@ -97,11 +102,6 @@
-
-
-
-
-
diff --git a/tests/org.eclipse.e4.ui.bindings.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.e4.ui.bindings.tests/META-INF/MANIFEST.MF
index c5cc87cc36a..e2ebcebc1f6 100644
--- a/tests/org.eclipse.e4.ui.bindings.tests/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.e4.ui.bindings.tests/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %Bundle-Name
Bundle-SymbolicName: org.eclipse.e4.ui.bindings.tests
-Bundle-Version: 0.14.200.qualifier
+Bundle-Version: 0.14.300.qualifier
Bundle-RequiredExecutionEnvironment: JavaSE-17
Import-Package: org.eclipse.e4.core.commands,
org.eclipse.e4.ui.services,
diff --git a/tests/org.eclipse.e4.ui.bindings.tests/build.properties b/tests/org.eclipse.e4.ui.bindings.tests/build.properties
index a1c320b5699..d5c9867dc83 100644
--- a/tests/org.eclipse.e4.ui.bindings.tests/build.properties
+++ b/tests/org.eclipse.e4.ui.bindings.tests/build.properties
@@ -18,6 +18,5 @@ bin.includes = META-INF/,\
.,\
test.xml,\
about.html,\
- OSGI-INF/l10n/bundle.properties,\
OSGI-INF/
src.includes = about.html
diff --git a/tests/org.eclipse.e4.ui.tests.css.core/META-INF/MANIFEST.MF b/tests/org.eclipse.e4.ui.tests.css.core/META-INF/MANIFEST.MF
index dd9cac31a5d..ed3fab0bc63 100644
--- a/tests/org.eclipse.e4.ui.tests.css.core/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.e4.ui.tests.css.core/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %Bundle-Name
Bundle-SymbolicName: org.eclipse.e4.ui.tests.css.core
-Bundle-Version: 1.302.500.qualifier
+Bundle-Version: 1.302.600.qualifier
Require-Bundle: org.eclipse.core.runtime,
org.eclipse.swt,
org.eclipse.e4.ui.css.core,
diff --git a/tests/org.eclipse.e4.ui.tests.css.core/build.properties b/tests/org.eclipse.e4.ui.tests.css.core/build.properties
index bcbe3860e57..94e47dbb4f4 100644
--- a/tests/org.eclipse.e4.ui.tests.css.core/build.properties
+++ b/tests/org.eclipse.e4.ui.tests.css.core/build.properties
@@ -18,7 +18,6 @@ bin.includes = META-INF/,\
.,\
test.xml,\
about.html,\
- OSGI-INF/l10n/bundle.properties,\
OSGI-INF/
src.includes = about.html
diff --git a/tests/org.eclipse.e4.ui.tests.css.swt/META-INF/MANIFEST.MF b/tests/org.eclipse.e4.ui.tests.css.swt/META-INF/MANIFEST.MF
index 59d1e681092..4ec7e3a71c5 100644
--- a/tests/org.eclipse.e4.ui.tests.css.swt/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.e4.ui.tests.css.swt/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %Bundle-Name
Bundle-SymbolicName: org.eclipse.e4.ui.tests.css.swt; singleton:=true
-Bundle-Version: 0.12.600.qualifier
+Bundle-Version: 0.12.700.qualifier
Require-Bundle: org.eclipse.e4.ui.css.core,
org.eclipse.e4.ui.css.swt,
org.eclipse.e4.ui.css.swt.theme;bundle-version="0.9.1",
diff --git a/tests/org.eclipse.e4.ui.tests.css.swt/build.properties b/tests/org.eclipse.e4.ui.tests.css.swt/build.properties
index bcbe3860e57..94e47dbb4f4 100644
--- a/tests/org.eclipse.e4.ui.tests.css.swt/build.properties
+++ b/tests/org.eclipse.e4.ui.tests.css.swt/build.properties
@@ -18,7 +18,6 @@ bin.includes = META-INF/,\
.,\
test.xml,\
about.html,\
- OSGI-INF/l10n/bundle.properties,\
OSGI-INF/
src.includes = about.html
diff --git a/tests/org.eclipse.e4.ui.tests/.classpath b/tests/org.eclipse.e4.ui.tests/.classpath
index 06bb5d7d2cc..7ab1564171f 100644
--- a/tests/org.eclipse.e4.ui.tests/.classpath
+++ b/tests/org.eclipse.e4.ui.tests/.classpath
@@ -1,7 +1,15 @@
-
+
+
+
+
+
-
+
+
+
+
+
diff --git a/tests/org.eclipse.e4.ui.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.e4.ui.tests/META-INF/MANIFEST.MF
index 0afe8caf301..cb90cb0351d 100644
--- a/tests/org.eclipse.e4.ui.tests/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.e4.ui.tests/META-INF/MANIFEST.MF
@@ -29,7 +29,8 @@ Require-Bundle: org.eclipse.emf.ecore.xmi;bundle-version="2.4.0",
org.eclipse.e4.ui.css.swt;bundle-version="0.11.0",
org.mockito.mockito-core;bundle-version="2.13.0",
org.eclipse.e4.ui.css.core;bundle-version="0.10.100",
- org.eclipse.test;bundle-version="3.6.200"
+ org.eclipse.test;bundle-version="3.6.200",
+ org.eclipse.ui.tests.harness
Bundle-RequiredExecutionEnvironment: JavaSE-17
Export-Package: org.eclipse.e4.ui.tests.model.test,
org.eclipse.e4.ui.tests.model.test.impl,
diff --git a/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/tests/application/ClientEditor.java b/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/tests/application/ClientEditor.java
index d170db46c26..79f4a59502e 100644
--- a/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/tests/application/ClientEditor.java
+++ b/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/tests/application/ClientEditor.java
@@ -18,6 +18,7 @@
import org.eclipse.e4.ui.di.Focus;
import org.eclipse.e4.ui.di.Persist;
import org.eclipse.e4.ui.model.application.ui.MDirtyable;
+import org.eclipse.e4.ui.tests.model.test.util.TestException;
public class ClientEditor {
@@ -43,7 +44,7 @@ void delegateFocus() {
void doSave() {
saveCalled = true;
if (throwException) {
- throw new RuntimeException();
+ throw new TestException();
}
dirtyable.setDirty(false);
diff --git a/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/tests/application/EPartServiceTest.java b/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/tests/application/EPartServiceTest.java
index bc7bc7faa16..b443c1999a1 100644
--- a/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/tests/application/EPartServiceTest.java
+++ b/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/tests/application/EPartServiceTest.java
@@ -43,6 +43,7 @@
import org.eclipse.e4.ui.model.application.ui.basic.MWindow;
import org.eclipse.e4.ui.model.application.ui.basic.MWindowElement;
import org.eclipse.e4.ui.services.IServiceConstants;
+import org.eclipse.e4.ui.tests.model.test.util.TestException;
import org.eclipse.e4.ui.tests.workbench.TargetedView;
import org.eclipse.e4.ui.workbench.modeling.EModelService;
import org.eclipse.e4.ui.workbench.modeling.EPartService;
@@ -10103,27 +10104,27 @@ static class ExceptionListener implements IPartListener {
@Override
public void partActivated(MPart part) {
- throw new RuntimeException();
+ throw new TestException();
}
@Override
public void partBroughtToTop(MPart part) {
- throw new RuntimeException();
+ throw new TestException();
}
@Override
public void partDeactivated(MPart part) {
- throw new RuntimeException();
+ throw new TestException();
}
@Override
public void partHidden(MPart part) {
- throw new RuntimeException();
+ throw new TestException();
}
@Override
public void partVisible(MPart part) {
- throw new RuntimeException();
+ throw new TestException();
}
}
diff --git a/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/tests/model/test/util/TestException.java b/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/tests/model/test/util/TestException.java
new file mode 100644
index 00000000000..2002a0cb172
--- /dev/null
+++ b/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/tests/model/test/util/TestException.java
@@ -0,0 +1,25 @@
+/*******************************************************************************
+ * Copyright (c) 2024 Joerg Kubitz 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
+ *
+ * Contributors:
+ * Joerg Kubitz - initial API and implementation
+ ******************************************************************************/
+
+package org.eclipse.e4.ui.tests.model.test.util;
+
+public class TestException extends RuntimeException {
+
+ private static final long serialVersionUID = 1L;
+
+ public TestException() {
+ super("Intentional TestException. Ignore me in the logfile.");
+ }
+
+}
diff --git a/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/tests/workbench/MWindowTest.java b/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/tests/workbench/MWindowTest.java
index 1f1d3ed6d1a..dd6f8311b89 100644
--- a/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/tests/workbench/MWindowTest.java
+++ b/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/tests/workbench/MWindowTest.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2009, 2023 IBM Corporation and others.
+ * Copyright (c) 2009, 2024 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -50,6 +50,7 @@
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Tree;
import org.eclipse.swt.widgets.Widget;
+import org.eclipse.ui.tests.harness.util.DisplayHelper;
import org.junit.Ignore;
import org.junit.Rule;
import org.junit.Test;
@@ -365,12 +366,9 @@ public void testWindow_Height() {
// the shell's width should have been updated
window.setHeight(300);
- while (shell.getDisplay().readAndDispatch()) {
- // spin the event loop
- }
-
+ // Give time for change to propagate
+ DisplayHelper.waitForCondition(shell.getDisplay(), 10000, () -> (300 == shell.getBounds().height));
assertEquals(shell.getBounds().height, window.getHeight());
- assertEquals(300, shell.getBounds().height);
}
@Test
diff --git a/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/tests/workbench/PartRenderingEngineTests.java b/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/tests/workbench/PartRenderingEngineTests.java
index 50d211751ce..f6ba9816001 100644
--- a/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/tests/workbench/PartRenderingEngineTests.java
+++ b/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/tests/workbench/PartRenderingEngineTests.java
@@ -2974,7 +2974,7 @@ public void testBug371100() {
}
@Rule
- public TestWatcher screenshotRule = Screenshots.onFailure();
+ public TestWatcher screenshotRule = Screenshots.onFailure(null);
@Test
public void testBug372226() {
diff --git a/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/tests/workbench/SampleView.java b/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/tests/workbench/SampleView.java
index 92a43d8dc33..53eb07efdc5 100644
--- a/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/tests/workbench/SampleView.java
+++ b/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/tests/workbench/SampleView.java
@@ -22,6 +22,7 @@
import org.eclipse.e4.core.contexts.IEclipseContext;
import org.eclipse.e4.ui.di.PersistState;
import org.eclipse.e4.ui.services.IServiceConstants;
+import org.eclipse.e4.ui.tests.model.test.util.TestException;
import org.eclipse.jface.layout.GridLayoutFactory;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.LabelProvider;
@@ -57,7 +58,7 @@ public SampleView(Composite parent, final IEclipseContext outputContext,
parent.addDisposeListener(e -> {
if (errorOnWidgetDisposal) {
- throw new RuntimeException();
+ throw new TestException();
}
});
@@ -154,7 +155,7 @@ void preDestroy() {
nullParentContext = context.getParent() == null;
if (errorOnPreDestroy) {
- throw new RuntimeException();
+ throw new TestException();
}
}
diff --git a/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/workbench/renderers/swt/StackRendererTest.java b/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/workbench/renderers/swt/StackRendererTest.java
index 6cc804ce8eb..f4f0382841c 100644
--- a/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/workbench/renderers/swt/StackRendererTest.java
+++ b/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/workbench/renderers/swt/StackRendererTest.java
@@ -49,14 +49,12 @@
import org.eclipse.e4.ui.tests.rules.WorkbenchContextRule;
import org.eclipse.e4.ui.workbench.UIEvents;
import org.eclipse.e4.ui.workbench.modeling.EModelService;
-import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.CTabFolder;
import org.eclipse.swt.custom.CTabItem;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Widget;
import org.junit.Before;
@@ -540,8 +538,6 @@ public void testOnboardingIsHiddenWhenEditorOpened() {
partStack.getChildren().add(part1);
partStack.setSelectedElement(part1);
- tabFolder.notifyListeners(SWT.Paint, new Event());
-
expected = new Rectangle(StackRenderer.ONBOARDING_SPACING, StackRenderer.ONBOARDING_TOP_SPACING, 0, 0);
assertEquals(expected, outerOnboardingComposite.getBounds());
}
diff --git a/tests/org.eclipse.jface.tests.databinding/src/org/eclipse/core/tests/databinding/conversion/NumberToStringConverterTest.java b/tests/org.eclipse.jface.tests.databinding/src/org/eclipse/core/tests/databinding/conversion/NumberToStringConverterTest.java
index 051b9ac427b..9eca1416736 100644
--- a/tests/org.eclipse.jface.tests.databinding/src/org/eclipse/core/tests/databinding/conversion/NumberToStringConverterTest.java
+++ b/tests/org.eclipse.jface.tests.databinding/src/org/eclipse/core/tests/databinding/conversion/NumberToStringConverterTest.java
@@ -17,7 +17,6 @@
import static org.junit.Assert.assertEquals;
-import java.lang.reflect.Constructor;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.text.Format;
@@ -127,16 +126,6 @@ public void testConvertBigIntegerToString() throws Exception {
assertEquals(expected, result);
}
- Class> icuBigDecimal = null;
- Constructor> icuBigDecimalCtr = null;
- {
- try {
- icuBigDecimal = Class.forName("com.ibm.icu.math.BigDecimal");
- icuBigDecimalCtr = icuBigDecimal.getConstructor(BigInteger.class, int.class);
- }
- catch(ClassNotFoundException | NoSuchMethodException e) {}
- }
-
@Test
public void testConvertBigDecimalToString() throws Exception {
NumberToStringConverter converter = NumberToStringConverter.fromBigDecimal();
diff --git a/tests/org.eclipse.jface.tests.databinding/src/org/eclipse/core/tests/databinding/conversion/StringToNumberConverterTest.java b/tests/org.eclipse.jface.tests.databinding/src/org/eclipse/core/tests/databinding/conversion/StringToNumberConverterTest.java
index efe2020a749..8ebd2d826ab 100644
--- a/tests/org.eclipse.jface.tests.databinding/src/org/eclipse/core/tests/databinding/conversion/StringToNumberConverterTest.java
+++ b/tests/org.eclipse.jface.tests.databinding/src/org/eclipse/core/tests/databinding/conversion/StringToNumberConverterTest.java
@@ -19,7 +19,6 @@
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertThrows;
-import java.lang.reflect.Constructor;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.text.Format;
@@ -83,16 +82,6 @@ public void testConvertsToBigInteger() throws Exception {
assertEquals(input, result);
}
- Class> icuBigDecimal = null;
- Constructor> icuBigDecimalCtr = null;
- {
- try {
- icuBigDecimal = Class.forName("com.ibm.icu.math.BigDecimal");
- icuBigDecimalCtr = icuBigDecimal.getConstructor(BigInteger.class, int.class);
- }
- catch(ClassNotFoundException | NoSuchMethodException e) {}
- }
-
@Test
public void testConvertsToBigDecimal() throws Exception {
StringToNumberConverter converter = StringToNumberConverter.toBigDecimal(numberFormat);
diff --git a/tests/org.eclipse.jface.tests.databinding/src/org/eclipse/core/tests/internal/databinding/conversion/StringToNumberParserTestHarness.java b/tests/org.eclipse.jface.tests.databinding/src/org/eclipse/core/tests/internal/databinding/conversion/StringToNumberParserTestHarness.java
index 2875ec2ec10..55dd6017ef3 100644
--- a/tests/org.eclipse.jface.tests.databinding/src/org/eclipse/core/tests/internal/databinding/conversion/StringToNumberParserTestHarness.java
+++ b/tests/org.eclipse.jface.tests.databinding/src/org/eclipse/core/tests/internal/databinding/conversion/StringToNumberParserTestHarness.java
@@ -14,7 +14,6 @@
package org.eclipse.core.tests.internal.databinding.conversion;
-import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
@@ -152,49 +151,7 @@ public void testRanges() throws Exception {
assertFalse("invalid BigDecimal min", assertValid(bigDecimalMin));
assertFalse("invalid BigDecimal max", assertValid(bigDecimalMax));
- /**
- * The ICU4J plugin's NumberFormat will return it's own BigDecimal
- * implementation, com.ibm.icu.math.BigDecimal. The issue this causes is
- * that we can't reference this class as it's not part of the
- * replacement plugin. So in order to ensure that we handle Number's
- * that are not part of the JDK stub a number implemenation and ensure
- * that the double representation of this number is used.
- */
- class MyNumber extends Number {
- double value;
- int count;
-
- MyNumber(double value) {
- this.value = value;
- }
-
- private static final long serialVersionUID = 1L;
-
- @Override
- public double doubleValue() {
- count++;
- return value;
- }
-
- @Override
- public float floatValue() {
- return 0;
- }
-
- @Override
- public int intValue() {
- return 0;
- }
-
- @Override
- public long longValue() {
- return 0;
- }
- }
-
- MyNumber number = new MyNumber(1);
- assertEquals(0, number.count);
+ Number number = BigDecimal.valueOf((double) 1);
assertTrue(StringToNumberParser.inIntegerRange(number));
- assertTrue("double value retrieved", number.count > 0);
}
}
diff --git a/tests/org.eclipse.jface.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.jface.tests/META-INF/MANIFEST.MF
index 48ffc6df3f9..77076b9fd83 100644
--- a/tests/org.eclipse.jface.tests/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.jface.tests/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %Bundle-Name
Bundle-SymbolicName: org.eclipse.jface.tests
-Bundle-Version: 1.4.700.qualifier
+Bundle-Version: 1.4.800.qualifier
Automatic-Module-Name: org.eclipse.jface.tests
Bundle-RequiredExecutionEnvironment: JavaSE-17
Require-Bundle: org.junit;bundle-version="4.12.0",
diff --git a/tests/org.eclipse.jface.tests/build.properties b/tests/org.eclipse.jface.tests/build.properties
index 96fe2729107..f667fb9998e 100644
--- a/tests/org.eclipse.jface.tests/build.properties
+++ b/tests/org.eclipse.jface.tests/build.properties
@@ -5,7 +5,6 @@ bin.includes = META-INF/,\
test.xml,\
icons/,\
about.html,\
- OSGI-INF/l10n/bundle.properties,\
OSGI-INF/
# Maven properties, see https://github.com/eclipse/tycho/wiki/Tycho-Pomless
pom.model.property.testClass = org.eclipse.jface.tests.AllTests
diff --git a/tests/org.eclipse.jface.tests/src/org/eclipse/jface/tests/resources/FontRegistryTest.java b/tests/org.eclipse.jface.tests/src/org/eclipse/jface/tests/resources/FontRegistryTest.java
index b578d9f6666..f7fae9ee6f0 100644
--- a/tests/org.eclipse.jface.tests/src/org/eclipse/jface/tests/resources/FontRegistryTest.java
+++ b/tests/org.eclipse.jface.tests/src/org/eclipse/jface/tests/resources/FontRegistryTest.java
@@ -14,8 +14,20 @@
package org.eclipse.jface.tests.resources;
import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotEquals;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assume.assumeTrue;
+import java.time.Duration;
+import java.time.Instant;
+import java.util.concurrent.atomic.AtomicReference;
+
+import org.eclipse.core.runtime.Platform.OS;
+import org.eclipse.jface.resource.FontRegistry;
import org.eclipse.jface.resource.JFaceResources;
+import org.eclipse.swt.graphics.Device;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.graphics.FontData;
import org.eclipse.swt.widgets.Display;
@@ -41,4 +53,48 @@ public void testBug544026() {
assertArrayEquals(fontData, JFaceResources.getDefaultFont().getFontData());
}
+ @Test
+ public void multipleDisplayDispose() {
+ assumeTrue("multiple Display instance only allowed on Windows", OS.isWindows());
+
+ FontRegistry fontRegistry = new FontRegistry();
+ Display secondDisplay = initializeDisplayInSeparateThread();
+ Font fontOnSecondDisplay = secondDisplay.syncCall(fontRegistry::defaultFont);
+
+ Font fontOnThisDisplayBeforeSecondDisplayDispose = fontRegistry.defaultFont();
+ Device displayOfFontOnSecondDisplay = fontOnSecondDisplay.getDevice();
+ // font registry returns same font for every display
+ assertEquals(secondDisplay, displayOfFontOnSecondDisplay);
+ assertEquals(fontOnThisDisplayBeforeSecondDisplayDispose, fontOnSecondDisplay);
+
+ // after disposing font's display, registry should reinitialize the font
+ secondDisplay.syncExec(secondDisplay::dispose);
+ assertTrue(fontOnSecondDisplay.isDisposed());
+ Font fontOnThisDisplayAfterSecondDisplayDispose = fontRegistry.defaultFont();
+ assertNotEquals(fontOnThisDisplayAfterSecondDisplayDispose, fontOnSecondDisplay);
+ }
+
+ private static Display initializeDisplayInSeparateThread() {
+ AtomicReference displayReference = new AtomicReference<>();
+ new Thread(() -> {
+ Display display = new Display();
+ displayReference.set(display);
+ while (!display.isDisposed()) {
+ if (!display.readAndDispatch()) {
+ display.sleep();
+ }
+ }
+ }, "async display creation").start();
+ waitForDisplayInstantiation(displayReference);
+ return displayReference.get();
+ }
+
+ private static void waitForDisplayInstantiation(AtomicReference displayReference) {
+ Instant maximumEndTime = Instant.now().plus(Duration.ofSeconds(10));
+ while (displayReference.get() == null) {
+ assertFalse("display was not instantiated in time", Instant.now().isAfter(maximumEndTime));
+ Thread.yield();
+ }
+ }
+
}
diff --git a/tests/org.eclipse.jface.text.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.jface.text.tests/META-INF/MANIFEST.MF
index 510688556a2..e0b12814d6e 100644
--- a/tests/org.eclipse.jface.text.tests/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.jface.text.tests/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %Plugin.name
Bundle-SymbolicName: org.eclipse.jface.text.tests
-Bundle-Version: 3.13.700.qualifier
+Bundle-Version: 3.13.800.qualifier
Bundle-Vendor: %Plugin.providerName
Bundle-Localization: plugin
Export-Package:
diff --git a/tests/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/HTML2TextReaderTest.java b/tests/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/HTML2TextReaderTest.java
index 39f19788068..035056ad215 100644
--- a/tests/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/HTML2TextReaderTest.java
+++ b/tests/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/HTML2TextReaderTest.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2006, 2016 IBM Corporation and others.
+ * Copyright (c) 2006, 2024 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -16,6 +16,7 @@
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
import java.io.IOException;
import java.io.Reader;
@@ -76,7 +77,7 @@ private void verify(String input, String expectedOutput, int styleRangeCount) th
StyleRange range2= ranges.get(i + 1);
if (range1.start + range1.length > range2.start) {
- assertTrue("StyleRanges overlap", false);
+ fail("StyleRanges overlap");
}
}
@@ -108,7 +109,7 @@ private void verify(String input, String expectedOutput, StyleRange[] styleRange
StyleRange range2= ranges.get(i + 1);
if (range1.start + range1.length > range2.start) {
- assertTrue("StyleRanges overlap", false);
+ fail("StyleRanges overlap");
}
}
diff --git a/tests/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/TestWhitespaceCharacterPainter.java b/tests/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/TestWhitespaceCharacterPainter.java
index 5b3298d050d..62428c482b7 100644
--- a/tests/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/TestWhitespaceCharacterPainter.java
+++ b/tests/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/TestWhitespaceCharacterPainter.java
@@ -11,14 +11,21 @@
*******************************************************************************/
package org.eclipse.jface.text.tests;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotEquals;
import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
@@ -60,17 +67,112 @@ public void after() {
shell.dispose();
}
+ @Test
+ public void multipleSpacesAfterNewLine() throws Exception {
+ List params= collectDrawStringParamsInPaintControl("\n \n ", Arrays.asList(6));
+ assertEquals(4, params.size());
+ DrawStringParams first= params.get(0);
+ assertEquals("\u00b6", first.str);
+ DrawStringParams second= params.get(1);
+ assertEquals("\u00b7\u00b7\u00b7\u00b7\u00b7", second.str);
+ assertNotEquals(first.y, second.y); // y pos of first and second line should be different
+ }
+
+ @Test
+ public void multipleSpacesAfterCarriageReturn() throws Exception {
+ List params= collectDrawStringParamsInPaintControl("\r\n \r\n ", Arrays.asList(7));
+ assertEquals(4, params.size());
+ DrawStringParams first= params.get(0);
+ assertEquals("\u00a4\u00b6", first.str);
+ DrawStringParams second= params.get(1);
+ assertEquals("\u00b7\u00b7\u00b7\u00b7\u00b7", second.str);
+ assertNotEquals(first.y, second.y); // y pos of first and second line should be different
+ }
+
@Test
public void glyphMetricsTakenIntoAccount() throws Exception {
+ verifyDrawStringCalledNTimes("first \nsecond \nthird \n", Arrays.asList(6, 15), 5);
+ }
+
+ @Test
+ public void glyphMetricsAtNewTakenIntoAccount() throws Exception {
+ verifyDrawStringCalledNTimes("first \nsecond", Arrays.asList(7), 2);
+ }
+
+ @Test
+ public void glyphMetricsAtCarriageReturnTakenIntoAccount() throws Exception {
+ verifyDrawStringCalledNTimes("first \r\nsecond", Arrays.asList(7), 2);
+ }
+
+ private void verifyDrawStringCalledNTimes(String str, List styleRangeOffsets, int times) {
+ SourceViewer sourceViewer= new SourceViewer(shell, null, SWT.V_SCROLL | SWT.BORDER);
+ sourceViewer.setDocument(new Document(str));
+ StyledText textWidget= sourceViewer.getTextWidget();
+ textWidget.setFont(JFaceResources.getTextFont());
+ WhitespaceCharacterPainter whitespaceCharPainter= new WhitespaceCharacterPainter(sourceViewer, true, true, true, true, true, true, true,
+ true, true, true, true, 100);
+ sourceViewer.addPainter(whitespaceCharPainter);
+ for (Integer offset : styleRangeOffsets) {
+ textWidget.setStyleRange(createStyleRangeWithMetrics(offset));
+ }
+ Event e= new Event();
+ e.widget= textWidget;
+ PaintEvent ev= new PaintEvent(e);
+
+ ev.gc= mock(GC.class);
+ when(ev.gc.getClipping()).thenReturn(new Rectangle(0, 0, 100, 100));
+ when(ev.gc.stringExtent(anyString())).thenAnswer(new Answer() {
+ @Override
+ public Point answer(InvocationOnMock invocation) throws Throwable {
+ GC gc= new GC(shell);
+ gc.setFont(JFaceResources.getTextFont());
+ Point result= gc.stringExtent(invocation.getArgument(0));
+ gc.dispose();
+ return result;
+ }
+ });
+ when(ev.gc.textExtent(anyString())).thenAnswer(new Answer() {
+ @Override
+ public Point answer(InvocationOnMock invocation) throws Throwable {
+ GC gc= new GC(shell);
+ gc.setFont(JFaceResources.getTextFont());
+ Point result= gc.textExtent(invocation.getArgument(0));
+ gc.dispose();
+ return result;
+ }
+ });
+ when(ev.gc.getFontMetrics()).thenAnswer(new Answer() {
+ @Override
+ public FontMetrics answer(InvocationOnMock invocation) throws Throwable {
+ GC gc= new GC(shell);
+ gc.setFont(JFaceResources.getTextFont());
+ FontMetrics metrics= gc.getFontMetrics();
+ gc.dispose();
+ return metrics;
+ }
+ });
+ ev.x= 0;
+ ev.y= 0;
+ ev.width= 100;
+ ev.height= 100;
+ whitespaceCharPainter.paintControl(ev);
+ verify(ev.gc, times(times)).drawString(anyString(), anyInt(), anyInt(), anyBoolean());
+ }
+
+ private static final record DrawStringParams(String str, int x, int y) {
+ }
+
+ private List collectDrawStringParamsInPaintControl(String source, List styleRangeOffsets) {
SourceViewer sourceViewer= new SourceViewer(shell, null, SWT.V_SCROLL | SWT.BORDER);
- sourceViewer.setDocument(new Document("first \nsecond \nthird \n"));
+ sourceViewer.setDocument(new Document(source));
StyledText textWidget= sourceViewer.getTextWidget();
textWidget.setFont(JFaceResources.getTextFont());
WhitespaceCharacterPainter whitespaceCharPainter= new WhitespaceCharacterPainter(sourceViewer, true, true, true, true, true, true, true,
true, true, true, true, 100);
sourceViewer.addPainter(whitespaceCharPainter);
- textWidget.setStyleRange(createStyleRangeWithMetrics(6));
- textWidget.setStyleRange(createStyleRangeWithMetrics(15));
+ for (Integer offset : styleRangeOffsets) {
+ textWidget.setStyleRange(createStyleRangeWithMetrics(offset));
+ }
Event e= new Event();
e.widget= textWidget;
PaintEvent ev= new PaintEvent(e);
@@ -87,6 +189,16 @@ public Point answer(InvocationOnMock invocation) throws Throwable {
return result;
}
});
+ when(ev.gc.textExtent(anyString())).thenAnswer(new Answer() {
+ @Override
+ public Point answer(InvocationOnMock invocation) throws Throwable {
+ GC gc= new GC(shell);
+ gc.setFont(JFaceResources.getTextFont());
+ Point result= gc.textExtent(invocation.getArgument(0));
+ gc.dispose();
+ return result;
+ }
+ });
when(ev.gc.getFontMetrics()).thenAnswer(new Answer() {
@Override
public FontMetrics answer(InvocationOnMock invocation) throws Throwable {
@@ -97,12 +209,23 @@ public FontMetrics answer(InvocationOnMock invocation) throws Throwable {
return metrics;
}
});
+ List params= new ArrayList<>();
+ doAnswer(new Answer() {
+ @Override
+ public Void answer(InvocationOnMock invocation) throws Throwable {
+ String str= invocation.getArgument(0, String.class);
+ Integer x= invocation.getArgument(1, Integer.class);
+ Integer y= invocation.getArgument(2, Integer.class);
+ params.add(new DrawStringParams(str, x, y));
+ return null;
+ }
+ }).when(ev.gc).drawString(anyString(), anyInt(), anyInt(), anyBoolean());
ev.x= 0;
ev.y= 0;
ev.width= 100;
ev.height= 100;
whitespaceCharPainter.paintControl(ev);
- verify(ev.gc, times(5)).drawString(anyString(), anyInt(), anyInt(), anyBoolean());
+ return params;
}
private StyleRange createStyleRangeWithMetrics(int start) {
diff --git a/tests/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/TextViewerTest.java b/tests/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/TextViewerTest.java
index f0ecf7e0182..45c3f9a1f23 100644
--- a/tests/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/TextViewerTest.java
+++ b/tests/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/TextViewerTest.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2014, 2019 Google, Inc and others.
+ * Copyright (c) 2014, 2024 Google, Inc and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -12,6 +12,7 @@
* Sergey Prigogin (Google) - initial API and implementation
* Mickael Istria (Red Hat Inc.) - [Bug 544708] Ctrl+Home
* Paul Pazderski - [Bug 545530] Test for TextViewer's default IDocumentAdapter implementation.
+ * Latha Patil (ETAS GmbH) - Issue 865 - Test for Surround the selected text with brackets
*******************************************************************************/
package org.eclipse.jface.text.tests;
@@ -24,8 +25,8 @@
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.stream.Collectors;
-import org.junit.After;
import org.junit.Assume;
+import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TestWatcher;
@@ -69,6 +70,7 @@
import org.eclipse.jface.text.hyperlink.URLHyperlink;
import org.eclipse.jface.text.hyperlink.URLHyperlinkDetector;
import org.eclipse.jface.text.source.SourceViewer;
+import org.eclipse.jface.text.source.SourceViewerConfiguration;
import org.eclipse.jface.text.tests.util.DisplayHelper;
/**
@@ -76,22 +78,18 @@
*/
public class TextViewerTest {
- @Rule
- public TestWatcher screenshotRule= Screenshots.onFailure();
-
private Shell fShell;
- @After
- public void tearDown() {
- if (fShell != null && !fShell.isDisposed()) {
- fShell.dispose();
- }
- fShell= null;
+ @Before
+ public void before() {
+ fShell= new Shell();
}
+ @Rule
+ public TestWatcher screenshotRule= Screenshots.onFailure(() -> fShell);
+
@Test
public void testSetRedraw_Bug441827() throws Exception {
- fShell= new Shell();
TextViewer textViewer= new TextViewer(fShell, SWT.NONE);
Document document= new Document("abc");
textViewer.setDocument(document);
@@ -111,7 +109,6 @@ public void testSetRedraw_Bug441827() throws Exception {
@Test
public void testCaretMoveChangesSelection() throws Exception {
- fShell= new Shell();
TextViewer textViewer= new TextViewer(fShell, SWT.NONE);
Document document= new Document("abc");
textViewer.setDocument(document);
@@ -129,7 +126,6 @@ public void testCaretMoveChangesSelection() throws Exception {
@Test
public void testGetCachedSelection() throws Exception {
- fShell= new Shell();
TextViewer textViewer= new TextViewer(fShell, SWT.NONE);
Document document= new Document("abc");
textViewer.setDocument(document);
@@ -145,7 +141,6 @@ public void testGetCachedSelection() throws Exception {
@Test
public void testBlockSelectionAccessors() throws Exception {
- fShell= new Shell();
ITextViewer textViewer= new TextViewer(fShell, SWT.NONE);
Document document= new Document("0123\n4567\n89ab\ncdef");
textViewer.setDocument(document);
@@ -190,7 +185,6 @@ private void checkInAndOutUIThread(Runnable r) throws InterruptedException {
@Test
public void testCtrlHomeViewportListener() {
Assume.assumeFalse("See bug 541415. For whatever reason, this shortcut doesn't work on Mac", Util.isMac());
- fShell= new Shell();
fShell.setLayout(new FillLayout());
fShell.setSize(500, 200);
SourceViewer textViewer= new SourceViewer(fShell, null, SWT.NONE);
@@ -213,7 +207,6 @@ protected boolean condition() {
@Test
public void testCtrlEndViewportListener() {
Assume.assumeFalse("See bug 541415. For whatever reason, this shortcut doesn't work on Mac", Util.isMac());
- fShell= new Shell();
fShell.setLayout(new FillLayout());
fShell.setSize(500, 200);
SourceViewer textViewer= new SourceViewer(fShell, null, SWT.NONE);
@@ -237,7 +230,6 @@ protected boolean condition() {
*/
@Test
public void testDefaultContentImplementation() {
- fShell= new Shell();
final StyledTextContent content;
try {
final TextViewer textViewer= new TextViewer(fShell, SWT.NONE);
@@ -323,7 +315,6 @@ public static String generate5000Lines() {
@Test
public void testShiftLeft() {
- fShell= new Shell();
TextViewer textViewer= new TextViewer(fShell, SWT.NONE);
{
// Normal case, both lines match prefix
@@ -394,7 +385,6 @@ private void checkHyperlink(TextViewer textViewer, int pos, String text, String
@Test
public void testURLHyperlinkDetector() {
- fShell= new Shell();
TextViewer textViewer= new TextViewer(fShell, SWT.NONE);
checkHyperlink(textViewer, 3, "https://foo ", "[https://foo]");
checkHyperlink(textViewer, 0, "", "[]");
@@ -417,7 +407,6 @@ public void testURLHyperlinkDetector() {
@Test
public void testPasteMultiLines() {
- fShell= new Shell();
TextViewer textViewer= new TextViewer(fShell, SWT.NONE);
Document document= new Document();
textViewer.setDocument(document);
@@ -434,7 +423,6 @@ public void testPasteMultiLines() {
@Test
public void testSetSelectionNoDoc() {
- fShell= new Shell();
TextViewer textViewer= new TextViewer(fShell, SWT.NONE);
textViewer.setSelection(TextSelection.emptySelection());
// assert no exception is thrown
@@ -442,7 +430,6 @@ public void testSetSelectionNoDoc() {
@Test
public void testSelectionFromViewerState() {
- fShell= new Shell();
TextViewer textViewer= new TextViewer(fShell, SWT.NONE);
textViewer.setDocument(new Document(
"/**\n"
@@ -469,4 +456,20 @@ public void testSelectionFromViewerState() {
textSelection= (ITextSelection) textViewer.getSelection();
assertEquals(113, textSelection.getOffset());
}
-}
+
+ @Test
+ public void testSurroundwithBracketsStrategy() {
+ fShell= new Shell();
+ final SourceViewer sourceViewer= new SourceViewer(fShell, null, SWT.NONE);
+ sourceViewer.configure(new SourceViewerConfiguration());
+ sourceViewer.setDocument(new Document("Test sample to surround the selected text with brackets"));
+ StyledText text= sourceViewer.getTextWidget();
+ text.setText("Test sample to surround the selected text with brackets");
+ text.setSelection(15, 23);
+ assertEquals(23, text.getCaretOffset());
+ assertEquals("surround", text.getSelectionText());
+ text.insert("[");
+ assertEquals("Test sample to [surround] the selected text with brackets", text.getText());
+ assertEquals(24, text.getCaretOffset());
+ }
+}
\ No newline at end of file
diff --git a/tests/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/codemining/CodeMiningTest.java b/tests/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/codemining/CodeMiningTest.java
index 4775458d4b5..d2442eb1c5f 100644
--- a/tests/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/codemining/CodeMiningTest.java
+++ b/tests/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/codemining/CodeMiningTest.java
@@ -35,6 +35,7 @@
import org.eclipse.swt.graphics.GC;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.ImageData;
+import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Display;
@@ -69,7 +70,7 @@ public class CodeMiningTest {
private Shell fShell;
@Rule
- public TestWatcher screenshotRule= Screenshots.onFailure();
+ public TestWatcher screenshotRule= Screenshots.onFailure(() -> fShell);
@Before
public void setUp() {
@@ -117,7 +118,6 @@ protected boolean condition() {
@After
public void tearDown() {
- fShell.dispose();
fViewer = null;
}
@@ -251,6 +251,71 @@ protected boolean condition() {
}.waitForCondition(fViewer.getTextWidget().getDisplay(), 1000));
}
+ @Test
+ public void testLineHeaderCodeMiningAtEndOfDocumentWithEmptyLine() throws Exception {
+ String source= "first\nsecond\n";
+ fViewer.getDocument().set(source);
+ fViewer.setCodeMiningProviders(new ICodeMiningProvider[] { new ICodeMiningProvider() {
+ @Override
+ public CompletableFuture> provideCodeMinings(ITextViewer viewer, IProgressMonitor monitor) {
+ List minings= new ArrayList<>();
+ try {
+ minings.add(new LineHeaderCodeMining(new Position(source.length(), 0), this, null) {
+ @Override
+ public String getLabel() {
+ return "multiline first line\nmultiline second line\nmultiline third line\nmultiline fourth line";
+ }
+ });
+ } catch (BadLocationException e) {
+ e.printStackTrace();
+ }
+ return CompletableFuture.completedFuture(minings);
+ }
+
+ @Override
+ public void dispose() {
+ }
+ } });
+ Assert.assertTrue("Code mining is not visible at end of document", new DisplayHelper() {
+ @Override
+ protected boolean condition() {
+ try {
+ return hasCodeMiningPrintedAfterTextOnLine(fViewer, 2);
+ } catch (BadLocationException e) {
+ e.printStackTrace();
+ return false;
+ }
+ }
+ }.waitForCondition(fViewer.getTextWidget().getDisplay(), 10_000));
+ }
+
+ @Test
+ public void testCodeMiningAtEndOfDocumentWithEmptyLine() throws Exception {
+ String source= "first\nsecond\n";
+ fViewer.getDocument().set(source);
+ fViewer.setCodeMiningProviders(new ICodeMiningProvider[] { new ICodeMiningProvider() {
+ @Override
+ public CompletableFuture> provideCodeMinings(ITextViewer viewer, IProgressMonitor monitor) {
+ return CompletableFuture.completedFuture(Collections.singletonList(new StaticContentLineCodeMining(new Position(source.length(), 0), true, "mining", this)));
+ }
+
+ @Override
+ public void dispose() {
+ }
+ } });
+ Assert.assertTrue("Code mining is not visible at end of document", new DisplayHelper() {
+ @Override
+ protected boolean condition() {
+ try {
+ return hasCodeMiningPrintedAfterTextOnLine(fViewer, 2);
+ } catch (BadLocationException e) {
+ e.printStackTrace();
+ return false;
+ }
+ }
+ }.waitForCondition(fViewer.getTextWidget().getDisplay(), 10_000));
+ }
+
@Test
public void testCodeMiningEndOfLine() {
fViewer.getDocument().set("a\n");
@@ -390,7 +455,18 @@ private static boolean hasCodeMiningPrintedAfterTextOnLine(ITextViewer viewer, i
if (lineLength < 0) {
lineLength= 0;
}
- Rectangle secondLineBounds= widget.getTextBounds(document.getLineOffset(line), document.getLineOffset(line) + lineLength);
+ Rectangle secondLineBounds= null;
+ int lineOffset= document.getLineOffset(line);
+ if (lineOffset >= document.getLength()) {
+ int off= document.getLength() - 1;
+ secondLineBounds= widget.getTextBounds(off, off + lineLength);
+ Point l= widget.getLocationAtOffset(lineOffset);
+ int lineVerticalIndent= widget.getLineVerticalIndent(line);
+ secondLineBounds.x= l.x;
+ secondLineBounds.y= l.y - lineVerticalIndent;
+ } else {
+ secondLineBounds= widget.getTextBounds(lineOffset, lineOffset + lineLength);
+ }
Image image = new Image(widget.getDisplay(), widget.getSize().x, widget.getSize().y);
GC gc = new GC(widget);
gc.copyArea(image, 0, 0);
diff --git a/tests/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/codemining/StaticContentLineCodeMining.java b/tests/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/codemining/StaticContentLineCodeMining.java
index 726b7a698ca..f44ca28dd22 100644
--- a/tests/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/codemining/StaticContentLineCodeMining.java
+++ b/tests/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/codemining/StaticContentLineCodeMining.java
@@ -24,6 +24,11 @@ public StaticContentLineCodeMining(Position position, String message, ICodeMinin
setLabel(message);
}
+ public StaticContentLineCodeMining(Position position, boolean afterPosition, String message, ICodeMiningProvider provider) {
+ super(position, afterPosition, provider);
+ setLabel(message);
+ }
+
public StaticContentLineCodeMining(int i, char c, ICodeMiningProvider repeatLettersCodeMiningProvider) {
super(new Position(i, 1), repeatLettersCodeMiningProvider);
setLabel(Character.toString(c));
diff --git a/tests/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/source/inlined/AnnotationOnTabTest.java b/tests/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/source/inlined/AnnotationOnTabTest.java
index 4cf6795c238..279a6fb8ccd 100644
--- a/tests/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/source/inlined/AnnotationOnTabTest.java
+++ b/tests/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/source/inlined/AnnotationOnTabTest.java
@@ -74,7 +74,7 @@ public void testTextBoundsMatchPaintedArea() {
// add annotations
int annotationIndex = sourceViewer.getDocument().get().indexOf("annotated");
LineContentAnnotation annotation= new LineContentAnnotation(new Position(annotationIndex, 1), sourceViewer);
- annotation.setText("a"); // single char, so overall annoation is 3 chars, less than default 4 chars
+ annotation.setText("a"); // single char, so overall annotation is 3 chars, less than default 4 chars
support.updateAnnotations(Collections.singleton(annotation));
fParent.open();
Assert.assertTrue(new DisplayHelper() {
@@ -87,6 +87,7 @@ protected boolean condition() {
int referenceIndex = textWidget.getText().indexOf("reference");
Rectangle referenceBounds = textWidget.getTextBounds(referenceIndex, referenceIndex);
Rectangle annotatedCharactedBounds = textWidget.getTextBounds(annotationIndex, annotationIndex);
- Assert.assertTrue("Annotation didn't shift target character to the right, it most likely replaced the tab instead of expanding it", referenceBounds.x < annotatedCharactedBounds.x);
+ Assert.assertTrue("Annotation didn't shift target character to the right, it most likely replaced the tab instead of expanding it",
+ referenceBounds.x + referenceBounds.width < annotatedCharactedBounds.x + annotatedCharactedBounds.width);
}
}
diff --git a/tests/org.eclipse.ltk.core.refactoring.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.ltk.core.refactoring.tests/META-INF/MANIFEST.MF
index 834a380437d..409165497af 100644
--- a/tests/org.eclipse.ltk.core.refactoring.tests/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.ltk.core.refactoring.tests/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@ Automatic-Module-Name: org.eclipse.ltk.core.refactoring.tests
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.ltk.core.refactoring.tests; singleton:=true
-Bundle-Version: 3.10.500.qualifier
+Bundle-Version: 3.10.600.qualifier
Bundle-Activator: org.eclipse.ltk.core.refactoring.tests.RefactoringCoreTestPlugin
Bundle-ActivationPolicy: lazy
Bundle-Vendor: %providerName
diff --git a/tests/org.eclipse.ltk.core.refactoring.tests/src/org/eclipse/ltk/core/refactoring/tests/resource/ResourceRefactoringTests.java b/tests/org.eclipse.ltk.core.refactoring.tests/src/org/eclipse/ltk/core/refactoring/tests/resource/ResourceRefactoringTests.java
index 85bec642453..3e77001f537 100644
--- a/tests/org.eclipse.ltk.core.refactoring.tests/src/org/eclipse/ltk/core/refactoring/tests/resource/ResourceRefactoringTests.java
+++ b/tests/org.eclipse.ltk.core.refactoring.tests/src/org/eclipse/ltk/core/refactoring/tests/resource/ResourceRefactoringTests.java
@@ -49,6 +49,7 @@
import org.eclipse.ltk.core.refactoring.RefactoringCore;
import org.eclipse.ltk.core.refactoring.RefactoringDescriptor;
import org.eclipse.ltk.core.refactoring.RefactoringStatus;
+import org.eclipse.ltk.core.refactoring.resource.CopyProjectDescriptor;
import org.eclipse.ltk.core.refactoring.resource.DeleteResourcesDescriptor;
import org.eclipse.ltk.core.refactoring.resource.MoveRenameResourceDescriptor;
import org.eclipse.ltk.core.refactoring.resource.MoveResourceChange;
@@ -391,6 +392,33 @@ public void testDeleteRefactoring3_bug343584() throws Exception {
}
}
+ @Test
+ public void testCopyProjectRefactoring() throws Exception {
+ String content1= "hello";
+
+ IFolder testFolder= fProject.createFolder("test");
+ IFile file1= fProject.createFile(testFolder, "myFile.txt", content1);
+
+ RefactoringContribution contribution= RefactoringCore.getRefactoringContribution(CopyProjectDescriptor.ID);
+ CopyProjectDescriptor descriptor= (CopyProjectDescriptor) contribution.createDescriptor();
+
+ descriptor.setResourcePath(fProject.getProject().getFullPath());
+ descriptor.setNewName("project2");
+ descriptor.setNewLocation(fProject.getProject().getParent().getFullPath());
+
+ Change undoChange= perform(descriptor);
+
+ IProject targetProject= ResourcesPlugin.getWorkspace().getRoot().getProject("project2");
+
+ assertTrue(targetProject.exists());
+
+ assertMoveRename(file1, targetProject.getFolder("test"), "myFile.txt", content1);
+
+ perform(undoChange);
+
+ assertFalse(targetProject.exists());
+ }
+
private Change perform(Change change) throws CoreException {
PerformChangeOperation op= new PerformChangeOperation(change);
op.run(null);
diff --git a/tests/org.eclipse.search.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.search.tests/META-INF/MANIFEST.MF
index fc529157b0d..ddd2d496922 100644
--- a/tests/org.eclipse.search.tests/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.search.tests/META-INF/MANIFEST.MF
@@ -2,8 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.search.tests;singleton:=true
-Bundle-Version: 3.11.500.qualifier
-Bundle-Activator: org.eclipse.search.tests.SearchTestPlugin
+Bundle-Version: 3.11.700.qualifier
Bundle-Vendor: %providerName
Bundle-Localization: plugin
Export-Package: org.eclipse.search.core.tests;x-internal:=true,
diff --git a/tests/org.eclipse.search.tests/src/org/eclipse/search/core/tests/LineConversionTest.java b/tests/org.eclipse.search.tests/src/org/eclipse/search/core/tests/LineConversionTest.java
index d72b28e8ca9..b38bd6a88a2 100644
--- a/tests/org.eclipse.search.tests/src/org/eclipse/search/core/tests/LineConversionTest.java
+++ b/tests/org.eclipse.search.tests/src/org/eclipse/search/core/tests/LineConversionTest.java
@@ -36,7 +36,7 @@
import org.eclipse.jface.text.Position;
import org.eclipse.search.internal.ui.SearchPlugin;
-import org.eclipse.search.tests.SearchTestPlugin;
+import org.eclipse.search.tests.SearchTestUtil;
import org.eclipse.search2.internal.ui.text.PositionTracker;
@@ -70,7 +70,7 @@ private String getFileContents() {
@Test
public void testConvertToCharacter() throws Exception {
- SearchTestPlugin.openTextEditor(SearchPlugin.getActivePage(), fFile);
+ SearchTestUtil.openTextEditor(SearchPlugin.getActivePage(), fFile);
ITextFileBuffer fb= FileBuffers.getTextFileBufferManager().getTextFileBuffer(fFile.getFullPath(), LocationKind.IFILE);
IDocument doc= fb.getDocument();
@@ -97,7 +97,7 @@ public void testConvertToCharacter() throws Exception {
@Test
public void testBogusLines() throws Exception {
- SearchTestPlugin.openTextEditor(SearchPlugin.getActivePage(), fFile);
+ SearchTestUtil.openTextEditor(SearchPlugin.getActivePage(), fFile);
ITextFileBuffer fb= FileBuffers.getTextFileBufferManager().getTextFileBuffer(fFile.getFullPath(), LocationKind.IFILE);
IDocument doc= fb.getDocument();
@@ -106,7 +106,7 @@ public void testBogusLines() throws Exception {
}
public void atestLineOffsets() throws Exception {
- SearchTestPlugin.openTextEditor(SearchPlugin.getActivePage(), fFile);
+ SearchTestUtil.openTextEditor(SearchPlugin.getActivePage(), fFile);
ITextFileBuffer fb= FileBuffers.getTextFileBufferManager().getTextFileBuffer(fFile.getFullPath(), LocationKind.IFILE);
IDocument doc= fb.getDocument();
diff --git a/tests/org.eclipse.search.tests/src/org/eclipse/search/tests/FileTool.java b/tests/org.eclipse.search.tests/src/org/eclipse/search/tests/FileTool.java
index 6d85f845340..6b9de944037 100644
--- a/tests/org.eclipse.search.tests/src/org/eclipse/search/tests/FileTool.java
+++ b/tests/org.eclipse.search.tests/src/org/eclipse/search/tests/FileTool.java
@@ -25,6 +25,8 @@
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
+import org.osgi.framework.Bundle;
+
import org.eclipse.core.runtime.FileLocator;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Plugin;
@@ -157,6 +159,18 @@ public static File getFileInPlugin(Plugin plugin, IPath path) {
}
}
+
+ public static File getFileInBundle(Bundle bundle, IPath path) {
+ try {
+ URL installURL= bundle.getEntry(path.toString());
+ URL localURL= FileLocator.toFileURL(installURL);
+ return new File(localURL.getFile());
+ } catch (IOException e) {
+ return null;
+ }
+ }
+
+
public static File createTempFileInPlugin(Plugin plugin, IPath path) {
IPath stateLocation= plugin.getStateLocation();
stateLocation= stateLocation.append(path);
diff --git a/tests/org.eclipse.search.tests/src/org/eclipse/search/tests/ResourceHelper.java b/tests/org.eclipse.search.tests/src/org/eclipse/search/tests/ResourceHelper.java
index f61582e1bd6..d5507ab409e 100644
--- a/tests/org.eclipse.search.tests/src/org/eclipse/search/tests/ResourceHelper.java
+++ b/tests/org.eclipse.search.tests/src/org/eclipse/search/tests/ResourceHelper.java
@@ -20,7 +20,10 @@
import java.util.zip.ZipException;
import java.util.zip.ZipFile;
+import org.osgi.framework.FrameworkUtil;
+
import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.ILog;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.NullProgressMonitor;
@@ -76,7 +79,7 @@ public static void delete(final IResource resource) throws CoreException {
i= MAX_RETRY;
} catch (CoreException e) {
if (i == MAX_RETRY - 1) {
- SearchTestPlugin.getDefault().getLog().log(e.getStatus());
+ ILog.get().log(e.getStatus());
throw e;
}
System.gc(); // help windows to really close file locks
@@ -171,7 +174,7 @@ public static IProject createLinkedProject(String projectName, Plugin plugin, IP
public static IProject createJUnitSourceProject(String projectName) throws CoreException, ZipException, IOException {
IProject project= ResourceHelper.createProject(projectName);
- try (ZipFile zip= new ZipFile(FileTool.getFileInPlugin(SearchTestPlugin.getDefault(), IPath.fromOSString("testresources/junit37-noUI-src.zip")))) { //$NON-NLS-1$
+ try (ZipFile zip= new ZipFile(FileTool.getFileInBundle(FrameworkUtil.getBundle(ResourceHelper.class), IPath.fromOSString("testresources/junit37-noUI-src.zip")))) { //$NON-NLS-1$
FileTool.unzip(zip, project.getLocation().toFile());
}
project.refreshLocal(IResource.DEPTH_INFINITE, null);
diff --git a/tests/org.eclipse.search.tests/src/org/eclipse/search/tests/SearchTestPlugin.java b/tests/org.eclipse.search.tests/src/org/eclipse/search/tests/SearchTestUtil.java
similarity index 76%
rename from tests/org.eclipse.search.tests/src/org/eclipse/search/tests/SearchTestPlugin.java
rename to tests/org.eclipse.search.tests/src/org/eclipse/search/tests/SearchTestUtil.java
index 2ed8b407dc9..0dfd54b4eec 100644
--- a/tests/org.eclipse.search.tests/src/org/eclipse/search/tests/SearchTestPlugin.java
+++ b/tests/org.eclipse.search.tests/src/org/eclipse/search/tests/SearchTestUtil.java
@@ -23,33 +23,15 @@
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.ide.IDE;
-import org.eclipse.ui.plugin.AbstractUIPlugin;
import org.eclipse.ui.editors.text.EditorsUI;
-import org.eclipse.search.ui.NewSearchUI;
-
-import org.eclipse.search2.internal.ui.SearchView;
-
/**
- * Plugin class for search tests.
+ * Util class for search tests.
*/
-public class SearchTestPlugin extends AbstractUIPlugin {
- //The shared instance.
- private static SearchTestPlugin fgPlugin;
-
- public SearchTestPlugin() {
- fgPlugin = this;
- }
+public class SearchTestUtil {
- public static SearchTestPlugin getDefault() {
- return fgPlugin;
- }
-
- public SearchView getSearchView() {
- return (SearchView) NewSearchUI.activateSearchResultView();
- }
public static void ensureWelcomePageClosed() {
IWorkbenchWindow activeWorkbenchWindow= PlatformUI.getWorkbench().getActiveWorkbenchWindow();
diff --git a/tests/org.eclipse.search.tests/src/org/eclipse/search/tests/filesearch/AnnotationManagerTest.java b/tests/org.eclipse.search.tests/src/org/eclipse/search/tests/filesearch/AnnotationManagerTest.java
index 5100700f577..21cb543ee18 100644
--- a/tests/org.eclipse.search.tests/src/org/eclipse/search/tests/filesearch/AnnotationManagerTest.java
+++ b/tests/org.eclipse.search.tests/src/org/eclipse/search/tests/filesearch/AnnotationManagerTest.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2024 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -43,13 +43,14 @@
import org.eclipse.search.internal.ui.text.FileMatch;
import org.eclipse.search.internal.ui.text.FileSearchQuery;
import org.eclipse.search.internal.ui.text.FileSearchResult;
-import org.eclipse.search.tests.SearchTestPlugin;
+import org.eclipse.search.tests.SearchTestUtil;
import org.eclipse.search.ui.NewSearchUI;
import org.eclipse.search.ui.text.AbstractTextSearchResult;
import org.eclipse.search.ui.text.FileTextSearchScope;
import org.eclipse.search.ui.text.Match;
import org.eclipse.search2.internal.ui.InternalSearchUI;
+import org.eclipse.search2.internal.ui.SearchView;
import org.eclipse.search2.internal.ui.text.EditorAnnotationManager;
public class AnnotationManagerTest {
@@ -63,7 +64,7 @@ public class AnnotationManagerTest {
@Before
public void setUp() {
- SearchTestPlugin.ensureWelcomePageClosed();
+ SearchTestUtil.ensureWelcomePageClosed();
EditorAnnotationManager.debugSetHighlighterType(EditorAnnotationManager.HIGHLIGHTER_ANNOTATION);
String[] fileNamePattern= { "*.java" };
FileTextSearchScope scope= FileTextSearchScope.newWorkspaceScope(fileNamePattern, false);
@@ -89,7 +90,7 @@ public void testAddAnnotation() throws Exception {
try {
for (Object f : files) {
IFile file = (IFile) f;
- ITextEditor editor= (ITextEditor)SearchTestPlugin.openTextEditor(SearchPlugin.getActivePage(), file);
+ ITextEditor editor= (ITextEditor)SearchTestUtil.openTextEditor(SearchPlugin.getActivePage(), file);
IAnnotationModel annotationModel= editor.getDocumentProvider().getAnnotationModel(editor.getEditorInput());
annotationModel.getAnnotationIterator();
HashSet positions= new HashSet<>();
@@ -118,7 +119,7 @@ public void testBogusAnnotation() throws Exception {
NewSearchUI.runQueryInForeground(null, fQuery1);
FileSearchResult result= (FileSearchResult) fQuery1.getSearchResult();
IFile file= (IFile) result.getElements()[0];
- SearchTestPlugin.openTextEditor(PlatformUI.getWorkbench().getWorkbenchWindows()[0].getPages()[0], file);
+ SearchTestUtil.openTextEditor(PlatformUI.getWorkbench().getWorkbenchWindows()[0].getPages()[0], file);
result.addMatch(new FileMatch(file));
}
@@ -132,7 +133,7 @@ public void testRemoveQuery() throws Exception {
try {
for (Object f : files) {
IFile file = (IFile) f;
- ITextEditor editor= (ITextEditor)SearchTestPlugin.openTextEditor(SearchPlugin.getActivePage(), file);
+ ITextEditor editor= (ITextEditor)SearchTestUtil.openTextEditor(SearchPlugin.getActivePage(), file);
IAnnotationModel annotationModel= editor.getDocumentProvider().getAnnotationModel(editor.getEditorInput());
int annotationCount= 0;
for (Iterator annotations= annotationModel.getAnnotationIterator(); annotations.hasNext();) {
@@ -157,9 +158,8 @@ public void testReplaceQuery() throws Exception {
try {
for (Object f : files) {
IFile file = (IFile) f;
- ITextEditor editor= (ITextEditor)SearchTestPlugin.openTextEditor(SearchPlugin.getActivePage(), file);
+ ITextEditor editor= (ITextEditor)SearchTestUtil.openTextEditor(SearchPlugin.getActivePage(), file);
IAnnotationModel annotationModel= editor.getDocumentProvider().getAnnotationModel(editor.getEditorInput());
- int annotationCount= 0;
IDocument document= editor.getDocumentProvider().getDocument(editor.getEditorInput());
for (Iterator annotations= annotationModel.getAnnotationIterator(); annotations.hasNext();) {
Annotation annotation= annotations.next();
@@ -169,7 +169,6 @@ public void testReplaceQuery() throws Exception {
assertTrue(text.equalsIgnoreCase(fQuery2.getSearchString()));
}
}
- assertEquals(0, annotationCount);
}
} finally {
SearchPlugin.getActivePage().closeAllEditors(false);
@@ -182,13 +181,14 @@ public void testSwitchQuery() throws Exception {
AbstractTextSearchResult result= (AbstractTextSearchResult) fQuery1.getSearchResult();
Object[] files= result.getElements();
NewSearchUI.runQueryInForeground(null, fQuery2);
- SearchTestPlugin.getDefault().getSearchView().showSearchResult(result);
+
+ SearchView activateSearchResultView= (SearchView) NewSearchUI.activateSearchResultView();
+ activateSearchResultView.showSearchResult(result);
try {
for (Object f : files) {
IFile file = (IFile) f;
- ITextEditor editor= (ITextEditor)SearchTestPlugin.openTextEditor(SearchPlugin.getActivePage(), file);
+ ITextEditor editor= (ITextEditor)SearchTestUtil.openTextEditor(SearchPlugin.getActivePage(), file);
IAnnotationModel annotationModel= editor.getDocumentProvider().getAnnotationModel(editor.getEditorInput());
- int annotationCount= 0;
IDocument document= editor.getDocumentProvider().getDocument(editor.getEditorInput());
for (Iterator annotations= annotationModel.getAnnotationIterator(); annotations.hasNext();) {
Annotation annotation= annotations.next();
@@ -198,7 +198,6 @@ public void testSwitchQuery() throws Exception {
assertTrue(text.equalsIgnoreCase(fQuery1.getSearchString()));
}
}
- assertEquals(0, annotationCount);
}
} finally {
SearchPlugin.getActivePage().closeAllEditors(false);
diff --git a/tests/org.eclipse.search.tests/src/org/eclipse/search/tests/filesearch/FileSearchTests.java b/tests/org.eclipse.search.tests/src/org/eclipse/search/tests/filesearch/FileSearchTests.java
index 8439dc29140..38791d8fb41 100644
--- a/tests/org.eclipse.search.tests/src/org/eclipse/search/tests/filesearch/FileSearchTests.java
+++ b/tests/org.eclipse.search.tests/src/org/eclipse/search/tests/filesearch/FileSearchTests.java
@@ -42,7 +42,7 @@
import org.eclipse.search.internal.core.text.PatternConstructor;
import org.eclipse.search.internal.ui.SearchPlugin;
import org.eclipse.search.tests.ResourceHelper;
-import org.eclipse.search.tests.SearchTestPlugin;
+import org.eclipse.search.tests.SearchTestUtil;
import org.eclipse.search.ui.text.FileTextSearchScope;
public class FileSearchTests {
@@ -240,10 +240,10 @@ private void testWildCards3(TestResultCollector collector) throws Exception {
IWorkbenchPage activePage= SearchPlugin.getActivePage();
try {
- SearchTestPlugin.openTextEditor(activePage, openFile1);
- SearchTestPlugin.openTextEditor(activePage, openFile2);
- SearchTestPlugin.openTextEditor(activePage, openFile3);
- SearchTestPlugin.openTextEditor(activePage, openFile4);
+ SearchTestUtil.openTextEditor(activePage, openFile1);
+ SearchTestUtil.openTextEditor(activePage, openFile2);
+ SearchTestUtil.openTextEditor(activePage, openFile3);
+ SearchTestUtil.openTextEditor(activePage, openFile4);
long start= System.currentTimeMillis();
@@ -339,7 +339,7 @@ private void testFileOpenInEditor(TestResultCollector collector) throws Exceptio
IFile file2= ResourceHelper.createFile(folder, "file2", buf.toString());
try {
- SearchTestPlugin.openTextEditor(SearchPlugin.getActivePage(), file2);
+ SearchTestUtil.openTextEditor(SearchPlugin.getActivePage(), file2);
Pattern searchPattern= PatternConstructor.createPattern("hello", false, true);
diff --git a/tests/org.eclipse.search.tests/src/org/eclipse/search/tests/filesearch/LineAnnotationManagerTest.java b/tests/org.eclipse.search.tests/src/org/eclipse/search/tests/filesearch/LineAnnotationManagerTest.java
index 86fcd68b2e6..b3f89fbcc13 100644
--- a/tests/org.eclipse.search.tests/src/org/eclipse/search/tests/filesearch/LineAnnotationManagerTest.java
+++ b/tests/org.eclipse.search.tests/src/org/eclipse/search/tests/filesearch/LineAnnotationManagerTest.java
@@ -38,7 +38,7 @@
import org.eclipse.ui.editors.text.EditorsUI;
import org.eclipse.search.internal.ui.SearchPlugin;
-import org.eclipse.search.tests.SearchTestPlugin;
+import org.eclipse.search.tests.SearchTestUtil;
import org.eclipse.search.ui.NewSearchUI;
import org.eclipse.search.ui.text.AbstractTextSearchResult;
import org.eclipse.search.ui.text.FileTextSearchScope;
@@ -81,7 +81,7 @@ public void testLineBasedQuery() throws Exception {
try {
for (Object f : files) {
IFile file= (IFile) f;
- ITextEditor editor= (ITextEditor)SearchTestPlugin.openTextEditor(SearchPlugin.getActivePage(), file);
+ ITextEditor editor= (ITextEditor)SearchTestUtil.openTextEditor(SearchPlugin.getActivePage(), file);
IAnnotationModel annotationModel= editor.getDocumentProvider().getAnnotationModel(editor.getEditorInput());
annotationModel.getAnnotationIterator();
ArrayList positions= new ArrayList<>();
diff --git a/tests/org.eclipse.search.tests/src/org/eclipse/search/tests/filesearch/PositionTrackerTest.java b/tests/org.eclipse.search.tests/src/org/eclipse/search/tests/filesearch/PositionTrackerTest.java
index 12fbcaf36da..3a73fb12e78 100644
--- a/tests/org.eclipse.search.tests/src/org/eclipse/search/tests/filesearch/PositionTrackerTest.java
+++ b/tests/org.eclipse.search.tests/src/org/eclipse/search/tests/filesearch/PositionTrackerTest.java
@@ -40,7 +40,7 @@
import org.eclipse.search.internal.ui.SearchPlugin;
import org.eclipse.search.internal.ui.text.FileSearchQuery;
import org.eclipse.search.internal.ui.text.FileSearchResult;
-import org.eclipse.search.tests.SearchTestPlugin;
+import org.eclipse.search.tests.SearchTestUtil;
import org.eclipse.search.ui.NewSearchUI;
import org.eclipse.search.ui.text.AbstractTextSearchResult;
import org.eclipse.search.ui.text.FileTextSearchScope;
@@ -96,7 +96,7 @@ public void testInsertInsideMatch() throws Exception {
private void checkInsertInsideMatch(FileSearchResult result, IFile file) throws PartInitException, BadLocationException {
Match[] matches= result.getMatches(file);
try {
- SearchTestPlugin.openTextEditor(SearchPlugin.getActivePage(), file);
+ SearchTestUtil.openTextEditor(SearchPlugin.getActivePage(), file);
ITextFileBuffer fb= FileBuffers.getTextFileBufferManager().getTextFileBuffer(file.getFullPath(), LocationKind.IFILE);
Job.getJobManager().beginRule(file, null);
IDocument doc= fb.getDocument();
@@ -129,7 +129,7 @@ private void checkInsertAtZero(AbstractTextSearchResult result, IFile file) thro
originalStarts[i]= matches[i].getOffset();
}
try {
- SearchTestPlugin.openTextEditor(SearchPlugin.getActivePage(), file);
+ SearchTestUtil.openTextEditor(SearchPlugin.getActivePage(), file);
ITextFileBuffer fb= FileBuffers.getTextFileBufferManager().getTextFileBuffer(file.getFullPath(), LocationKind.IFILE);
Job.getJobManager().beginRule(file, null);
IDocument doc= fb.getDocument();
diff --git a/tests/org.eclipse.search.tests/src/org/eclipse/search/tests/filesearch/SearchResultPageTest.java b/tests/org.eclipse.search.tests/src/org/eclipse/search/tests/filesearch/SearchResultPageTest.java
index 9475b77e331..bd6d932701c 100644
--- a/tests/org.eclipse.search.tests/src/org/eclipse/search/tests/filesearch/SearchResultPageTest.java
+++ b/tests/org.eclipse.search.tests/src/org/eclipse/search/tests/filesearch/SearchResultPageTest.java
@@ -36,7 +36,7 @@
import org.eclipse.search.internal.ui.text.FileSearchPage;
import org.eclipse.search.internal.ui.text.FileSearchQuery;
-import org.eclipse.search.tests.SearchTestPlugin;
+import org.eclipse.search.tests.SearchTestUtil;
import org.eclipse.search.ui.ISearchResultViewPart;
import org.eclipse.search.ui.NewSearchUI;
import org.eclipse.search.ui.text.AbstractTextSearchResult;
@@ -52,7 +52,7 @@ public class SearchResultPageTest {
@Before
public void setUp() throws Exception {
- SearchTestPlugin.ensureWelcomePageClosed();
+ SearchTestUtil.ensureWelcomePageClosed();
String[] fileNamePatterns= { "*.java" };
FileTextSearchScope scope= FileTextSearchScope.newWorkspaceScope(fileNamePatterns, false);
diff --git a/tests/org.eclipse.text.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.text.tests/META-INF/MANIFEST.MF
index bfd99b7350f..bf6428c1c20 100644
--- a/tests/org.eclipse.text.tests/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.text.tests/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %Plugin.name
Bundle-SymbolicName: org.eclipse.text.tests
-Bundle-Version: 3.14.600.qualifier
+Bundle-Version: 3.14.800.qualifier
Bundle-Vendor: %Plugin.providerName
Bundle-Localization: plugin
Export-Package:
diff --git a/tests/org.eclipse.text.tests/src/org/eclipse/text/tests/AnnotationModelExtension2Test.java b/tests/org.eclipse.text.tests/src/org/eclipse/text/tests/AnnotationModelExtension2Test.java
index e4b7b9503bf..58e56a6553b 100644
--- a/tests/org.eclipse.text.tests/src/org/eclipse/text/tests/AnnotationModelExtension2Test.java
+++ b/tests/org.eclipse.text.tests/src/org/eclipse/text/tests/AnnotationModelExtension2Test.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2015 IBM Corporation and others.
+ * Copyright (c) 2007, 2024 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -13,7 +13,7 @@
*******************************************************************************/
package org.eclipse.text.tests;
-import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
import java.util.ArrayList;
import java.util.Arrays;
@@ -139,7 +139,7 @@ private void assertEquals(Annotation[] expected, Annotation[] actual, IAnnotatio
for (Annotation a : actual) {
if (!expectedSet.contains(a)) {
String message = "Unexpected annotation " + getName(a) + " in result with models [" + getAnnotationModelNames(insideModel, beforeModel, afterModel) + "]";
- assertTrue(message, false);
+ fail(message);
}
expectedSet.remove(a);
}
@@ -149,7 +149,7 @@ private void assertEquals(Annotation[] expected, Annotation[] actual, IAnnotatio
for (Annotation missing : expectedSet) {
message= message + "\n" + getName(missing);
}
- assertTrue(message, false);
+ fail(message);
}
}
diff --git a/tests/org.eclipse.text.tests/src/org/eclipse/text/tests/ChildDocumentTest.java b/tests/org.eclipse.text.tests/src/org/eclipse/text/tests/ChildDocumentTest.java
index a2f526e707e..a1a975d1fd6 100644
--- a/tests/org.eclipse.text.tests/src/org/eclipse/text/tests/ChildDocumentTest.java
+++ b/tests/org.eclipse.text.tests/src/org/eclipse/text/tests/ChildDocumentTest.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2010 IBM Corporation and others.
+ * Copyright (c) 2000, 2024 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -37,19 +37,13 @@ public class ChildDocumentTest {
private ChildDocumentManager fManager;
- protected void checkPositions(Position[] positions) {
+ protected void checkPositions(Position[] positions) throws BadPositionCategoryException {
- try {
+ Position[] v = fDocument.getPositions(IDocument.DEFAULT_CATEGORY);
+ assertTrue("invalid number of positions", v.length == positions.length);
- Position[] v= fDocument.getPositions(IDocument.DEFAULT_CATEGORY);
- assertTrue("invalid number of positions", v.length == positions.length);
-
- for (int i= 0; i < positions.length; i++) {
- assertEquals(print(v[i]) + " != " + print(positions[i]), positions[i], v[i]);
- }
-
- } catch (BadPositionCategoryException x) {
- assertTrue("BadPositionCategoryException thrown", false);
+ for (int i = 0; i < positions.length; i++) {
+ assertEquals(print(v[i]) + " != " + print(positions[i]), positions[i], v[i]);
}
}
@@ -68,7 +62,7 @@ protected String print(Position p) {
return "[" + p.getOffset() + "," + p.getLength() + "]";
}
- protected void checkLineInformationConsistency() {
+ protected void checkLineInformationConsistency() throws BadLocationException {
DefaultLineTracker textTracker= new DefaultLineTracker();
textTracker.set(fDocument.get());
@@ -77,22 +71,18 @@ protected void checkLineInformationConsistency() {
assertEquals("Child document store and child line tracker are inconsistent", trackerLines, textLines);
- for (int i= 0; i < trackerLines; i++) {
- try {
- IRegion trackerLine = fDocument.getLineInformation(i);
- IRegion textLine = textTracker.getLineInformation(i);
- assertEquals("Child document store and child line tracker are inconsistent", trackerLine.getOffset(),
- textLine.getOffset());
- assertEquals("Child document store and child line tracker are inconsistent", trackerLine.getLength(),
- textLine.getLength());
- } catch (BadLocationException e) {
- throw new AssertionError("BadLocationException thrown", e);
- }
+ for (int i = 0; i < trackerLines; i++) {
+ IRegion trackerLine = fDocument.getLineInformation(i);
+ IRegion textLine = textTracker.getLineInformation(i);
+ assertEquals("Child document store and child line tracker are inconsistent", trackerLine.getOffset(),
+ textLine.getOffset());
+ assertEquals("Child document store and child line tracker are inconsistent", trackerLine.getLength(),
+ textLine.getLength());
}
}
@Before
- public void setUp() {
+ public void setUp() throws BadLocationException {
fParent= new Document();
@@ -111,30 +101,20 @@ public void setUp() {
" }\n";
fParent.set(text);
- fManager= new ChildDocumentManager();
- try {
- fDocument= fManager.createSlaveDocument(fParent);
- if (fDocument instanceof ChildDocument) {
- ChildDocument child= (ChildDocument) fDocument;
- child.setParentDocumentRange(0, fParent.getLength());
- }
- } catch (BadLocationException x) {
- assertTrue(false);
+ fManager = new ChildDocumentManager();
+ fDocument = fManager.createSlaveDocument(fParent);
+ if (fDocument instanceof ChildDocument child) {
+ child.setParentDocumentRange(0, fParent.getLength());
}
- try {
+ fDocument.addPosition(new Position(0, 20));
+ fDocument.addPosition(new Position(21, 15));
+ fDocument.addPosition(new Position(38, 111));
+ fDocument.addPosition(new Position(61, 12));
+ fDocument.addPosition(new Position(75, 27));
+ fDocument.addPosition(new Position(105, 12));
+ fDocument.addPosition(new Position(119, 27));
- fDocument.addPosition(new Position( 0, 20));
- fDocument.addPosition(new Position( 21, 15));
- fDocument.addPosition(new Position( 38, 111));
- fDocument.addPosition(new Position( 61, 12));
- fDocument.addPosition(new Position( 75, 27));
- fDocument.addPosition(new Position(105, 12));
- fDocument.addPosition(new Position(119, 27));
-
- } catch (BadLocationException x) {
- assertTrue("initilization failed", false);
- }
}
@After
@@ -143,17 +123,11 @@ public void tearDown () {
}
@Test
- public void testDelete1() {
+ public void testDelete1() throws BadLocationException, BadPositionCategoryException {
- try {
+ fDocument.replace(21, 16, "");
- fDocument.replace(21, 16, "");
-
- } catch (BadLocationException x) {
- assertTrue("BadLocationException thrown", false);
- }
-
- Position[] positions= new Position[] {
+ Position[] positions = {
new Position( 0, 20),
new Position( 21, 0),
new Position( 22, 111),
@@ -167,62 +141,38 @@ public void testDelete1() {
}
@Test
- public void testEditScript1() {
+ public void testEditScript1() throws BadPositionCategoryException, BadLocationException {
// 1. step
+ fDocument.replace(0, fDocument.getLength(), "");
- try {
-
- fDocument.replace(0, fDocument.getLength(), "");
-
- } catch (BadLocationException x) {
- assertTrue("BadLocationException thrown", false);
- }
-
- Position[] positions= new Position[] {
- new Position( 0, 0)
- };
+ Position[] positions = { new Position(0, 0) };
checkPositions(positions);
-
// 2. step
- try {
-
- fDocument.replace(0, 0, "\t");
-
- } catch (BadLocationException x) {
- assertTrue("BadLocationException thrown", false);
- }
+ fDocument.replace(0, 0, "\t");
- positions= new Position[] {
+ positions = new Position[] {
new Position( 1, 0)
};
checkPositions(positions);
-
}
@Test
- public void testFindPositions() {
-
- try {
-
- fDocument.addPosition(new Position( 21, 13));
- fDocument.addPosition(new Position( 0, 19));
- fDocument.addPosition(new Position( 21, 14));
- fDocument.addPosition(new Position( 21, 16));
- fDocument.addPosition(new Position( 0, 0));
- fDocument.addPosition(new Position( 104, 1));
- fDocument.addPosition(new Position( 120, 1));
- fDocument.addPosition(new Position( 119, 1));
-
- } catch (BadLocationException x) {
- assertTrue("initilization failed", false);
- }
-
-
- Position[] positions= new Position[] {
+ public void testFindPositions() throws BadLocationException, BadPositionCategoryException {
+
+ fDocument.addPosition(new Position(21, 13));
+ fDocument.addPosition(new Position(0, 19));
+ fDocument.addPosition(new Position(21, 14));
+ fDocument.addPosition(new Position(21, 16));
+ fDocument.addPosition(new Position(0, 0));
+ fDocument.addPosition(new Position(104, 1));
+ fDocument.addPosition(new Position(120, 1));
+ fDocument.addPosition(new Position(119, 1));
+
+ Position[] positions = {
new Position( 0, 0),
new Position( 0, 19),
new Position( 0, 20),
@@ -245,17 +195,11 @@ public void testFindPositions() {
}
@Test
- public void testInsert1() {
+ public void testInsert1() throws BadLocationException, BadPositionCategoryException {
- try {
+ fDocument.replace(0, 0, "//comment\n");
- fDocument.replace(0, 0, "//comment\n");
-
- } catch (BadLocationException x) {
- assertTrue("BadLocationException thrown", false);
- }
-
- Position[] positions= new Position[] {
+ Position[] positions = {
new Position( 10, 20),
new Position( 31, 15),
new Position( 48, 111),
@@ -269,17 +213,11 @@ public void testInsert1() {
}
@Test
- public void testInsert2() {
-
- try {
+ public void testInsert2() throws BadLocationException, BadPositionCategoryException {
- fDocument.replace(61, 0, "//comment\n");
+ fDocument.replace(61, 0, "//comment\n");
- } catch (BadLocationException x) {
- assertTrue("BadLocationException thrown", false);
- }
-
- Position[] positions= new Position[] {
+ Position[] positions = {
new Position( 0, 20),
new Position( 21, 15),
new Position( 38, 121),
@@ -293,17 +231,11 @@ public void testInsert2() {
}
@Test
- public void testInsert3() {
-
- try {
+ public void testInsert3() throws BadLocationException, BadPositionCategoryException {
- fDocument.replace(101, 0, "//comment\n");
+ fDocument.replace(101, 0, "//comment\n");
- } catch (BadLocationException x) {
- assertTrue("BadLocationException thrown", false);
- }
-
- Position[] positions= new Position[] {
+ Position[] positions = {
new Position( 0, 20),
new Position( 21, 15),
new Position( 38, 121),
@@ -317,19 +249,11 @@ public void testInsert3() {
}
@Test
- public void testInsert4() {
-
- try {
-
- fDocument.replace(20, 0, "// comment");
+ public void testInsert4() throws BadPositionCategoryException, BadLocationException {
- } catch (BadLocationException x) {
- assertTrue("BadLocationException thrown", false);
- }
-
- System.out.print(fDocument.get());
+ fDocument.replace(20, 0, "// comment");
- Position[] positions= new Position[] {
+ Position[] positions = {
new Position( 0, 20),
new Position( 31, 15),
new Position( 48, 111),
@@ -343,17 +267,11 @@ public void testInsert4() {
}
@Test
- public void testReplace1() {
+ public void testReplace1() throws BadLocationException, BadPositionCategoryException {
- try {
+ fDocument.replace(8, 11, "pkg1");
- fDocument.replace(8, 11, "pkg1");
-
- } catch (BadLocationException x) {
- assertTrue("BadLocationException thrown", false);
- }
-
- Position[] positions= new Position[] {
+ Position[] positions = {
new Position( 0, 13),
new Position( 14, 15),
new Position( 31, 111),
@@ -367,17 +285,10 @@ public void testReplace1() {
}
@Test
- public void testReplace2() {
-
- try {
+ public void testReplace2() throws BadLocationException, BadPositionCategoryException {
+ fDocument.replace(21, 16, "//comment\n");
- fDocument.replace(21, 16, "//comment\n");
-
- } catch (BadLocationException x) {
- assertTrue("BadLocationException thrown", false);
- }
-
- Position[] positions= new Position[] {
+ Position[] positions = {
new Position( 0, 20),
new Position( 31, 0),
new Position( 32, 111),
@@ -391,24 +302,14 @@ public void testReplace2() {
}
@Test
- public void testReplace3() {
-
- Position[] actual= new Position[] {
- new Position(0, 150),
- };
+ public void testReplace3() throws BadLocationException {
- try {
+ Position[] actual = { new Position(0, 150), };
- fDocument.addPosition(actual[0]);
- fDocument.replace(0, 150, "xxxxxxxxxx");
+ fDocument.addPosition(actual[0]);
+ fDocument.replace(0, 150, "xxxxxxxxxx");
- } catch (BadLocationException x) {
- assertTrue("BadLocationException thrown", false);
- }
-
- Position[] expected= new Position[] {
- new Position(0, 10)
- };
+ Position[] expected = { new Position(0, 10) };
checkPositions(expected, actual);
}
@@ -420,57 +321,38 @@ public void testReplace3() {
* https://bugs.eclipse.org/bugs/show_bug.cgi?id=51594
*/
@Test
- public void testReplace4() {
- try {
- int start= fParent.getLineOffset(5);
- int end= fParent.getLineOffset(8);
- ChildDocument child= (ChildDocument) fDocument;
- child.setParentDocumentRange(start, end - start);
- fParent.replace(end, 1, "x");
- checkLineInformationConsistency();
- } catch (BadLocationException e) {
- assertTrue("BadLocationException thrown", false);
- }
+ public void testReplace4() throws BadLocationException {
+ int start = fParent.getLineOffset(5);
+ int end = fParent.getLineOffset(8);
+ ChildDocument child = (ChildDocument) fDocument;
+ child.setParentDocumentRange(start, end - start);
+ fParent.replace(end, 1, "x");
+ checkLineInformationConsistency();
}
@Test
- public void testAppend() {
+ public void testAppend() throws BadLocationException {
- Position[] actual= new Position[] {
- new Position(0, 2),
- };
-
- try {
+ Position[] actual = { new Position(0, 2), };
- fDocument.replace(0, 150, "");
- fDocument.replace(fDocument.getLength(), 0, "xx");
- fDocument.addPosition(actual[0]);
- fDocument.replace(fDocument.getLength(), 0, "xxxxxxxx");
+ fDocument.replace(0, 150, "");
+ fDocument.replace(fDocument.getLength(), 0, "xx");
+ fDocument.addPosition(actual[0]);
+ fDocument.replace(fDocument.getLength(), 0, "xxxxxxxx");
- } catch (BadLocationException x) {
- assertTrue("BadLocationException thrown", false);
- }
-
- Position[] expected= new Position[] {
- new Position(0, 2)
- };
+ Position[] expected = { new Position(0, 2) };
checkPositions(expected, actual);
}
@Test
- public void testShiftLeft() {
-
- try {
+ public void testShiftLeft() throws BadLocationException, BadPositionCategoryException {
- fDocument.replace(73, 1, "");
- fDocument.replace(98, 1, "");
+ fDocument.replace(73, 1, "");
+ fDocument.replace(98, 1, "");
- } catch (BadLocationException x) {
- assertTrue("BadLocationException thrown", false);
- }
- Position[] positions= new Position[] {
+ Position[] positions = {
new Position( 0, 20),
new Position( 21, 15),
new Position( 38, 109),
@@ -484,18 +366,11 @@ public void testShiftLeft() {
}
@Test
- public void testShiftRight() {
-
- try {
-
- fDocument.replace( 73, 0, "\t");
- fDocument.replace(100, 0, "\t");
-
- } catch (BadLocationException x) {
- assertTrue("BadLocationException thrown", false);
- }
+ public void testShiftRight() throws BadLocationException, BadPositionCategoryException {
+ fDocument.replace(73, 0, "\t");
+ fDocument.replace(100, 0, "\t");
- Position[] positions= new Position[] {
+ Position[] positions = {
new Position( 0, 20),
new Position( 21, 15),
new Position( 38, 113),
diff --git a/tests/org.eclipse.text.tests/src/org/eclipse/text/tests/DocumentTest.java b/tests/org.eclipse.text.tests/src/org/eclipse/text/tests/DocumentTest.java
index b83634fcfe1..540083bd6df 100644
--- a/tests/org.eclipse.text.tests/src/org/eclipse/text/tests/DocumentTest.java
+++ b/tests/org.eclipse.text.tests/src/org/eclipse/text/tests/DocumentTest.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2010 IBM Corporation and others.
+ * Copyright (c) 2000, 2024 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -31,17 +31,10 @@ public class DocumentTest {
private Document fDocument;
- protected void checkPositions(Position[] expected) {
-
- try {
-
- Position[] actual= fDocument.getPositions(IDocument.DEFAULT_CATEGORY);
- checkPositions(expected, actual);
-
- } catch (BadPositionCategoryException x) {
- assertTrue("BadPositionCategoryException thrown", false);
- }
+ protected void checkPositions(Position[] expected) throws BadPositionCategoryException {
+ Position[] actual = fDocument.getPositions(IDocument.DEFAULT_CATEGORY);
+ checkPositions(expected, actual);
}
protected void checkPositions(Position[] expected, Position[] actual) {
@@ -55,7 +48,7 @@ protected void checkPositions(Position[] expected, Position[] actual) {
}
@Before
- public void setUp() {
+ public void setUp() throws BadLocationException {
fDocument= new Document();
@@ -75,19 +68,14 @@ public void setUp() {
fDocument.set(text);
- try {
+ fDocument.addPosition(new Position(0, 20)); // "package TestPackage;"
+ fDocument.addPosition(new Position(21, 15)); // "/*\n* comment\n*/"
+ fDocument.addPosition(new Position(38, 111)); // "public class Class {\n ... }"
+ fDocument.addPosition(new Position(61, 12)); // "// comment1\n"
+ fDocument.addPosition(new Position(75, 27)); // "public void method1() {\n }"
+ fDocument.addPosition(new Position(105, 12)); // "// comment2\n"
+ fDocument.addPosition(new Position(119, 27)); // "public void method2() {\n }"
- fDocument.addPosition(new Position( 0, 20)); // "package TestPackage;"
- fDocument.addPosition(new Position( 21, 15)); // "/*\n* comment\n*/"
- fDocument.addPosition(new Position( 38, 111)); // "public class Class {\n ... }"
- fDocument.addPosition(new Position( 61, 12)); // "// comment1\n"
- fDocument.addPosition(new Position( 75, 27)); // "public void method1() {\n }"
- fDocument.addPosition(new Position(105, 12)); // "// comment2\n"
- fDocument.addPosition(new Position(119, 27)); // "public void method2() {\n }"
-
- } catch (BadLocationException x) {
- assertTrue("initilization failed", false);
- }
}
@After
@@ -103,17 +91,11 @@ public void testEmptyDocument() {
}
@Test
- public void testDelete1() {
-
- try {
-
- fDocument.replace(21, 16, "");
+ public void testDelete1() throws BadLocationException, BadPositionCategoryException {
- } catch (BadLocationException x) {
- assertTrue("BadLocationException thrown", false);
- }
+ fDocument.replace(21, 16, "");
- Position[] positions= new Position[] {
+ Position[] positions = {
new Position( 0, 20),
new Position( 21, 0),
new Position( 22, 111),
@@ -127,35 +109,21 @@ public void testDelete1() {
}
@Test
- public void testEditScript1() {
+ public void testEditScript1() throws BadLocationException, BadPositionCategoryException {
// 1. step
+ fDocument.replace(0, fDocument.getLength(), "");
- try {
-
- fDocument.replace(0, fDocument.getLength(), "");
-
- } catch (BadLocationException x) {
- assertTrue("BadLocationException thrown", false);
- }
-
- Position[] positions= new Position[] {
- new Position( 0, 0)
- };
+ Position[] positions = { new Position(0, 0) };
checkPositions(positions);
// 2. step
- try {
-
- fDocument.replace(0, 0, "\t");
- } catch (BadLocationException x) {
- assertTrue("BadLocationException thrown", false);
- }
+ fDocument.replace(0, 0, "\t");
- positions= new Position[] {
+ positions = new Position[] {
new Position( 1, 0)
};
@@ -164,25 +132,18 @@ public void testEditScript1() {
}
@Test
- public void testFindPositions() {
-
- try {
-
- fDocument.addPosition(new Position( 21, 13));
- fDocument.addPosition(new Position( 0, 19));
- fDocument.addPosition(new Position( 21, 14));
- fDocument.addPosition(new Position( 21, 16));
- fDocument.addPosition(new Position( 0, 0));
- fDocument.addPosition(new Position( 104, 1));
- fDocument.addPosition(new Position( 120, 1));
- fDocument.addPosition(new Position( 119, 1));
-
- } catch (BadLocationException x) {
- assertTrue("initilization failed", false);
- }
-
-
- Position[] positions= new Position[] {
+ public void testFindPositions() throws BadLocationException, BadPositionCategoryException {
+
+ fDocument.addPosition(new Position(21, 13));
+ fDocument.addPosition(new Position(0, 19));
+ fDocument.addPosition(new Position(21, 14));
+ fDocument.addPosition(new Position(21, 16));
+ fDocument.addPosition(new Position(0, 0));
+ fDocument.addPosition(new Position(104, 1));
+ fDocument.addPosition(new Position(120, 1));
+ fDocument.addPosition(new Position(119, 1));
+
+ Position[] positions = {
new Position( 0, 0),
new Position( 0, 19),
new Position( 0, 20),
@@ -205,17 +166,10 @@ public void testFindPositions() {
}
@Test
- public void testInsert1() {
-
- try {
+ public void testInsert1() throws BadPositionCategoryException, BadLocationException {
+ fDocument.replace(0, 0, "//comment\n");
- fDocument.replace(0, 0, "//comment\n");
-
- } catch (BadLocationException x) {
- assertTrue("BadLocationException thrown", false);
- }
-
- Position[] positions= new Position[] {
+ Position[] positions = {
new Position( 10, 20),
new Position( 31, 15),
new Position( 48, 111),
@@ -229,15 +183,9 @@ public void testInsert1() {
}
@Test
- public void testInsert2() {
-
- try {
+ public void testInsert2() throws BadLocationException, BadPositionCategoryException {
- fDocument.replace(61, 0, "//comment\n");
-
- } catch (BadLocationException x) {
- assertTrue("BadLocationException thrown", false);
- }
+ fDocument.replace(61, 0, "//comment\n");
Position[] positions= new Position[] {
new Position( 0, 20),
@@ -253,17 +201,11 @@ public void testInsert2() {
}
@Test
- public void testInsert3() {
-
- try {
-
- fDocument.replace(101, 0, "//comment\n");
+ public void testInsert3() throws BadLocationException, BadPositionCategoryException {
- } catch (BadLocationException x) {
- assertTrue("BadLocationException thrown", false);
- }
+ fDocument.replace(101, 0, "//comment\n");
- Position[] positions= new Position[] {
+ Position[] positions = {
new Position( 0, 20),
new Position( 21, 15),
new Position( 38, 121),
@@ -277,19 +219,11 @@ public void testInsert3() {
}
@Test
- public void testInsert4() {
-
- try {
+ public void testInsert4() throws BadLocationException, BadPositionCategoryException {
- fDocument.replace(20, 0, "// comment");
-
- } catch (BadLocationException x) {
- assertTrue("BadLocationException thrown", false);
- }
+ fDocument.replace(20, 0, "// comment");
- System.out.print(fDocument.get());
-
- Position[] positions= new Position[] {
+ Position[] positions = {
new Position( 0, 20),
new Position( 31, 15),
new Position( 48, 111),
@@ -303,17 +237,11 @@ public void testInsert4() {
}
@Test
- public void testReplace1() {
-
- try {
-
- fDocument.replace(8, 11, "pkg1");
+ public void testReplace1() throws BadLocationException, BadPositionCategoryException {
- } catch (BadLocationException x) {
- assertTrue("BadLocationException thrown", false);
- }
+ fDocument.replace(8, 11, "pkg1");
- Position[] positions= new Position[] {
+ Position[] positions = {
new Position( 0, 13),
new Position( 14, 15),
new Position( 31, 111),
@@ -327,17 +255,11 @@ public void testReplace1() {
}
@Test
- public void testReplace2() {
-
- try {
+ public void testReplace2() throws BadLocationException, BadPositionCategoryException {
- fDocument.replace(21, 16, "//comment\n");
-
- } catch (BadLocationException x) {
- assertTrue("BadLocationException thrown", false);
- }
+ fDocument.replace(21, 16, "//comment\n");
- Position[] positions= new Position[] {
+ Position[] positions = {
new Position( 0, 20),
new Position( 31, 0),
new Position( 32, 111),
@@ -351,38 +273,22 @@ public void testReplace2() {
}
@Test
- public void testReplace3() {
-
- Position[] actual= new Position[] {
- new Position(0, 150),
- };
-
- try {
+ public void testReplace3() throws BadLocationException {
- fDocument.addPosition(actual[0]);
- fDocument.replace(0, 150, "xxxxxxxxxx");
+ Position[] actual = { new Position(0, 150), };
- } catch (BadLocationException x) {
- assertTrue("BadLocationException thrown", false);
- }
+ fDocument.addPosition(actual[0]);
+ fDocument.replace(0, 150, "xxxxxxxxxx");
- Position[] expected= new Position[] {
- new Position(0, 10)
- };
+ Position[] expected = { new Position(0, 10) };
checkPositions(expected, actual);
}
@Test
- public void testReplace4() {
-
- try {
+ public void testReplace4() throws BadLocationException, BadPositionCategoryException {
- fDocument.replace(19, 1, "xxxxx;");
-
- } catch (BadLocationException x) {
- assertTrue("BadLocationException thrown", false);
- }
+ fDocument.replace(19, 1, "xxxxx;");
Position[] positions= new Position[] {
new Position( 0, 25),
@@ -398,43 +304,27 @@ public void testReplace4() {
}
@Test
- public void testAppend() {
+ public void testAppend() throws BadLocationException {
- Position[] actual= new Position[] {
- new Position(0, 2),
- };
-
- try {
+ Position[] actual = { new Position(0, 2), };
- fDocument.replace(0, 150, "");
- fDocument.replace(fDocument.getLength(), 0, "xx");
- fDocument.addPosition(actual[0]);
- fDocument.replace(fDocument.getLength(), 0, "xxxxxxxx");
-
- } catch (BadLocationException x) {
- assertTrue("BadLocationException thrown", false);
- }
+ fDocument.replace(0, 150, "");
+ fDocument.replace(fDocument.getLength(), 0, "xx");
+ fDocument.addPosition(actual[0]);
+ fDocument.replace(fDocument.getLength(), 0, "xxxxxxxx");
- Position[] expected= new Position[] {
- new Position(0, 2)
- };
+ Position[] expected = { new Position(0, 2) };
checkPositions(expected, actual);
}
@Test
- public void testShiftLeft() {
-
- try {
+ public void testShiftLeft() throws BadLocationException, BadPositionCategoryException {
- fDocument.replace(73, 1, "");
- fDocument.replace(98, 1, "");
+ fDocument.replace(73, 1, "");
+ fDocument.replace(98, 1, "");
- } catch (BadLocationException x) {
- assertTrue("BadLocationException thrown", false);
- }
-
- Position[] positions= new Position[] {
+ Position[] positions = {
new Position( 0, 20),
new Position( 21, 15),
new Position( 38, 109),
@@ -448,18 +338,12 @@ public void testShiftLeft() {
}
@Test
- public void testShiftRight() {
+ public void testShiftRight() throws BadLocationException, BadPositionCategoryException {
- try {
+ fDocument.replace(73, 0, "\t");
+ fDocument.replace(100, 0, "\t");
- fDocument.replace( 73, 0, "\t");
- fDocument.replace(100, 0, "\t");
-
- } catch (BadLocationException x) {
- assertTrue("BadLocationException thrown", false);
- }
-
- Position[] positions= new Position[] {
+ Position[] positions = {
new Position( 0, 20),
new Position( 21, 15),
new Position( 38, 113),
diff --git a/tests/org.eclipse.text.tests/src/org/eclipse/text/tests/FindReplaceDocumentAdapterTest.java b/tests/org.eclipse.text.tests/src/org/eclipse/text/tests/FindReplaceDocumentAdapterTest.java
index 517939d277d..98de7eb46d7 100644
--- a/tests/org.eclipse.text.tests/src/org/eclipse/text/tests/FindReplaceDocumentAdapterTest.java
+++ b/tests/org.eclipse.text.tests/src/org/eclipse/text/tests/FindReplaceDocumentAdapterTest.java
@@ -15,7 +15,12 @@
*******************************************************************************/
package org.eclipse.text.tests;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertThrows;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
import java.util.Arrays;
import java.util.Locale;
@@ -290,6 +295,18 @@ public void testRegexReplace3() throws Exception {
assertEquals("f0", fDocument.get());
}
+ @Test
+ public void testRegexReplace_invalidRegex() throws Exception {
+ FindReplaceDocumentAdapter findReplaceDocumentAdapter = new FindReplaceDocumentAdapter(fDocument);
+
+ fDocument.set("foo");
+ assertThrows(PatternSyntaxException.class, () -> regexReplace("foo", "foo\\", findReplaceDocumentAdapter));
+ assertEquals("foo", fDocument.get());
+
+ findReplaceDocumentAdapter.replace("foo" + System.lineSeparator(), true);
+ assertEquals("foo" + System.lineSeparator(), fDocument.get());
+ }
+
/*
* @since 3.4
*/
diff --git a/tests/org.eclipse.text.tests/src/org/eclipse/text/tests/templates/GlobalTemplateVariablesDateTest.java b/tests/org.eclipse.text.tests/src/org/eclipse/text/tests/templates/GlobalTemplateVariablesDateTest.java
index b13f190fdf2..8a649f0112a 100644
--- a/tests/org.eclipse.text.tests/src/org/eclipse/text/tests/templates/GlobalTemplateVariablesDateTest.java
+++ b/tests/org.eclipse.text.tests/src/org/eclipse/text/tests/templates/GlobalTemplateVariablesDateTest.java
@@ -64,40 +64,42 @@ public void testWithoutParameter() throws Exception {
@Test
public void testOneParameter() throws Exception {
- TemplateBuffer buffer= fTranslator.translate("This format ${d:date('dd MMM YYYY')} and not ${p:date('YYYY-MM-dd')}");
+ TemplateBuffer buffer = fTranslator
+ .translate("This format ${d:date('dd MMM yyyy')} and not ${p:date('yyyy-MM-dd')}");
fType.resolve(buffer, fContext);
StringBuilder expected= new StringBuilder();
expected.append("This format ");
- expected.append(new SimpleDateFormat("dd MMM YYYY").format(new java.util.Date()));
+ expected.append(new SimpleDateFormat("dd MMM yyyy").format(new java.util.Date()));
expected.append(" and not ");
- expected.append(new SimpleDateFormat("YYYY-MM-dd").format(new java.util.Date()));
+ expected.append(new SimpleDateFormat("yyyy-MM-dd").format(new java.util.Date()));
assertBufferStringAndVariables(expected.toString(), buffer);
}
@Test
public void testSimpleLocale() throws Exception {
- TemplateBuffer buffer= fTranslator.translate("From ${d:date('dd MMM YYYY', 'fr')} to ${d}");
+ TemplateBuffer buffer = fTranslator.translate("From ${d:date('dd MMM yyyy', 'fr')} to ${d}");
fType.resolve(buffer, fContext);
StringBuilder expected= new StringBuilder();
expected.append("From ");
- expected.append(new SimpleDateFormat("dd MMM YYYY", Locale.FRENCH).format(new java.util.Date()));
+ expected.append(new SimpleDateFormat("dd MMM yyyy", Locale.FRENCH).format(new java.util.Date()));
expected.append(" to ");
- expected.append(new SimpleDateFormat("dd MMM YYYY", Locale.FRENCH).format(new java.util.Date()));
+ expected.append(new SimpleDateFormat("dd MMM yyyy", Locale.FRENCH).format(new java.util.Date()));
assertBufferStringAndVariables(expected.toString(), buffer);
}
@Test
public void testComplexLocale() throws Exception {
- TemplateBuffer buffer= fTranslator.translate("France ${d:date('EEEE dd MMMM YYYY', 'fr_FR')} and Germany ${p:date('EEEE dd. MMMM YYYY', 'de_DE')}");
+ TemplateBuffer buffer = fTranslator.translate(
+ "France ${d:date('EEEE dd MMMM yyyy', 'fr_FR')} and Germany ${p:date('EEEE dd. MMMM yyyy', 'de_DE')}");
fType.resolve(buffer, fContext);
StringBuilder expected= new StringBuilder();
expected.append("France ");
- expected.append(new SimpleDateFormat("EEEE dd MMMM YYYY", Locale.FRANCE).format(new java.util.Date()));
+ expected.append(new SimpleDateFormat("EEEE dd MMMM yyyy", Locale.FRANCE).format(new java.util.Date()));
expected.append(" and Germany ");
- expected.append(new SimpleDateFormat("EEEE dd. MMMM YYYY", Locale.GERMANY).format(new java.util.Date()));
+ expected.append(new SimpleDateFormat("EEEE dd. MMMM yyyy", Locale.GERMANY).format(new java.util.Date()));
assertBufferStringAndVariables(expected.toString(), buffer);
}
@@ -115,13 +117,20 @@ public void testInvalidDateFormat() throws Exception {
@Test
public void testInvalidLocale() throws Exception {
- TemplateBuffer buffer= fTranslator.translate("Today is ${d:date('YYYY-MM-dd', 'this_invalid_locale')}!");
+ @SuppressWarnings("deprecation")
+ java.util.Date problemDate = new java.util.Date(2024 - 1900, 12 - 1, 29);
+ assertEquals("2024-12-29",
+ new SimpleDateFormat("yyyy-MM-dd", Locale.GERMAN)
+ .format(problemDate).toString());
+ assertEquals("2025-12-29", new SimpleDateFormat("YYYY-MM-dd", Locale.GERMAN)
+ .format(problemDate).toString());
+ TemplateBuffer buffer = fTranslator.translate("Today is ${d:date('yyyy-MM-dd', 'this_invalid_locale')}!");
fType.resolve(buffer, fContext);
StringBuilder expected= new StringBuilder();
expected.append("Today is ");
expected.append(
- new SimpleDateFormat("YYYY-MM-dd", new Locale("this_invalid_locale")).format(new java.util.Date()));
+ new SimpleDateFormat("yyyy-MM-dd", new Locale("this_invalid_locale")).format(new java.util.Date()));
expected.append("!");
assertBufferStringAndVariables(expected.toString(), buffer);
}
diff --git a/tests/org.eclipse.ui.editors.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.ui.editors.tests/META-INF/MANIFEST.MF
index 74a27a2c7f8..506d79157e6 100644
--- a/tests/org.eclipse.ui.editors.tests/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.ui.editors.tests/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %Plugin.name
Bundle-SymbolicName: org.eclipse.ui.editors.tests;singleton:=true
-Bundle-Version: 3.13.600.qualifier
+Bundle-Version: 3.13.700.qualifier
Bundle-Vendor: %Plugin.providerName
Bundle-Localization: plugin
Export-Package: org.eclipse.jface.text.tests.codemining,
diff --git a/tests/org.eclipse.ui.editors.tests/plugin.xml b/tests/org.eclipse.ui.editors.tests/plugin.xml
index c43805fae01..4d8159a5c94 100644
--- a/tests/org.eclipse.ui.editors.tests/plugin.xml
+++ b/tests/org.eclipse.ui.editors.tests/plugin.xml
@@ -22,4 +22,14 @@
id="org.eclipse.jface.text.tests.codemining.CodeMiningTestProvider">
-
\ No newline at end of file
+
+
+
+
+
diff --git a/tests/org.eclipse.ui.editors.tests/src/org/eclipse/jface/text/tests/codemining/CodeMiningTest.java b/tests/org.eclipse.ui.editors.tests/src/org/eclipse/jface/text/tests/codemining/CodeMiningTest.java
index d91521f50f0..558572147f0 100644
--- a/tests/org.eclipse.ui.editors.tests/src/org/eclipse/jface/text/tests/codemining/CodeMiningTest.java
+++ b/tests/org.eclipse.ui.editors.tests/src/org/eclipse/jface/text/tests/codemining/CodeMiningTest.java
@@ -13,6 +13,7 @@
import java.io.ByteArrayInputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
+import java.util.HashMap;
import java.util.concurrent.Callable;
import org.junit.After;
@@ -41,8 +42,12 @@
import org.eclipse.jface.text.BadLocationException;
import org.eclipse.jface.text.IDocument;
import org.eclipse.jface.text.ITextViewer;
+import org.eclipse.jface.text.Position;
+import org.eclipse.jface.text.source.Annotation;
import org.eclipse.jface.text.source.ISourceViewer;
import org.eclipse.jface.text.source.ISourceViewerExtension5;
+import org.eclipse.jface.text.source.projection.ProjectionAnnotation;
+import org.eclipse.jface.text.source.projection.ProjectionViewer;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.IWorkbenchPage;
@@ -100,6 +105,60 @@ public void run(IProgressMonitor monitor) throws CoreException {
}, new NullProgressMonitor());
}
+ @Test
+ public void testInlinedAnnotationSupportIsInLinesReturnsValidResultAfterDocumentChange() throws Exception {
+ IFile file = project.getFile("test.testprojectionviewer");
+ if (file.exists()) {
+ file.delete(true, new NullProgressMonitor());
+ }
+ String source = "first\nsecond\nthird\n";
+ file.create(new ByteArrayInputStream(source.getBytes("UTF-8")), true, new NullProgressMonitor());
+ CodeMiningTestProvider.provideHeaderMiningAtLine = 2;
+ CodeMiningTestProvider.lineHeaderMiningText = " first line header\n secone line header\n third line header";
+ int offset = source.indexOf("second") + "second".length();
+ IEditorPart editor = IDE.openEditor(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(), file);
+ drainEventQueue();
+ ISourceViewer viewer = (ISourceViewer) editor.getAdapter(ITextViewer.class);
+ StyledText widget = viewer.getTextWidget();
+
+ var annotationModel = ((ProjectionViewer) viewer).getProjectionAnnotationModel();
+ var deletionsArray = new Annotation[] {};
+ var additions = new HashMap();
+ ProjectionAnnotation annot = new ProjectionAnnotation();
+ additions.put(annot, new Position(0, source.length()));
+ annotationModel.modifyAnnotations(deletionsArray, additions, null);
+
+ Assert.assertTrue("Line header code mining above 3rd line not drawn",
+ waitForCondition(widget.getDisplay(), 2000, new Callable() {
+ @Override
+ public Boolean call() throws Exception {
+ try {
+ return existsPixelWithNonBackgroundColorAtLine(viewer, 2);
+ } catch (BadLocationException e) {
+ e.printStackTrace();
+ return false;
+ }
+ }
+ }));
+
+ IDocument doc = viewer.getDocument();
+ widget.setCaretOffset(offset);
+ doc.replace(offset, 0, "\n insert text");
+ drainEventQueue();
+ Assert.assertTrue("Line header code mining above 4th line after inserting text not drawn",
+ waitForCondition(widget.getDisplay(), 2000, new Callable() {
+ @Override
+ public Boolean call() throws Exception {
+ try {
+ return existsPixelWithNonBackgroundColorAtLine(viewer, 3);
+ } catch (BadLocationException e) {
+ e.printStackTrace();
+ return false;
+ }
+ }
+ }));
+ }
+
@Test
public void testCodeMiningOnEmptyLine() throws Exception {
IFile file = project.getFile("test.txt");
@@ -208,12 +267,17 @@ private static boolean existsPixelWithNonBackgroundColorAtLine(ITextViewer viewe
lineLength = 0;
}
int verticalScroolBarWidth = viewer.getTextWidget().getVerticalBar().getThumbBounds().width;
- Rectangle lineBounds = widget.getTextBounds(document.getLineOffset(line),
- document.getLineOffset(line) + lineLength);
+ int lineOffset = document.getLineOffset(line);
+ Rectangle lineBounds = widget.getTextBounds(lineOffset, lineOffset + lineLength);
+ String lineStr = document.get(lineOffset, lineLength);
Image image = new Image(widget.getDisplay(), widget.getSize().x, widget.getSize().y);
try {
GC gc = new GC(widget);
gc.copyArea(image, 0, 0);
+ Point textExtent = gc.textExtent(lineStr);
+ if (lineBounds.height - textExtent.y > textExtent.y) {
+ lineBounds.height -= textExtent.y;
+ }
gc.dispose();
ImageData imageData = image.getImageData();
for (int x = lineBounds.x + 1; x < image.getBounds().width - verticalScroolBarWidth
diff --git a/tests/org.eclipse.ui.editors.tests/src/org/eclipse/jface/text/tests/codemining/CodeMiningTestProvider.java b/tests/org.eclipse.ui.editors.tests/src/org/eclipse/jface/text/tests/codemining/CodeMiningTestProvider.java
index 60f5ff4ffee..c3f6072bd10 100644
--- a/tests/org.eclipse.ui.editors.tests/src/org/eclipse/jface/text/tests/codemining/CodeMiningTestProvider.java
+++ b/tests/org.eclipse.ui.editors.tests/src/org/eclipse/jface/text/tests/codemining/CodeMiningTestProvider.java
@@ -29,7 +29,7 @@
public class CodeMiningTestProvider extends AbstractCodeMiningProvider {
public static int provideHeaderMiningAtLine = -1;
public static int provideContentMiningAtOffset = -1;
-
+ public static String lineHeaderMiningText;
@Override
public CompletableFuture> provideCodeMinings(ITextViewer viewer,
IProgressMonitor monitor) {
@@ -42,6 +42,9 @@ public CompletableFuture> provideCodeMinings(ITextVi
minings.add(new LineHeaderCodeMining(provideHeaderMiningAtLine, viewer.getDocument(), this) {
@Override
public String getLabel() {
+ if (lineHeaderMiningText != null) {
+ return lineHeaderMiningText;
+ }
return "line header mining";
}
});
diff --git a/tests/org.eclipse.ui.editors.tests/src/org/eclipse/jface/text/tests/codemining/TextProjectionTextEditor.java b/tests/org.eclipse.ui.editors.tests/src/org/eclipse/jface/text/tests/codemining/TextProjectionTextEditor.java
new file mode 100644
index 00000000000..ef5440709e7
--- /dev/null
+++ b/tests/org.eclipse.ui.editors.tests/src/org/eclipse/jface/text/tests/codemining/TextProjectionTextEditor.java
@@ -0,0 +1,42 @@
+/*******************************************************************************
+ * Copyright (c) 2024 SAP
+ *
+ * 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.jface.text.tests.codemining;
+
+import org.eclipse.swt.widgets.Composite;
+
+import org.eclipse.jface.text.source.ISourceViewer;
+import org.eclipse.jface.text.source.IVerticalRuler;
+import org.eclipse.jface.text.source.projection.ProjectionSupport;
+import org.eclipse.jface.text.source.projection.ProjectionViewer;
+
+import org.eclipse.ui.texteditor.AbstractDecoratedTextEditor;
+
+public class TextProjectionTextEditor extends AbstractDecoratedTextEditor {
+
+ @Override
+ protected ISourceViewer createSourceViewer(Composite parent, IVerticalRuler ruler, int styles) {
+ fAnnotationAccess = getAnnotationAccess();
+ fOverviewRuler = createOverviewRuler(getSharedColors());
+ ISourceViewer viewer = new ProjectionViewer(parent, ruler, getOverviewRuler(), isOverviewRulerVisible(),
+ styles);
+ getSourceViewerDecorationSupport(viewer);
+ return viewer;
+ }
+
+ @Override
+ public void createPartControl(Composite parent) {
+ super.createPartControl(parent);
+ var projectionViewer = (ProjectionViewer) getSourceViewer();
+ var projectionSupport = new ProjectionSupport(projectionViewer, getAnnotationAccess(), getSharedColors());
+ projectionSupport.install();
+ projectionViewer.enableProjection();
+ }
+}
\ No newline at end of file
diff --git a/tests/org.eclipse.ui.editors.tests/src/org/eclipse/ui/editors/tests/EditorsTestSuite.java b/tests/org.eclipse.ui.editors.tests/src/org/eclipse/ui/editors/tests/EditorsTestSuite.java
index 29593243ade..5bea44de374 100644
--- a/tests/org.eclipse.ui.editors.tests/src/org/eclipse/ui/editors/tests/EditorsTestSuite.java
+++ b/tests/org.eclipse.ui.editors.tests/src/org/eclipse/ui/editors/tests/EditorsTestSuite.java
@@ -41,6 +41,7 @@
ZoomTest.class,
FileDocumentProviderTest.class,
TextFileDocumentProviderTest.class,
+ FindNextActionTest.class,
StatusEditorTest.class,
TextNavigationTest.class,
LargeFileTest.class, CaseActionTest.class,
diff --git a/tests/org.eclipse.ui.editors.tests/src/org/eclipse/ui/editors/tests/FindNextActionTest.java b/tests/org.eclipse.ui.editors.tests/src/org/eclipse/ui/editors/tests/FindNextActionTest.java
new file mode 100644
index 00000000000..20a94932238
--- /dev/null
+++ b/tests/org.eclipse.ui.editors.tests/src/org/eclipse/ui/editors/tests/FindNextActionTest.java
@@ -0,0 +1,263 @@
+/*******************************************************************************
+ * Copyright (c) 2024 Vector Informatik GmbH 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
+ *
+ * Contributors:
+ * Vector Informatik GmbH - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.ui.editors.tests;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.is;
+import static org.junit.Assert.assertEquals;
+
+import java.util.ResourceBundle;
+
+import org.hamcrest.Matchers;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.osgi.framework.FrameworkUtil;
+
+import org.eclipse.core.runtime.CoreException;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.ResourcesPlugin;
+
+import org.eclipse.jface.dialogs.IDialogSettings;
+import org.eclipse.jface.viewers.ISelectionProvider;
+
+import org.eclipse.jface.text.Document;
+import org.eclipse.jface.text.TextSelection;
+
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchPartSite;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.ide.IDE;
+import org.eclipse.ui.internal.findandreplace.HistoryStore;
+
+import org.eclipse.ui.texteditor.AbstractTextEditor;
+import org.eclipse.ui.texteditor.FindNextAction;
+import org.eclipse.ui.texteditor.FindReplaceAction;
+
+public class FindNextActionTest {
+ private static final String TEST_PROJECT_NAME = "TestProject";
+
+ private static final String BUNDLE_FOR_CONSTRUCTED_KEYS_NAME = "org.eclipse.ui.texteditor.ConstructedEditorMessages";//$NON-NLS-1$
+
+ private static ResourceBundle bundleForConstructedKeys = ResourceBundle.getBundle(BUNDLE_FOR_CONSTRUCTED_KEYS_NAME);
+
+ private AbstractTextEditor editor;
+
+ private IProject project;
+
+ private FindNextAction action;
+
+ private static enum Direction {
+ FORWARD, BACKWARD
+ }
+
+ @Before
+ public void createTestProject() throws CoreException {
+ project = ResourcesPlugin.getWorkspace().getRoot().getProject(TEST_PROJECT_NAME);
+ project.create(null);
+ project.open(null);
+ }
+
+ public void openEditorAndFindNextAction(String content, Direction direction) throws CoreException {
+ IFile file = createTestFile(content);
+ editor = openEditor(file);
+ action = new FindNextAction(bundleForConstructedKeys, "findNext", editor, direction == Direction.FORWARD);
+ }
+
+ private IFile createTestFile(String content) throws CoreException {
+ IFile file = project.getFile("file.txt");
+ file.create(content.getBytes(), IResource.FORCE, null);
+ file.setCharset(null, null);
+ return file;
+ }
+
+ private static AbstractTextEditor openEditor(IFile file) throws PartInitException {
+ IWorkbench workbench = PlatformUI.getWorkbench();
+ IWorkbenchPage page = workbench.getActiveWorkbenchWindow().getActivePage();
+ IEditorPart editorPart = IDE.openEditor(page, file);
+ assertThat(editorPart, Matchers.instanceOf(AbstractTextEditor.class));
+ return (AbstractTextEditor) editorPart;
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ resetInitialSearchSettings();
+ closeEditor(editor);
+ editor = null;
+ project.delete(true, null);
+ project = null;
+ TestUtil.cleanUp();
+ }
+
+ private void resetInitialSearchSettings() {
+ IDialogSettings settings = getActionSettings();
+ settings.put("isRegEx", false);
+ settings.put("casesensitive", false);
+ settings.put("wrap", true);
+ settings.put("wholeword", false);
+ }
+
+ private static void closeEditor(IEditorPart editor) {
+ IWorkbenchPartSite site;
+ IWorkbenchPage page;
+ if (editor != null && (site = editor.getSite()) != null && (page = site.getPage()) != null) {
+ page.closeEditor(editor, false);
+ }
+ }
+
+ private void setEditorSelection(int offset, int length) {
+ Document document = (Document) editor.getDocumentProvider().getDocument(editor.getEditorInput());
+ TextSelection selection = new TextSelection(document, offset, length);
+ ISelectionProvider selectionProvider = editor.getSelectionProvider();
+ selectionProvider.setSelection(selection);
+ }
+
+ private void assertSelectionIs(int offset, int length) {
+ assertEquals(offset, getEditorSelection().getRegions()[0].getOffset());
+ assertEquals(length, getEditorSelection().getRegions()[0].getLength());
+ }
+
+ private TextSelection getEditorSelection() {
+ ISelectionProvider selectionProvider = editor.getSelectionProvider();
+ if (selectionProvider.getSelection() instanceof TextSelection) {
+ return (TextSelection) selectionProvider.getSelection();
+ }
+ return null;
+ }
+
+ private IDialogSettings getActionSettings() {
+ IDialogSettings settings = PlatformUI.getDialogSettingsProvider(FrameworkUtil.getBundle(FindNextAction.class))
+ .getDialogSettings();
+ IDialogSettings fDialogSettings = settings.getSection(FindReplaceAction.class.getClass().getName());
+ if (fDialogSettings == null)
+ fDialogSettings = settings.addNewSection(FindReplaceAction.class.getClass().getName());
+ return fDialogSettings;
+ }
+
+ @Test
+ public void testFindNextForward() throws CoreException {
+ openEditorAndFindNextAction("testtesttest", Direction.FORWARD);
+ setEditorSelection(0, 4);
+ action.run();
+ assertSelectionIs(4, 4);
+ action.run();
+ assertSelectionIs(8, 4);
+ action.run();
+ assertSelectionIs(0, 4);
+ }
+
+ @Test
+ public void testFindNextBackwards() throws CoreException {
+ openEditorAndFindNextAction("testtesttest", Direction.BACKWARD);
+ setEditorSelection(4, 4);
+ action.run();
+ assertSelectionIs(0, 4);
+ action.run();
+ assertSelectionIs(8, 4);
+ }
+
+ @Test
+ public void testFindNextFromHistory() throws CoreException {
+ openEditorAndFindNextAction("word-abcd-text", Direction.FORWARD);
+ IDialogSettings settings = getActionSettings();
+ HistoryStore historyStore = new HistoryStore(settings, "findhistory", 15);
+ historyStore.add("abcd");
+ setEditorSelection(0, 0);
+ action.run();
+ assertSelectionIs(5, 4);
+ setEditorSelection(3, 0);
+ action.run();
+ assertSelectionIs(5, 4);
+ }
+
+ @Test
+ public void testFindNextStoresCorrectHistory() throws CoreException {
+ openEditorAndFindNextAction("history", Direction.FORWARD);
+ setEditorSelection(0, "history".length());
+ action.run();
+ IDialogSettings settings = getActionSettings();
+ HistoryStore historyStore = new HistoryStore(settings, "findhistory", 15);
+ assertThat(historyStore.get(0), is("history"));
+ }
+
+ @Test
+ public void testFindNextWithRegExEscapedCorrectly() throws CoreException {
+ openEditorAndFindNextAction("wo+rd-woord", Direction.FORWARD);
+ IDialogSettings settings = getActionSettings();
+ setEditorSelection(0, 5);
+ settings.put("isRegEx", true);
+ action.run();
+ assertSelectionIs(0, 5);
+ }
+
+ @Test
+ public void testCaseSensitiveFindNext() throws CoreException {
+ openEditorAndFindNextAction("wordWORD", Direction.FORWARD);
+ IDialogSettings settings = getActionSettings();
+ settings.put("casesensitive", true);
+ setEditorSelection(0, 4);
+ action.run();
+ assertSelectionIs(0, 4);
+ }
+
+ @Test
+ public void testFindNextMultilineSelection() throws CoreException {
+ openEditorAndFindNextAction("line\n\rnext\n\rnext\r\nline", Direction.FORWARD);
+ // we expect the search string to only contain the first line
+ setEditorSelection(0, 10);
+ action.run();
+ assertSelectionIs(18, 4);
+ }
+
+ @Test
+ public void testFindNextNoWrap() throws CoreException {
+ openEditorAndFindNextAction("wordword", Direction.FORWARD);
+ IDialogSettings settings = getActionSettings();
+ settings.put("wrap", false);
+ setEditorSelection(0, 4);
+ action.run();
+ assertSelectionIs(4, 4);
+ action.run();
+ assertSelectionIs(4, 4);
+ }
+
+ @Test
+ public void testFindWholeWords() throws CoreException {
+ openEditorAndFindNextAction("word longerword word", Direction.FORWARD);
+ IDialogSettings settings = getActionSettings();
+ settings.put("wholeword", true);
+ setEditorSelection(0, 4);
+ action.run();
+ assertSelectionIs(16, 4);
+ }
+
+ @Test
+ public void testFindWholeWordsIsNotWord() throws CoreException {
+ openEditorAndFindNextAction("w ord longerw ordinner w ord", Direction.FORWARD);
+ IDialogSettings settings = getActionSettings();
+ settings.put("wholeword", true);
+ setEditorSelection(0, 5);
+ action.run();
+ assertSelectionIs(12, 5);
+ action.run();
+ assertSelectionIs(23, 5);
+ }
+
+}
\ No newline at end of file
diff --git a/tests/org.eclipse.ui.editors.tests/src/org/eclipse/ui/internal/texteditor/stickyscroll/DefaultStickyLinesProviderTest.java b/tests/org.eclipse.ui.editors.tests/src/org/eclipse/ui/internal/texteditor/stickyscroll/DefaultStickyLinesProviderTest.java
index 5e9fd440589..8aaf61e0310 100644
--- a/tests/org.eclipse.ui.editors.tests/src/org/eclipse/ui/internal/texteditor/stickyscroll/DefaultStickyLinesProviderTest.java
+++ b/tests/org.eclipse.ui.editors.tests/src/org/eclipse/ui/internal/texteditor/stickyscroll/DefaultStickyLinesProviderTest.java
@@ -16,7 +16,7 @@
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.empty;
import static org.hamcrest.Matchers.is;
-import static org.hamcrest.collection.IsIterableContainingInOrder.contains;
+import static org.junit.Assert.assertEquals;
import java.util.List;
@@ -29,6 +29,7 @@
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
+import org.eclipse.jface.text.Document;
import org.eclipse.jface.text.IRegion;
import org.eclipse.jface.text.ITextViewerExtension5;
import org.eclipse.jface.text.source.IVerticalRuler;
@@ -48,6 +49,7 @@ public class DefaultStickyLinesProviderTest {
public void setup() {
shell = new Shell(Display.getDefault());
sourceViewer = new SourceViewer(shell, null, SWT.None);
+ sourceViewer.setDocument(new Document());
stickyLinesProvider = new DefaultStickyLinesProvider();
textWidget = sourceViewer.getTextWidget();
stickyLinesProperties = new StickyLinesProperties(4);
@@ -55,7 +57,7 @@ public void setup() {
@Test
public void testEmptySourceCode() {
- List stickyLines = stickyLinesProvider.getStickyLines(sourceViewer, stickyLinesProperties);
+ List stickyLines = stickyLinesProvider.getStickyLines(sourceViewer, 0, stickyLinesProperties);
assertThat(stickyLines, is(empty()));
}
@@ -65,11 +67,13 @@ public void testSingleStickyLine() {
String text = """
line 1
line 2<""";
- setText(text);
+ textWidget.setText(text);
- List stickyLines = stickyLinesProvider.getStickyLines(sourceViewer, stickyLinesProperties);
+ List stickyLines = stickyLinesProvider.getStickyLines(sourceViewer, 1, stickyLinesProperties);
- assertThat(stickyLines, contains(new StickyLine("line 1", 0)));
+ assertEquals(1, stickyLines.size());
+ assertEquals(0, stickyLines.get(0).getLineNumber());
+ assertEquals("line 1", stickyLines.get(0).getText());
}
@Test
@@ -79,11 +83,12 @@ public void testLineUnderStickyLine() {
line 2<
line 3
line 4""";
- setText(text);
+ textWidget.setText(text);
- List stickyLines = stickyLinesProvider.getStickyLines(sourceViewer, stickyLinesProperties);
+ List stickyLines = stickyLinesProvider.getStickyLines(sourceViewer, 1, stickyLinesProperties);
- assertThat(stickyLines, contains(new StickyLine("line 1", 0), new StickyLine(" line 2<", 1)));
+ assertEquals(1, stickyLines.size());
+ assertEquals(0, stickyLines.get(0).getLineNumber());
}
@Test
@@ -93,11 +98,12 @@ public void testNewStickyRoot() {
line 2
line 3
line 4<""";
- setText(text);
+ textWidget.setText(text);
- List stickyLines = stickyLinesProvider.getStickyLines(sourceViewer, stickyLinesProperties);
+ List stickyLines = stickyLinesProvider.getStickyLines(sourceViewer, 3, stickyLinesProperties);
- assertThat(stickyLines, contains(new StickyLine("line 3", 2)));
+ assertEquals(1, stickyLines.size());
+ assertEquals(2, stickyLines.get(0).getLineNumber());
}
@Test
@@ -108,11 +114,13 @@ public void testIgnoreEmptyLines() {
line 2
line 3<""";
- setText(text);
+ textWidget.setText(text);
- List stickyLines = stickyLinesProvider.getStickyLines(sourceViewer, stickyLinesProperties);
+ List stickyLines = stickyLinesProvider.getStickyLines(sourceViewer, 4, stickyLinesProperties);
- assertThat(stickyLines, contains(new StickyLine("line 1", 0), new StickyLine(" line 2", 2)));
+ assertEquals(2, stickyLines.size());
+ assertEquals(0, stickyLines.get(0).getLineNumber());
+ assertEquals(2, stickyLines.get(1).getLineNumber());
}
@Test
@@ -122,12 +130,13 @@ public void testLinesWithTabs() {
line 1
\tline 2
\t\tline 3<""";
- setText(text);
-
- List stickyLines = stickyLinesProvider.getStickyLines(sourceViewer, stickyLinesProperties);
+ textWidget.setText(text);
- assertThat(stickyLines, contains(new StickyLine("line 1", 0), new StickyLine("\tline 2", 1)));
+ List stickyLines = stickyLinesProvider.getStickyLines(sourceViewer, 2, stickyLinesProperties);
+ assertEquals(2, stickyLines.size());
+ assertEquals(0, stickyLines.get(0).getLineNumber());
+ assertEquals(1, stickyLines.get(1).getLineNumber());
}
@Test
@@ -141,10 +150,11 @@ public void testStartAtEmptyLineWithNext() {
textWidget.setText(text);
textWidget.setTopIndex(3);
- List stickyLines = stickyLinesProvider.getStickyLines(sourceViewer, stickyLinesProperties);
-
- assertThat(stickyLines, contains(new StickyLine("line 1", 0), new StickyLine(" line 2", 2)));
+ List stickyLines = stickyLinesProvider.getStickyLines(sourceViewer, 3, stickyLinesProperties);
+ assertEquals(2, stickyLines.size());
+ assertEquals(0, stickyLines.get(0).getLineNumber());
+ assertEquals(2, stickyLines.get(1).getLineNumber());
}
@Test
@@ -152,63 +162,41 @@ public void testStartAtEmptyLineWithPrevious() {
String text = """
line 1
line 2
- line 3<
- line 4""";
- setText(text);
-
- List stickyLines = stickyLinesProvider.getStickyLines(sourceViewer, stickyLinesProperties);
-
- assertThat(stickyLines, contains(new StickyLine("line 1", 0)));
- }
+ line 3
- @Test
- public void testRemoveStickyLines() {
- String text = """
- line 1
- line 2
- line 3
- line 4<""";
- setText(text);
+ line 4""";
+ textWidget.setText(text);
- List stickyLines = stickyLinesProvider.getStickyLines(sourceViewer, stickyLinesProperties);
+ List stickyLines = stickyLinesProvider.getStickyLines(sourceViewer, 3, stickyLinesProperties);
- assertThat(stickyLines, contains(new StickyLine("line 3", 2)));
+ assertEquals(2, stickyLines.size());
+ assertEquals(0, stickyLines.get(0).getLineNumber());
+ assertEquals(1, stickyLines.get(1).getLineNumber());
}
@Test
- public void testSourceViewerWithDifferentModelAndWindgetLines() {
- sourceViewer = new SourceViewerLineMapping(shell, null, SWT.None);
+ public void testStickyLineWithSourceViewerLineMapping() {
+ sourceViewer = new SourceViewerWithLineMapping(shell, null, SWT.None);
+ sourceViewer.setDocument(new Document());
textWidget = sourceViewer.getTextWidget();
String text = """
line 1
line 2<""";
- setText(text);
-
- List stickyLines = stickyLinesProvider.getStickyLines(sourceViewer, stickyLinesProperties);
-
- assertThat(stickyLines, contains(new StickyLine("line 1", 42)));
- }
-
- /**
- * Set the text into the text widget and set the top index to the line
- * containing the <.
- */
- private void setText(String text) {
textWidget.setText(text);
- String[] lines = text.split("\n");
- for (int i = 0; i < lines.length; i++) {
- if (lines[i].contains(String.valueOf("<"))) {
- textWidget.setTopIndex(i);
- return;
- }
- }
+ // Source viewer line 43 that is mapped to line 1 in the text widget
+ List stickyLines = stickyLinesProvider.getStickyLines(sourceViewer, 1 + 42, stickyLinesProperties);
+
+ assertEquals(1, stickyLines.size());
+ // Source viewer line 42 that is mapped to line 0 in the text widget
+ assertEquals(0 + 42, stickyLines.get(0).getLineNumber());
+ assertEquals("line 1", stickyLines.get(0).getText());
}
- private class SourceViewerLineMapping extends SourceViewer implements ITextViewerExtension5 {
+ private class SourceViewerWithLineMapping extends SourceViewer implements ITextViewerExtension5 {
- public SourceViewerLineMapping(Composite parent, IVerticalRuler ruler, int styles) {
+ public SourceViewerWithLineMapping(Composite parent, IVerticalRuler ruler, int styles) {
super(parent, ruler, styles);
}
@@ -224,7 +212,12 @@ public boolean exposeModelRange(IRegion modelRange) {
@Override
public int widgetLine2ModelLine(int widgetLine) {
- return 42;
+ return widgetLine + 42;
+ }
+
+ @Override
+ public int modelLine2WidgetLine(int widgetLine) {
+ return widgetLine - 42;
}
}
diff --git a/tests/org.eclipse.ui.editors.tests/src/org/eclipse/ui/internal/texteditor/stickyscroll/StickyLineTest.java b/tests/org.eclipse.ui.editors.tests/src/org/eclipse/ui/internal/texteditor/stickyscroll/StickyLineTest.java
new file mode 100644
index 00000000000..99ee26000f0
--- /dev/null
+++ b/tests/org.eclipse.ui.editors.tests/src/org/eclipse/ui/internal/texteditor/stickyscroll/StickyLineTest.java
@@ -0,0 +1,157 @@
+/*******************************************************************************
+ * Copyright (c) 2024 SAP SE.
+ *
+ * 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:
+ * SAP SE - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.ui.internal.texteditor.stickyscroll;
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.StyleRange;
+import org.eclipse.swt.custom.StyledText;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Shell;
+
+import org.eclipse.jface.text.Document;
+import org.eclipse.jface.text.IRegion;
+import org.eclipse.jface.text.ITextViewerExtension5;
+import org.eclipse.jface.text.source.ISourceViewer;
+import org.eclipse.jface.text.source.IVerticalRuler;
+import org.eclipse.jface.text.source.SourceViewer;
+
+public class StickyLineTest {
+
+ private Shell shell;
+ private StyledText textWidget;
+ private Color color;
+ private ISourceViewer sourceViewer;
+
+ @Before
+ public void setUp() {
+ shell = new Shell();
+ sourceViewer = new SourceViewer(shell, null, SWT.None);
+ sourceViewer.setDocument(new Document());
+ textWidget = sourceViewer.getTextWidget();
+ color = new Color(0, 0, 0);
+ }
+
+ @After
+ public void tearDown() {
+ shell.dispose();
+ color.dispose();
+ }
+
+ @Test
+ public void testGetLineNumber() {
+ StickyLine stickyLine = new StickyLine(1, sourceViewer);
+
+ assertEquals(1, stickyLine.getLineNumber());
+ }
+
+ @Test
+ public void testGetText() {
+ textWidget.setText("line1\nline2\nline3");
+ StickyLine stickyLine = new StickyLine(1, sourceViewer);
+
+ assertEquals("line2", stickyLine.getText());
+ }
+
+ @Test
+ public void testGetStyleRanges() {
+ textWidget.setText("line1\nline2\nline3");
+
+ // line1
+ textWidget.setStyleRange(new StyleRange(2, 1, color, null));
+
+ // line2
+ textWidget.setStyleRange(new StyleRange(6, 1, color, null));
+ textWidget.setStyleRange(new StyleRange(8, 2, color, null));
+
+ // line3
+ textWidget.setStyleRange(new StyleRange(15, 1, color, null));
+
+ StickyLine stickyLine = new StickyLine(1, sourceViewer);
+ StyleRange[] styleRanges = stickyLine.getStyleRanges();
+
+ assertEquals(2, styleRanges.length);
+ assertEquals(0, styleRanges[0].start);
+ assertEquals(1, styleRanges[0].length);
+ assertEquals(2, styleRanges[1].start);
+ assertEquals(2, styleRanges[1].length);
+ }
+
+ @Test
+ public void WithSourceViewerLineMapping() {
+ sourceViewer = new SourceViewerWithLineMapping(shell, null, SWT.None);
+ sourceViewer.setDocument(new Document());
+ textWidget = sourceViewer.getTextWidget();
+
+ textWidget.setText("line1\nline2\nline3");
+
+ // line1
+ textWidget.setStyleRange(new StyleRange(2, 1, color, null));
+
+ // line2
+ textWidget.setStyleRange(new StyleRange(6, 1, color, null));
+ textWidget.setStyleRange(new StyleRange(8, 2, color, null));
+
+ // line3
+ textWidget.setStyleRange(new StyleRange(15, 1, color, null));
+
+ StickyLine stickyLine = new StickyLine(1 + 42, sourceViewer);
+ StyleRange[] styleRanges = stickyLine.getStyleRanges();
+
+ assertEquals(1 + 42, stickyLine.getLineNumber());
+
+ assertEquals("line2", stickyLine.getText());
+
+ assertEquals(2, styleRanges.length);
+ assertEquals(0, styleRanges[0].start);
+ assertEquals(1, styleRanges[0].length);
+ assertEquals(2, styleRanges[1].start);
+ assertEquals(2, styleRanges[1].length);
+ }
+
+ private class SourceViewerWithLineMapping extends SourceViewer implements ITextViewerExtension5 {
+
+ public SourceViewerWithLineMapping(Composite parent, IVerticalRuler ruler, int styles) {
+ super(parent, ruler, styles);
+ }
+
+ @Override
+ public IRegion[] getCoveredModelRanges(IRegion modelRange) {
+ return null;
+ }
+
+ @Override
+ public boolean exposeModelRange(IRegion modelRange) {
+ return false;
+ }
+
+ @Override
+ public int widgetLine2ModelLine(int widgetLine) {
+ return widgetLine + 42;
+ }
+
+ @Override
+ public int modelLine2WidgetLine(int widgetLine) {
+ return widgetLine - 42;
+ }
+
+ }
+
+}
diff --git a/tests/org.eclipse.ui.editors.tests/src/org/eclipse/ui/internal/texteditor/stickyscroll/StickyScrollingControlTest.java b/tests/org.eclipse.ui.editors.tests/src/org/eclipse/ui/internal/texteditor/stickyscroll/StickyScrollingControlTest.java
index 031e3cfa623..04fdfd18012 100644
--- a/tests/org.eclipse.ui.editors.tests/src/org/eclipse/ui/internal/texteditor/stickyscroll/StickyScrollingControlTest.java
+++ b/tests/org.eclipse.ui.editors.tests/src/org/eclipse/ui/internal/texteditor/stickyscroll/StickyScrollingControlTest.java
@@ -56,6 +56,7 @@ public class StickyScrollingControlTest {
private Color separatorColor;
private StickyScrollingControl stickyScrollingControl;
private IVerticalRuler ruler;
+ private StickyScrollingControlSettings settings;
@Before
public void setup() {
@@ -71,8 +72,8 @@ public void setup() {
hoverColor = new Color(1, 1, 1);
backgroundColor = new Color(2, 2, 2);
separatorColor = new Color(3, 3, 3);
- StickyScrollingControlSettings settings = new StickyScrollingControlSettings(2, lineNumberColor, hoverColor,
- backgroundColor, separatorColor, true);
+ settings = new StickyScrollingControlSettings(2, lineNumberColor, hoverColor, backgroundColor, separatorColor,
+ true);
stickyScrollingControl = new StickyScrollingControl(sourceViewer, ruler, settings, null);
}
@@ -87,7 +88,7 @@ public void teardown() {
@Test
public void testShowStickyLineTexts() {
- List stickyLines = List.of(new StickyLine("line 10", 9), new StickyLine("line 20", 19));
+ List stickyLines = List.of(new StickyLineStub("line 10", 9), new StickyLineStub("line 20", 19));
stickyScrollingControl.setStickyLines(stickyLines);
StyledText stickyLineNumber = getStickyLineNumber();
@@ -100,7 +101,7 @@ public void testShowStickyLineTexts() {
@Test
public void testCorrectColorsApplied() {
- List stickyLines = List.of(new StickyLine("line 10", 9), new StickyLine("line 20", 19));
+ List stickyLines = List.of(new StickyLineStub("line 10", 9), new StickyLineStub("line 20", 19));
stickyScrollingControl.setStickyLines(stickyLines);
StyledText stickyLineNumber = getStickyLineNumber();
@@ -116,11 +117,11 @@ public void testCorrectColorsApplied() {
@Test
public void testLimitStickyLinesCount() {
- List stickyLines = List.of(new StickyLine("line 10", 9), new StickyLine("line 20", 19));
+ List stickyLines = List.of(new StickyLineStub("line 10", 9), new StickyLineStub("line 20", 19));
stickyScrollingControl.setStickyLines(stickyLines);
- StickyScrollingControlSettings settings = new StickyScrollingControlSettings(1, lineNumberColor, hoverColor,
- backgroundColor, separatorColor, true);
+ settings = new StickyScrollingControlSettings(1, lineNumberColor, hoverColor, backgroundColor, separatorColor,
+ true);
stickyScrollingControl.applySettings(settings);
StyledText stickyLineNumber = getStickyLineNumber();
@@ -133,22 +134,56 @@ public void testLimitStickyLinesCount() {
@Test
public void testCopyStyleRanges() {
- sourceViewer.setInput(new Document("line 1"));
- sourceViewer.getTextWidget().setStyleRange(new StyleRange(0, 6, lineNumberColor, backgroundColor));
+ StyleRange styleRangeLine1 = new StyleRange(0, 1, lineNumberColor, backgroundColor);
+ StyleRange styleRangeLine2 = new StyleRange(0, 2, hoverColor, separatorColor);
+ List stickyLines = List.of(//
+ new StickyLineStub("line 1", 0, new StyleRange[] { styleRangeLine1 }),
+ new StickyLineStub("line 2", 0, new StyleRange[] { styleRangeLine2 }));
+ stickyScrollingControl.setStickyLines(stickyLines);
+
+ StyledText stickyLineText = getStickyLineText();
+
+ StyleRange[] styleRanges = stickyLineText.getStyleRanges();
+ assertEquals(2, styleRanges.length);
+ assertEquals(0, styleRanges[0].start);
+ assertEquals(1, styleRanges[0].length);
+ assertEquals(lineNumberColor, styleRanges[0].foreground);
+ assertEquals(backgroundColor, styleRanges[0].background);
+ int startRangeLine2 = stickyLines.get(0).getText().length() + System.lineSeparator().length();
+ assertEquals(startRangeLine2, styleRanges[1].start);
+ assertEquals(2, styleRanges[1].length);
+ assertEquals(hoverColor, styleRanges[1].foreground);
+ assertEquals(separatorColor, styleRanges[1].background);
+ }
- List stickyLines = List.of(new StickyLine("line 1", 0));
+ @Test
+ public void testCopyStyleRangesWithLimitedStickyLines() {
+ settings = new StickyScrollingControlSettings(1, lineNumberColor, hoverColor, backgroundColor, separatorColor,
+ true);
+ stickyScrollingControl.applySettings(settings);
+
+ StyleRange styleRangeLine1 = new StyleRange(0, 1, lineNumberColor, backgroundColor);
+ StyleRange styleRangeLine2 = new StyleRange(0, 2, hoverColor, separatorColor);
+ List stickyLines = List.of(//
+ new StickyLineStub("line 1", 0, new StyleRange[] { styleRangeLine1 }),
+ new StickyLineStub("line 2", 0, new StyleRange[] { styleRangeLine2 }));
stickyScrollingControl.setStickyLines(stickyLines);
StyledText stickyLineText = getStickyLineText();
- assertEquals(lineNumberColor, stickyLineText.getStyleRangeAtOffset(0).foreground);
- assertEquals(backgroundColor, stickyLineText.getStyleRangeAtOffset(0).background);
+
+ StyleRange[] styleRanges = stickyLineText.getStyleRanges();
+ assertEquals(1, styleRanges.length);
+ assertEquals(0, styleRanges[0].start);
+ assertEquals(1, styleRanges[0].length);
+ assertEquals(lineNumberColor, styleRanges[0].foreground);
+ assertEquals(backgroundColor, styleRanges[0].background);
}
@Test
public void testWithoutVerticalRuler() {
sourceViewer = new SourceViewer(shell, null, SWT.None);
- StickyScrollingControlSettings settings = new StickyScrollingControlSettings(5, lineNumberColor, hoverColor,
- backgroundColor, separatorColor, true);
+ settings = new StickyScrollingControlSettings(5, lineNumberColor, hoverColor, backgroundColor, separatorColor,
+ true);
stickyScrollingControl = new StickyScrollingControl(sourceViewer, settings);
StyledText stickyLineNumber = getStickyLineNumber();
@@ -158,14 +193,14 @@ public void testWithoutVerticalRuler() {
@Test
public void testWithoutLineNumber() {
when(ruler.getWidth()).thenReturn(20);
- List stickyLines = List.of(new StickyLine("line 10", 9), new StickyLine("line 20", 19));
+ List stickyLines = List.of(new StickyLineStub("line 10", 9), new StickyLineStub("line 20", 19));
stickyScrollingControl.setStickyLines(stickyLines);
StyledText stickyLineNumber = getStickyLineNumber();
assertThat(stickyLineNumber.getLeftMargin(), greaterThan(0));
- StickyScrollingControlSettings settings = new StickyScrollingControlSettings(5, lineNumberColor, hoverColor,
- backgroundColor, separatorColor, false);
+ settings = new StickyScrollingControlSettings(5, lineNumberColor, hoverColor, backgroundColor, separatorColor,
+ false);
stickyScrollingControl.applySettings(settings);
stickyLineNumber = getStickyLineNumber();
@@ -179,7 +214,7 @@ public void testStyling() {
sourceViewer.getTextWidget().setFont(font);
sourceViewer.getTextWidget().setForeground(hoverColor);
- List stickyLines = List.of(new StickyLine("line 1", 0));
+ List stickyLines = List.of(new StickyLineStub("line 1", 0));
stickyScrollingControl.setStickyLines(stickyLines);
StyledText stickyLineNumber = getStickyLineNumber();
@@ -196,7 +231,7 @@ public void testStyling() {
public void testLayoutStickyLinesCanvasOnResize() {
sourceViewer.getTextWidget().setBounds(0, 0, 200, 200);
- List stickyLines = List.of(new StickyLine("line 1", 0));
+ List stickyLines = List.of(new StickyLineStub("line 1", 0));
stickyScrollingControl.setStickyLines(stickyLines);
Canvas stickyControlCanvas = getStickyControlCanvas(shell);
@@ -217,6 +252,25 @@ public void testLayoutStickyLinesCanvasOnResize() {
assertEquals(boundsAfterResize.height, boundsBeforeResize.height);
}
+ @Test
+ public void testDontLayoutOutDatedStickyLinesOnResize() {
+ sourceViewer.getTextWidget().setBounds(0, 0, 200, 200);
+
+ List stickyLines = List.of(new StickyLineStub("line 10", 10));
+ stickyScrollingControl.setStickyLines(stickyLines);
+
+ Canvas stickyControlCanvas = getStickyControlCanvas(shell);
+ Rectangle boundsBeforeResize = stickyControlCanvas.getBounds();
+
+ sourceViewer.getTextWidget().setBounds(0, 0, 150, 200);
+
+ stickyControlCanvas = getStickyControlCanvas(shell);
+ Rectangle boundsAfterResize = stickyControlCanvas.getBounds();
+
+ // No IllegalArgumentException: Index out of bounds
+ assertEquals(boundsAfterResize, boundsBeforeResize);
+ }
+
@Test
public void testNavigateToStickyLine() {
String text = """
@@ -225,7 +279,7 @@ public void testNavigateToStickyLine() {
sourceViewer.setInput(new Document(text));
sourceViewer.getTextWidget().setBounds(0, 0, 200, 200);
- List stickyLines = List.of(new StickyLine("line 2", 1));
+ List stickyLines = List.of(new StickyLineStub("line 2", 1));
stickyScrollingControl.setStickyLines(stickyLines);
Canvas stickyControlCanvas = getStickyControlCanvas(shell);
@@ -273,9 +327,9 @@ public void testHorizontalScrollingIsDispatched() {
}
@Test
- public void limitStickyLinesToTextWidgetHeight() {
+ public void testLimitStickyLinesToTextWidgetHeight() {
sourceViewer.getTextWidget().setBounds(0, 0, 200, 200);
- List stickyLines = List.of(new StickyLine("line 2", 1));
+ List stickyLines = List.of(new StickyLineStub("line 2", 1));
stickyScrollingControl.setStickyLines(stickyLines);
StyledText stickyLineText = getStickyLineText();
@@ -419,4 +473,35 @@ private void drainDisplayEventQueue() {
}
}
+ private class StickyLineStub implements IStickyLine {
+
+ private final String text;
+ private final int lineNumber;
+ private StyleRange[] styleRanges;
+
+ public StickyLineStub(String text, int lineNumber) {
+ this(text, lineNumber, null);
+ }
+
+ public StickyLineStub(String text, int lineNumber, StyleRange[] styleRanges) {
+ this.text = text;
+ this.lineNumber = lineNumber;
+ this.styleRanges = styleRanges;
+ }
+
+ @Override
+ public int getLineNumber() {
+ return lineNumber;
+ }
+
+ @Override
+ public String getText() {
+ return text;
+ }
+
+ @Override
+ public StyleRange[] getStyleRanges() {
+ return styleRanges;
+ }
+ }
}
diff --git a/tests/org.eclipse.ui.editors.tests/src/org/eclipse/ui/internal/texteditor/stickyscroll/StickyScrollingHandlerTest.java b/tests/org.eclipse.ui.editors.tests/src/org/eclipse/ui/internal/texteditor/stickyscroll/StickyScrollingHandlerTest.java
index 5d82241ae01..0856c70b19e 100644
--- a/tests/org.eclipse.ui.editors.tests/src/org/eclipse/ui/internal/texteditor/stickyscroll/StickyScrollingHandlerTest.java
+++ b/tests/org.eclipse.ui.editors.tests/src/org/eclipse/ui/internal/texteditor/stickyscroll/StickyScrollingHandlerTest.java
@@ -20,8 +20,12 @@
import static org.eclipse.ui.texteditor.AbstractDecoratedTextEditorPreferenceConstants.EDITOR_TAB_WIDTH;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.Mockito.atLeastOnce;
+import static org.mockito.Mockito.atMost;
import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@@ -33,6 +37,7 @@
import org.junit.Test;
import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.StyleRange;
import org.eclipse.swt.custom.StyledText;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.widgets.Canvas;
@@ -61,14 +66,19 @@ public class StickyScrollingHandlerTest {
private IStickyLinesProvider linesProvider;
private StickyScrollingHandler stickyScrollingHandler;
private StickyLinesProperties stickyLinesProperties;
+ private StyledText textWidget;
@Before
public void setup() {
shell = new Shell(Display.getDefault());
+ shell.setBounds(0, 0, 200, 80);
ruler = new CompositeRuler();
sourceViewer = new SourceViewer(shell, ruler, SWT.None);
sourceViewer.setDocument(new Document());
- sourceViewer.getTextWidget().setBounds(0, 0, 200, 200);
+ sourceViewer.getTextWidget().setBounds(0, 0, 200, 100);
+ textWidget = sourceViewer.getTextWidget();
+ textWidget.setText("first 1 \nline 2 \nline 3 \nline 4 \nline 5 \nline 6 \nline 7 \nline 8 \nline 9 \nline 10");
+ textWidget.setTopIndex(1);
lineNumberColor = new Color(0, 0, 0);
hoverColor = new Color(1, 1, 1);
@@ -87,8 +97,8 @@ public void teardown() {
@Test
public void testShowStickyLines() {
- when(linesProvider.getStickyLines(sourceViewer, stickyLinesProperties))
- .thenReturn(List.of(new StickyLine("line 10", 9)));
+ when(linesProvider.getStickyLines(sourceViewer, 1, stickyLinesProperties))
+ .thenReturn(List.of(new StickyLineStub("line 10", 9)));
stickyScrollingHandler.viewportChanged(100);
@@ -100,6 +110,19 @@ public void testShowStickyLines() {
assertEquals(expStickyLineText, stickyLineText.getText());
}
+ @Test
+ public void testDontCalculateStickyLinesForFirstLine() {
+ textWidget.setTopIndex(0);
+
+ stickyScrollingHandler.viewportChanged(100);
+
+ StyledText stickyLineNumber = getStickyLineNumber();
+ assertEquals("", stickyLineNumber.getText());
+ StyledText stickyLineText = getStickyLineText();
+ assertEquals("", stickyLineText.getText());
+ verify(linesProvider, never()).getStickyLines(any(), anyInt(), any());
+ }
+
@Test
public void testUnistallStickyLines() {
Canvas stickyControlCanvas = getStickyControlCanvas(this.shell);
@@ -111,8 +134,8 @@ public void testUnistallStickyLines() {
@Test
public void testPreferencesLoaded() {
- when(linesProvider.getStickyLines(sourceViewer, stickyLinesProperties))
- .thenReturn(List.of(new StickyLine("line 10", 9)));
+ when(linesProvider.getStickyLines(sourceViewer, 1, stickyLinesProperties))
+ .thenReturn(List.of(new StickyLineStub("line 10", 9)));
stickyScrollingHandler.viewportChanged(100);
@@ -122,8 +145,10 @@ public void testPreferencesLoaded() {
@Test
public void testPreferencesUpdated() {
- when(linesProvider.getStickyLines(sourceViewer, stickyLinesProperties))
- .thenReturn(List.of(new StickyLine("line 10", 9), new StickyLine("line 20", 19)));
+ when(linesProvider.getStickyLines(sourceViewer, 1, stickyLinesProperties))
+ .thenReturn(List.of(new StickyLineStub("line 10", 9), new StickyLineStub("line 20", 19)));
+ when(linesProvider.getStickyLines(sourceViewer, 2, stickyLinesProperties))
+ .thenReturn(List.of(new StickyLineStub("line 10", 9), new StickyLineStub("line 20", 19)));
stickyScrollingHandler.viewportChanged(100);
@@ -140,14 +165,14 @@ public void testPreferencesUpdated() {
@Test
public void testThrottledExecution() throws InterruptedException {
- when(linesProvider.getStickyLines(sourceViewer, stickyLinesProperties))
- .thenReturn(List.of(new StickyLine("line 10", 9)));
- when(linesProvider.getStickyLines(sourceViewer, stickyLinesProperties))
- .thenReturn(List.of(new StickyLine("line 10", 9)));
- when(linesProvider.getStickyLines(sourceViewer, stickyLinesProperties))
- .thenReturn(List.of(new StickyLine("line 10", 9)));
- when(linesProvider.getStickyLines(sourceViewer, stickyLinesProperties))
- .thenReturn(List.of(new StickyLine("line 10", 9)));
+ when(linesProvider.getStickyLines(sourceViewer, 1, stickyLinesProperties))
+ .thenReturn(List.of(new StickyLineStub("line 10", 9)));
+ when(linesProvider.getStickyLines(sourceViewer, 1, stickyLinesProperties))
+ .thenReturn(List.of(new StickyLineStub("line 10", 9)));
+ when(linesProvider.getStickyLines(sourceViewer, 1, stickyLinesProperties))
+ .thenReturn(List.of(new StickyLineStub("line 10", 9)));
+ when(linesProvider.getStickyLines(sourceViewer, 1, stickyLinesProperties))
+ .thenReturn(List.of(new StickyLineStub("line 10", 9)));
stickyScrollingHandler.viewportChanged(100);
Thread.sleep(10);
@@ -159,8 +184,38 @@ public void testThrottledExecution() throws InterruptedException {
waitInUi(300);
- // Call to lines provider should be throttled
- verify(linesProvider, times(2)).getStickyLines(sourceViewer, stickyLinesProperties);
+ // Call to lines provider should be throttled, at least one and at most
+ // 3 calls expected
+ verify(linesProvider, atMost(3)).getStickyLines(sourceViewer, 1, stickyLinesProperties);
+ verify(linesProvider, atLeastOnce()).getStickyLines(sourceViewer, 1, stickyLinesProperties);
+ }
+
+ @Test
+ public void testRemoveStickyLines() {
+ when(linesProvider.getStickyLines(sourceViewer, 1, stickyLinesProperties))
+ .thenReturn(List.of(new StickyLineStub("line 1", 0), new StickyLineStub("line 2", 1)));
+ when(linesProvider.getStickyLines(sourceViewer, 2, stickyLinesProperties))
+ .thenReturn(List.of(new StickyLineStub("line 3", 2)));
+
+ stickyScrollingHandler.viewportChanged(100);
+
+ StyledText stickyLineText = getStickyLineText();
+ String expStickyLineText = "line 1";
+ assertEquals(expStickyLineText, stickyLineText.getText());
+ }
+
+ @Test
+ public void testLineUnderStickyLine() {
+ when(linesProvider.getStickyLines(sourceViewer, 1, stickyLinesProperties))
+ .thenReturn(List.of(new StickyLineStub("line 1", 0)));
+ when(linesProvider.getStickyLines(sourceViewer, 2, stickyLinesProperties))
+ .thenReturn(List.of(new StickyLineStub("line 1", 0), new StickyLineStub("line 2", 1)));
+
+ stickyScrollingHandler.viewportChanged(100);
+
+ StyledText stickyLineText = getStickyLineText();
+ String expStickyLineText = "line 1" + System.lineSeparator() + "line 2";
+ assertEquals(expStickyLineText, stickyLineText.getText());
}
private void waitInUi(int ms) throws InterruptedException {
@@ -215,4 +270,30 @@ private String colorToString(Color color) {
return joiner.toString();
}
+ private class StickyLineStub implements IStickyLine {
+
+ private final String text;
+ private final int lineNumber;
+
+ public StickyLineStub(String text, int lineNumber) {
+ this.text = text;
+ this.lineNumber = lineNumber;
+ }
+
+ @Override
+ public int getLineNumber() {
+ return lineNumber;
+ }
+
+ @Override
+ public String getText() {
+ return text;
+ }
+
+ @Override
+ public StyleRange[] getStyleRanges() {
+ return null;
+ }
+ }
+
}
diff --git a/tests/org.eclipse.ui.genericeditor.tests/.settings/org.eclipse.jdt.core.prefs b/tests/org.eclipse.ui.genericeditor.tests/.settings/org.eclipse.jdt.core.prefs
index 9c8e515282a..5ffef509682 100644
--- a/tests/org.eclipse.ui.genericeditor.tests/.settings/org.eclipse.jdt.core.prefs
+++ b/tests/org.eclipse.ui.genericeditor.tests/.settings/org.eclipse.jdt.core.prefs
@@ -150,38 +150,70 @@ 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_arrows_in_switch_on_columns=false
+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_selector_in_method_invocation_on_expression_first_line=true
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_annotations_on_enum_constant=49
+org.eclipse.jdt.core.formatter.alignment_for_annotations_on_field=49
+org.eclipse.jdt.core.formatter.alignment_for_annotations_on_local_variable=49
+org.eclipse.jdt.core.formatter.alignment_for_annotations_on_method=49
+org.eclipse.jdt.core.formatter.alignment_for_annotations_on_package=49
+org.eclipse.jdt.core.formatter.alignment_for_annotations_on_parameter=0
+org.eclipse.jdt.core.formatter.alignment_for_annotations_on_type=49
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_assertion_message=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_conditional_expression=48
-org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
+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_conditional_expression_chain=0
+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_expressions_in_switch_case_with_arrow=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_switch_case_with_colon=16
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_permitted_types_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_record_components=16
+org.eclipse.jdt.core.formatter.alignment_for_relational_operator=0
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_shift_operator=0
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_record_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_switch_case_with_arrow=20
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_annotations=0
+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_last_class_body_declaration=0
org.eclipse.jdt.core.formatter.blank_lines_after_package=1
-org.eclipse.jdt.core.formatter.blank_lines_before_field=1
+org.eclipse.jdt.core.formatter.blank_lines_before_abstract_method=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
@@ -189,32 +221,42 @@ 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_statement_group_in_switch=0
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_block_in_case_after_arrow=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_record_constructor=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_record_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.format_block_comments=false
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=true
org.eclipse.jdt.core.formatter.comment.format_header=false
org.eclipse.jdt.core.formatter.comment.format_html=true
org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true
-org.eclipse.jdt.core.formatter.comment.format_line_comments=false
+org.eclipse.jdt.core.formatter.comment.format_line_comments=true
org.eclipse.jdt.core.formatter.comment.format_source_code=true
-org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true
-org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+org.eclipse.jdt.core.formatter.comment.indent_tag_description=false
org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_between_different_tags=do not insert
org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
-org.eclipse.jdt.core.formatter.comment.line_length=100
+org.eclipse.jdt.core.formatter.comment.javadoc_do_not_separate_block_tags=false
+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
@@ -228,14 +270,16 @@ org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=fals
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_record_header=true
org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
org.eclipse.jdt.core.formatter.indent_empty_lines=false
org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true
+org.eclipse.jdt.core.formatter.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
@@ -245,7 +289,7 @@ 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=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
@@ -260,6 +304,8 @@ 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_arrow_in_switch_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_default=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
@@ -289,13 +335,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arg
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_permitted_types=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_record_components=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_switch_case_expressions=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_not_operator=do not 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
@@ -312,6 +362,7 @@ org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not ins
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_record_declaration=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
@@ -328,7 +379,9 @@ 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=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_case=insert
+org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_default=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
@@ -347,6 +400,7 @@ org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not in
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_record_declaration=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
@@ -373,7 +427,10 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_ar
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_permitted_types=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_record_components=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_switch_case_expressions=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
@@ -391,6 +448,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_
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_record_constructor=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_record_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
@@ -406,6 +465,7 @@ 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_record_declaration=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
@@ -431,28 +491,70 @@ org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_
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_line_comments=false
org.eclipse.jdt.core.formatter.join_lines_in_comments=true
-org.eclipse.jdt.core.formatter.join_wrapped_lines=false
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_annotation_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_anonymous_type_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_code_block_on_one_line=one_line_never
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_enum_constant_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_enum_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_if_then_body_block_on_one_line=one_line_never
org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_lambda_body_block_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_loop_body_block_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_method_body_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_record_constructor_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_record_declaration_on_one_line=one_line_never
+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_getter_setter_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_switch_body_block_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_switch_case_with_arrow_on_one_line=one_line_never
org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.lineSplit=200
-org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=true
-org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=true
+org.eclipse.jdt.core.formatter.keep_type_declaration_on_one_line=one_line_never
+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_after_code_block=0
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_code_block=0
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=3
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_end_of_code_block=0
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_end_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_blank_lines_before_code_block=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_record_declaration=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=false
+org.eclipse.jdt.core.formatter.text_block_indentation=0
+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_assertion_message_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_relational_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_shift_operator=true
org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
+org.eclipse.jdt.core.formatter.wrap_before_switch_case_arrow_operator=false
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/tests/org.eclipse.ui.genericeditor.tests/.settings/org.eclipse.jdt.ui.prefs b/tests/org.eclipse.ui.genericeditor.tests/.settings/org.eclipse.jdt.ui.prefs
index b73bfac6f0d..6973525ef57 100644
--- a/tests/org.eclipse.ui.genericeditor.tests/.settings/org.eclipse.jdt.ui.prefs
+++ b/tests/org.eclipse.ui.genericeditor.tests/.settings/org.eclipse.jdt.ui.prefs
@@ -1,6 +1,6 @@
eclipse.preferences.version=1
-formatter_profile=_JDT UI Code Style Conventions
-formatter_settings_version=12
+formatter_profile=org.eclipse.jdt.ui.default.eclipse_profile
+formatter_settings_version=23
org.eclipse.jdt.ui.exception.name=e
org.eclipse.jdt.ui.gettersetter.use.is=true
org.eclipse.jdt.ui.ignorelowercasenames=true
diff --git a/tests/org.eclipse.ui.genericeditor.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.ui.genericeditor.tests/META-INF/MANIFEST.MF
index f95c0ce33f8..5076d85e656 100644
--- a/tests/org.eclipse.ui.genericeditor.tests/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.ui.genericeditor.tests/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %Plugin.name
Bundle-SymbolicName: org.eclipse.ui.genericeditor.tests;singleton:=true
-Bundle-Version: 1.3.500.qualifier
+Bundle-Version: 1.3.700.qualifier
Bundle-Vendor: %Plugin.providerName
Bundle-Localization: plugin
Export-Package: org.eclipse.ui.genericeditor.tests,
diff --git a/tests/org.eclipse.ui.genericeditor.tests/src/org/eclipse/ui/genericeditor/tests/HoverTest.java b/tests/org.eclipse.ui.genericeditor.tests/src/org/eclipse/ui/genericeditor/tests/HoverTest.java
index 2c77c6097cc..e225db29124 100644
--- a/tests/org.eclipse.ui.genericeditor.tests/src/org/eclipse/ui/genericeditor/tests/HoverTest.java
+++ b/tests/org.eclipse.ui.genericeditor.tests/src/org/eclipse/ui/genericeditor/tests/HoverTest.java
@@ -65,6 +65,8 @@
*/
public class HoverTest extends AbstratGenericEditorTest {
+ private static final int MAXIMUM_HOVER_RETRY_COUNT = 5;
+
@Rule
public TestName testName= new TestName();
@@ -227,38 +229,43 @@ private Object getHoverData(AbstractInformationControlManager manager) {
}
private AbstractInformationControlManager triggerCompletionAndRetrieveInformationControlManager() {
- final int caretLocation= 2;
- this.editor.selectAndReveal(caretLocation, 0);
- final StyledText editorTextWidget= (StyledText) this.editor.getAdapter(Control.class);
- new DisplayHelper() {
- @Override
- protected boolean condition() {
- return editorTextWidget.isFocusControl() && editorTextWidget.getSelection().x == caretLocation;
- }
- }.waitForCondition(editorTextWidget.getDisplay(), 3000);
- // sending event to trigger hover computation
- editorTextWidget.getShell().forceActive();
- editorTextWidget.getShell().setActive();
- editorTextWidget.getShell().setFocus();
- editorTextWidget.getShell().getDisplay().wake();
- Event hoverEvent= new Event();
- hoverEvent.widget= editorTextWidget;
- hoverEvent.type= SWT.MouseHover;
- hoverEvent.x= editorTextWidget.getClientArea().x + 5;
- hoverEvent.y= editorTextWidget.getClientArea().y + 5;
- hoverEvent.display= editorTextWidget.getDisplay();
- hoverEvent.doit= true;
- editorTextWidget.getDisplay().setCursorLocation(editorTextWidget.toDisplay(hoverEvent.x, hoverEvent.y));
- editorTextWidget.notifyListeners(SWT.MouseHover, hoverEvent);
+ boolean foundHoverData = false;
+ int attemptNumber = 0;
+
ITextViewer viewer= (ITextViewer) new Accessor(editor, AbstractTextEditor.class).invoke("getSourceViewer", new Object[0]);
AbstractInformationControlManager textHoverManager= (AbstractInformationControlManager) new Accessor(viewer, TextViewer.class).get("fTextHoverManager");
- // retrieving hover content
- new DisplayHelper() {
- @Override
- protected boolean condition() {
- return getHoverData(textHoverManager) != null;
- }
- }.waitForCondition(hoverEvent.display, 6000);
+
+ while (!foundHoverData && attemptNumber++ < MAXIMUM_HOVER_RETRY_COUNT) {
+ final int caretLocation= 2;
+ editor.setFocus();
+ this.editor.selectAndReveal(caretLocation, 0);
+ final StyledText editorTextWidget= (StyledText) this.editor.getAdapter(Control.class);
+ new DisplayHelper() {
+ @Override
+ protected boolean condition() {
+ return editorTextWidget.isFocusControl() && editorTextWidget.getSelection().x == caretLocation;
+ }
+ }.waitForCondition(editorTextWidget.getDisplay(), 3000);
+ assertTrue("editor does not have focus", editorTextWidget.isFocusControl());
+ // sending event to trigger hover computation
+ Event hoverEvent= new Event();
+ hoverEvent.widget= editorTextWidget;
+ hoverEvent.type= SWT.MouseHover;
+ hoverEvent.x= editorTextWidget.getClientArea().x + 5;
+ hoverEvent.y= editorTextWidget.getClientArea().y + 5;
+ hoverEvent.display= editorTextWidget.getDisplay();
+ hoverEvent.doit= true;
+ editorTextWidget.getDisplay().setCursorLocation(editorTextWidget.toDisplay(hoverEvent.x, hoverEvent.y));
+ editorTextWidget.notifyListeners(SWT.MouseHover, hoverEvent);
+ // retrieving hover content
+ foundHoverData = new DisplayHelper() {
+ @Override
+ protected boolean condition() {
+ return getHoverData(textHoverManager) != null;
+ }
+ }.waitForCondition(hoverEvent.display, 6000);
+ }
+ assertTrue("hover data not found", foundHoverData);
return textHoverManager;
}
}
diff --git a/tests/org.eclipse.ui.tests.harness/META-INF/MANIFEST.MF b/tests/org.eclipse.ui.tests.harness/META-INF/MANIFEST.MF
index 08849c0c87c..ed65721730f 100644
--- a/tests/org.eclipse.ui.tests.harness/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.ui.tests.harness/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Harness Plug-in
Bundle-SymbolicName: org.eclipse.ui.tests.harness;singleton:=true
-Bundle-Version: 1.10.400.qualifier
+Bundle-Version: 1.10.500.qualifier
Eclipse-BundleShape: dir
Require-Bundle: org.eclipse.ui,
org.eclipse.core.runtime,
diff --git a/tests/org.eclipse.ui.tests.harness/src/org/eclipse/ui/tests/harness/util/ActionUtil.java b/tests/org.eclipse.ui.tests.harness/src/org/eclipse/ui/tests/harness/util/ActionUtil.java
index 463fc20734d..de37498d2b2 100644
--- a/tests/org.eclipse.ui.tests.harness/src/org/eclipse/ui/tests/harness/util/ActionUtil.java
+++ b/tests/org.eclipse.ui.tests.harness/src/org/eclipse/ui/tests/harness/util/ActionUtil.java
@@ -23,21 +23,17 @@
import org.eclipse.ui.internal.WorkbenchWindow;
import org.junit.Assert;
-import junit.framework.TestCase;
-
/**
- * ActionUtil contains methods to run actions
- * in the workbench.
+ * ActionUtil contains methods to run actions in the workbench.
*/
public class ActionUtil {
/**
* Runs an action contribution.
*
- * @param test the current test case
* @param item an action contribution item
*/
- public static void runAction(TestCase test, IContributionItem item) {
+ public static void runAction(IContributionItem item) {
Assert.assertTrue(item instanceof ActionContributionItem);
((ActionContributionItem) item).getAction().run();
}
@@ -46,18 +42,16 @@ public static void runAction(TestCase test, IContributionItem item) {
* Runs the first action found in a menu manager with a
* particular label.
*
- * @param test the current test case
* @param mgr the containing menu manager
* @param label the action label
*/
- public static void runActionWithLabel(TestCase test, IMenuManager mgr,
- String label) {
+ public static void runActionWithLabel(IMenuManager mgr, String label) {
IContributionItem[] items = mgr.getItems();
for (IContributionItem item : items) {
- if (item instanceof SubContributionItem)
- item = ((SubContributionItem) item).getInnerItem();
- if (item instanceof ActionContributionItem) {
- IAction action = ((ActionContributionItem) item).getAction();
+ if (item instanceof SubContributionItem subItem)
+ item = subItem.getInnerItem();
+ if (item instanceof ActionContributionItem actionContribItem) {
+ IAction action = actionContribItem.getAction();
if (label.equals(action.getText())) {
action.run();
return;
@@ -71,43 +65,37 @@ public static void runActionWithLabel(TestCase test, IMenuManager mgr,
* Runs the first action found in a window with a
* particular label.
*
- * @param test the current test case
* @param win the containing window
* @param label the action label
*/
- public static void runActionWithLabel(TestCase test, IWorkbenchWindow win,
- String label) {
+ public static void runActionWithLabel(IWorkbenchWindow win, String label) {
WorkbenchWindow realWin = (WorkbenchWindow) win;
IMenuManager mgr = realWin.getMenuBarManager();
- runActionWithLabel(test, mgr, label);
+ runActionWithLabel(mgr, label);
}
/**
* Runs an action identified by an id path in a
* menu manager.
*
- * @param test the current test case
* @param mgr the containing menu manager
*/
- public static void runActionUsingPath(TestCase test, IMenuManager mgr,
- String idPath) {
+ public static void runActionUsingPath(IMenuManager mgr, String idPath) {
IContributionItem item = mgr.findUsingPath(idPath);
Assert.assertNotNull(item);
- runAction(test, item);
+ runAction(item);
}
/**
* Runs an action identified by an id path in a
* window.
*
- * @param test the current test case
* @param win the containing window
*/
- public static void runActionUsingPath(TestCase test, IWorkbenchWindow win,
- String idPath) {
+ public static void runActionUsingPath(IWorkbenchWindow win, String idPath) {
WorkbenchWindow realWin = (WorkbenchWindow) win;
IMenuManager mgr = realWin.getMenuBarManager();
- runActionUsingPath(test, mgr, idPath);
+ runActionUsingPath(mgr, idPath);
}
/**
@@ -122,10 +110,10 @@ public static void runActionUsingPath(TestCase test, IWorkbenchWindow win,
public static IAction getActionWithLabel(IMenuManager mgr, String label) {
IContributionItem[] items = mgr.getItems();
for (IContributionItem item : items) {
- if (item instanceof SubContributionItem)
- item = ((SubContributionItem) item).getInnerItem();
- if (item instanceof ActionContributionItem) {
- IAction action = ((ActionContributionItem) item).getAction();
+ if (item instanceof SubContributionItem subItem)
+ item = subItem.getInnerItem();
+ if (item instanceof ActionContributionItem actionContribItem) {
+ IAction action = actionContribItem.getAction();
if (label.equals(action.getText())) {
return action;
}
diff --git a/tests/org.eclipse.ui.tests.harness/src/org/eclipse/ui/tests/harness/util/ArrayUtil.java b/tests/org.eclipse.ui.tests.harness/src/org/eclipse/ui/tests/harness/util/ArrayUtil.java
index e978c78a8a4..df34123498c 100644
--- a/tests/org.eclipse.ui.tests.harness/src/org/eclipse/ui/tests/harness/util/ArrayUtil.java
+++ b/tests/org.eclipse.ui.tests.harness/src/org/eclipse/ui/tests/harness/util/ArrayUtil.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2014 IBM Corporation and others.
+ * Copyright (c) 2000, 2024 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -71,21 +71,4 @@ public static boolean contains(Object[] array, Object element) {
return false;
}
- /**
- * Returns whether two arrays are equal. They must
- * have the same size and the same contents.
- *
- * @param one the first array
- * @param two the second array
- * @return true if the array are equal,
- * false otherwise.
- */
- public static boolean equals(Object[] one, Object[] two) {
- if (one.length != two.length)
- return false;
- for (int i = 0; i < one.length; i++)
- if (one[i] != two[i])
- return false;
- return true;
- }
}
diff --git a/tests/org.eclipse.ui.tests.harness/src/org/eclipse/ui/tests/harness/util/DialogCheck.java b/tests/org.eclipse.ui.tests.harness/src/org/eclipse/ui/tests/harness/util/DialogCheck.java
index ee8e19180c6..7be2ae1dccd 100644
--- a/tests/org.eclipse.ui.tests.harness/src/org/eclipse/ui/tests/harness/util/DialogCheck.java
+++ b/tests/org.eclipse.ui.tests.harness/src/org/eclipse/ui/tests/harness/util/DialogCheck.java
@@ -15,7 +15,7 @@
package org.eclipse.ui.tests.harness.util;
import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.dialogs.IDialogConstants;
@@ -66,7 +66,7 @@ public static void assertDialog(Dialog dialog) {
getShell();
}
if (_verifyDialog.open(dialog) == IDialogConstants.NO_ID) {
- assertTrue(_verifyDialog.getFailureText(), false);
+ fail(_verifyDialog.getFailureText());
}
}
@@ -117,30 +117,28 @@ public static Shell getShell() {
private static void verifyCompositeText(Composite composite) {
Control children[] = composite.getChildren();
for (Control child : children) {
- if (child instanceof TabFolder) {
- TabFolder folder = (TabFolder) child;
+ if (child instanceof TabFolder folder) {
int numPages = folder.getItemCount();
for (int j = 0; j < numPages; j++) {
folder.setSelection(j);
}
- } else if (child instanceof CTabFolder) {
- CTabFolder folder = (CTabFolder) child;
+ } else if (child instanceof CTabFolder folder) {
int numPages = folder.getItemCount();
for (int j = 0; j < numPages; j++) {
folder.setSelection(j);
}
}
- else if (child instanceof Button) {
+ else if (child instanceof Button b) {
//verify the text if the child is a button
- verifyButtonText((Button) child);
+ verifyButtonText(b);
}
- else if (child instanceof Label) {
+ else if (child instanceof Label l) {
//child is not a button, maybe a label
- verifyLabelText((Label) child);
+ verifyLabelText(l);
}
- else if (child instanceof Composite) {
+ else if (child instanceof Composite comp) {
//child is not a label, make a recursive call if it is a composite
- verifyCompositeText((Composite) child);
+ verifyCompositeText(comp);
}
}
}
@@ -158,7 +156,8 @@ private static void verifyButtonText(Button button) {
//if (size.y/preferred.y) == X, then label spans X lines, so divide
//the calculated value of preferred.x by X
if (preferred.y * size.y > 0) {
- preferred.y /= countLines(button.getText()); //check for '\n\'
+ String buttonText = button.getText();
+ preferred.y /= buttonText.isEmpty() ? 1 : buttonText.lines().count(); // check for '\n\'
if (size.y / preferred.y > 1) {
preferred.x /= (size.y / preferred.y);
}
@@ -170,7 +169,7 @@ private static void verifyButtonText(Button button) {
if (preferred.x > size.x) {
//close the dialog
button.getShell().dispose();
- assertTrue(message, false);
+ fail(message);
}
}
@@ -191,7 +190,7 @@ private static void verifyLabelText(Label label) {
//if (size.y/preferred.y) == X, then label spans X lines, so divide
//the calculated value of preferred.x by X
if (preferred.y * size.y > 0) {
- preferred.y /= countLines(label.getText());
+ preferred.y /= label.getText().lines().count();
if (size.y / preferred.y > 1) {
preferred.x /= (size.y / preferred.y);
}
@@ -202,24 +201,8 @@ private static void verifyLabelText(Label label) {
if (preferred.x > size.x) {
//close the dialog
label.getShell().dispose();
- assertTrue(message, false);
+ fail(message);
}
}
- /*
- * Counts the number of lines in a given String.
- * For example, if a string contains one (1) newline character,
- * a value of two (2) would be returned.
- * @param text The string to look through.
- * @return int the number of lines in text.
- */
- private static int countLines(String text) {
- int newLines = 1;
- for (int i = 0; i < text.length(); i++) {
- if (text.charAt(i) == '\n') {
- newLines++;
- }
- }
- return newLines;
- }
}
diff --git a/tests/org.eclipse.ui.tests.harness/src/org/eclipse/ui/tests/harness/util/FileTool.java b/tests/org.eclipse.ui.tests.harness/src/org/eclipse/ui/tests/harness/util/FileTool.java
index d5f94ffabda..a5c01a16879 100644
--- a/tests/org.eclipse.ui.tests.harness/src/org/eclipse/ui/tests/harness/util/FileTool.java
+++ b/tests/org.eclipse.ui.tests.harness/src/org/eclipse/ui/tests/harness/util/FileTool.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2017 IBM Corporation and others.
+ * Copyright (c) 2000, 2024 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -18,13 +18,10 @@
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
-import java.io.FileReader;
-import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.Reader;
-import java.io.Writer;
import java.net.URL;
import java.util.Enumeration;
import java.util.zip.ZipEntry;
@@ -37,10 +34,6 @@
public class FileTool {
- /**
- * A buffer.
- */
- private static byte[] buffer = new byte[8192];
/**
* Unzips the given zip file to the given destination directory
* extracting only those entries the pass through the given
@@ -64,7 +57,7 @@ public static void unzip(ZipFile zipFile, File dstDir) throws IOException {
File file = new File(dstDir, changeSeparator(entryName, '/', File.separatorChar));
file.getParentFile().mkdirs();
try (InputStream src = zipFile.getInputStream(entry); OutputStream dst= new FileOutputStream(file)){
- transferData(src, dst);
+ src.transferTo(dst);
}
}
} finally {
@@ -99,24 +92,7 @@ public static String changeSeparator(String path, char oldSeparator, char newSep
public static void transferData(File source, File destination) throws IOException {
destination.getParentFile().mkdirs();
try (InputStream is = new FileInputStream(source); OutputStream os = new FileOutputStream(destination)) {
- transferData(is, os);
- }
- }
- /**
- * Copies all bytes in the given source stream to
- * the given destination stream. Neither streams
- * are closed.
- *
- * @param source the given source stream
- * @param destination the given destination stream
- */
- public static void transferData(InputStream source, OutputStream destination) throws IOException {
- int bytesRead = 0;
- while(bytesRead != -1){
- bytesRead = source.read(buffer, 0, buffer.length);
- if(bytesRead != -1){
- destination.write(buffer, 0, bytesRead);
- }
+ is.transferTo(os);
}
}
@@ -151,12 +127,6 @@ public static File getFileInPlugin(Plugin plugin, IPath path) {
}
}
- public static StringBuilder readToBuilder(String fileName) throws IOException {
- try (FileReader reader = new FileReader(fileName)) {
- return readToBuilder(reader);
- }
- }
-
public static StringBuilder readToBuilder(Reader reader) throws IOException {
StringBuilder s = new StringBuilder();
try {
@@ -175,9 +145,4 @@ public static StringBuilder readToBuilder(Reader reader) throws IOException {
return s;
}
- public static void writeFromBuilder(String fileName, StringBuilder content) throws IOException {
- try (Writer writer = new FileWriter(fileName)) {
- writer.write(content.toString());
- }
- }
}
diff --git a/tests/org.eclipse.ui.tests.harness/src/org/eclipse/ui/tests/harness/util/FileUtil.java b/tests/org.eclipse.ui.tests.harness/src/org/eclipse/ui/tests/harness/util/FileUtil.java
index 8c80473cd6d..015a1c51fc0 100644
--- a/tests/org.eclipse.ui.tests.harness/src/org/eclipse/ui/tests/harness/util/FileUtil.java
+++ b/tests/org.eclipse.ui.tests.harness/src/org/eclipse/ui/tests/harness/util/FileUtil.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2010 IBM Corporation and others.
+ * Copyright (c) 2000, 2024 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -13,9 +13,6 @@
*******************************************************************************/
package org.eclipse.ui.tests.harness.util;
-import java.io.ByteArrayInputStream;
-import java.io.InputStream;
-
import org.eclipse.core.resources.IContainer;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IFolder;
@@ -81,8 +78,8 @@ public static void createFolder(IFolder folder, boolean force, boolean local, IP
throws CoreException {
if (!folder.exists()) {
IContainer parent = folder.getParent();
- if (parent instanceof IFolder) {
- createFolder((IFolder) parent, force, local, null);
+ if (parent instanceof IFolder f) {
+ createFolder(f, force, local, null);
}
folder.create(force, local, monitor);
}
@@ -98,9 +95,7 @@ public static void createFolder(IFolder folder, boolean force, boolean local, IP
public static IFile createFile(String name, IProject proj) throws CoreException {
IFile file = proj.getFile(name);
if (!file.exists()) {
- String str = " ";
- InputStream in = new ByteArrayInputStream(str.getBytes());
- file.create(in, true, null);
+ file.create(" ".getBytes(), IResource.FORCE, null);
}
return file;
}
diff --git a/tests/org.eclipse.ui.tests.harness/src/org/eclipse/ui/tests/harness/util/TestRunLogUtil.java b/tests/org.eclipse.ui.tests.harness/src/org/eclipse/ui/tests/harness/util/TestRunLogUtil.java
index 9d997926a72..83b4d6771cb 100644
--- a/tests/org.eclipse.ui.tests.harness/src/org/eclipse/ui/tests/harness/util/TestRunLogUtil.java
+++ b/tests/org.eclipse.ui.tests.harness/src/org/eclipse/ui/tests/harness/util/TestRunLogUtil.java
@@ -40,6 +40,12 @@ protected void starting(Description description) {
System.out.println(formatTestStartMessage(description.getMethodName()));
}
+ @Override
+ protected void failed(Throwable e, Description description) {
+ System.out.println(description.getMethodName() + " failed:");
+ e.printStackTrace(System.out);
+ }
+
@Override
protected void finished(Description description) {
System.out.println(formatTestFinishedMessage(description.getMethodName()));
diff --git a/tests/org.eclipse.ui.tests.harness/src/org/eclipse/ui/tests/harness/util/UITestCase.java b/tests/org.eclipse.ui.tests.harness/src/org/eclipse/ui/tests/harness/util/UITestCase.java
index f2d5f5a0e12..436b0f884bc 100644
--- a/tests/org.eclipse.ui.tests.harness/src/org/eclipse/ui/tests/harness/util/UITestCase.java
+++ b/tests/org.eclipse.ui.tests.harness/src/org/eclipse/ui/tests/harness/util/UITestCase.java
@@ -21,6 +21,7 @@
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.List;
+import java.util.Set;
import java.util.concurrent.atomic.AtomicBoolean;
import org.eclipse.core.resources.ResourcesPlugin;
@@ -30,7 +31,6 @@
import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.preference.PreferenceMemento;
-import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ShellEvent;
import org.eclipse.swt.events.ShellListener;
import org.eclipse.swt.widgets.Display;
@@ -75,6 +75,7 @@ public static IAdaptable getPageInput() {
private final CloseTestWindowsRule closeTestWindows = new CloseTestWindowsRule();
protected IWorkbench fWorkbench;
+ private Set preExistingShells;
/** Preference helper to restore changed preference values after test run. */
private final PreferenceMemento prefMemento = new PreferenceMemento();
@@ -115,7 +116,7 @@ public static void fail(String message, Throwable e) {
write(status, 0);
} else
e.printStackTrace();
- fail(message + ": " + e);
+ throw new AssertionError(message, e);
}
private static void indent(OutputStream output, int indent) {
@@ -180,6 +181,7 @@ public final void setUp() throws Exception {
super.setUp();
closeTestWindows.before();
fWorkbench = PlatformUI.getWorkbench();
+ this.preExistingShells = Set.of(fWorkbench.getDisplay().getShells());
String name = runningTest != null ? runningTest : this.getName();
trace(TestRunLogUtil.formatTestStartMessage(name));
doSetUp();
@@ -212,18 +214,17 @@ public final void tearDown() throws Exception {
trace(TestRunLogUtil.formatTestFinishedMessage(name));
prefMemento.resetPreferences();
doTearDown();
- fWorkbench = null;
- // Check for modal shell leak.
+ // Check for shell leak.
List leakedModalShellTitles = new ArrayList<>();
- Shell[] shells = PlatformUI.getWorkbench().getDisplay().getShells();
+ Shell[] shells = fWorkbench.getDisplay().getShells();
for (Shell shell : shells) {
- if (!shell.isDisposed() && shell.isVisible()
- && (shell.getStyle() & (SWT.APPLICATION_MODAL | SWT.PRIMARY_MODAL | SWT.SYSTEM_MODAL)) != 0) {
+ if (!shell.isDisposed() && !preExistingShells.contains(shell)) {
leakedModalShellTitles.add(shell.getText());
shell.close();
}
}
+ fWorkbench = null;
assertEquals("Test leaked modal shell: [" + String.join(", ", leakedModalShellTitles) + "]", 0,
leakedModalShellTitles.size());
}
diff --git a/tests/org.eclipse.ui.tests.navigator/META-INF/MANIFEST.MF b/tests/org.eclipse.ui.tests.navigator/META-INF/MANIFEST.MF
index fc5f685c4e6..438a3039643 100644
--- a/tests/org.eclipse.ui.tests.navigator/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.ui.tests.navigator/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %bundlename
Bundle-SymbolicName: org.eclipse.ui.tests.navigator;singleton:=true
-Bundle-Version: 3.7.500.qualifier
+Bundle-Version: 3.7.700.qualifier
Bundle-Localization: plugin
Require-Bundle: org.eclipse.core.resources,
org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)",
diff --git a/tests/org.eclipse.ui.tests.navigator/src/org/eclipse/ui/tests/navigator/GoBackForwardsTest.java b/tests/org.eclipse.ui.tests.navigator/src/org/eclipse/ui/tests/navigator/GoBackForwardsTest.java
index 53625dbba5d..1b248ded62f 100644
--- a/tests/org.eclipse.ui.tests.navigator/src/org/eclipse/ui/tests/navigator/GoBackForwardsTest.java
+++ b/tests/org.eclipse.ui.tests.navigator/src/org/eclipse/ui/tests/navigator/GoBackForwardsTest.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2020 IBM Corporation and others.
+ * Copyright (c) 2000, 2024 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -14,6 +14,8 @@
package org.eclipse.ui.tests.navigator;
import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Paths;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
@@ -31,7 +33,6 @@
import org.eclipse.ui.intro.IIntroPart;
import org.eclipse.ui.part.FileEditorInput;
import org.eclipse.ui.tests.harness.util.EditorTestHelper;
-import org.eclipse.ui.tests.harness.util.FileTool;
import org.eclipse.ui.tests.harness.util.FileUtil;
import org.eclipse.ui.tests.harness.util.UITestCase;
import org.eclipse.ui.texteditor.AbstractTextEditor;
@@ -70,7 +71,7 @@ public void doSetUp() {
file = FileUtil.createFile(FILE_NAME, project);
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append(FILE_CONTENTS);
- FileTool.writeFromBuilder(file.getLocation().toOSString(), stringBuilder);
+ Files.writeString(Paths.get(file.getLocation().toOSString()), stringBuilder);
project.refreshLocal(IResource.DEPTH_INFINITE, null);
} catch (CoreException e) {
fail("Should not throw an exception");
diff --git a/tests/org.eclipse.ui.tests.navigator/src/org/eclipse/ui/tests/navigator/NavigatorTestBase.java b/tests/org.eclipse.ui.tests.navigator/src/org/eclipse/ui/tests/navigator/NavigatorTestBase.java
index a151fe42545..009c5644759 100644
--- a/tests/org.eclipse.ui.tests.navigator/src/org/eclipse/ui/tests/navigator/NavigatorTestBase.java
+++ b/tests/org.eclipse.ui.tests.navigator/src/org/eclipse/ui/tests/navigator/NavigatorTestBase.java
@@ -402,7 +402,7 @@ protected void checkItems(TreeItem[] rootItems, TestLabelProvider tlp, boolean a
}
assertEquals(tlp.backgroundColor, rootItem.getBackground(0));
assertEquals(TestLabelProvider.toForegroundColor(tlp.backgroundColor), rootItem.getForeground(0));
- assertEquals(tlp.font, rootItem.getFont(0));
+ assertEquals(TestLabelProvider.font, rootItem.getFont(0));
assertEquals(tlp.image, rootItem.getImage(0));
if (all) {
checkItems(rootItem.getItems(), tlp, all, text);
diff --git a/tests/org.eclipse.ui.tests.navigator/src/org/eclipse/ui/tests/navigator/NavigatorTestSuite.java b/tests/org.eclipse.ui.tests.navigator/src/org/eclipse/ui/tests/navigator/NavigatorTestSuite.java
index 6b32b4bb593..e9d59c0c9b2 100644
--- a/tests/org.eclipse.ui.tests.navigator/src/org/eclipse/ui/tests/navigator/NavigatorTestSuite.java
+++ b/tests/org.eclipse.ui.tests.navigator/src/org/eclipse/ui/tests/navigator/NavigatorTestSuite.java
@@ -24,6 +24,7 @@
import org.eclipse.ui.tests.navigator.resources.FoldersAsProjectsContributionTest;
import org.eclipse.ui.tests.navigator.resources.NestedResourcesTests;
import org.eclipse.ui.tests.navigator.resources.PathComparatorTest;
+import org.eclipse.ui.tests.navigator.resources.ResourceMgmtActionProviderTests;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import org.junit.runners.Suite.SuiteClasses;
@@ -34,7 +35,7 @@
ProgrammaticOpenTest.class, PipelineTest.class, PipelineChainTest.class, JstPipelineTest.class,
LabelProviderTest.class, SorterTest.class, ViewerTest.class, CdtTest.class, M12Tests.class,
FirstClassM1Tests.class, LinkHelperTest.class, ShowInTest.class, ResourceTransferTest.class,
- EvaluationCacheTest.class,
+ EvaluationCacheTest.class, ResourceMgmtActionProviderTests.class,
NestedResourcesTests.class, PathComparatorTest.class, FoldersAsProjectsContributionTest.class,
GoBackForwardsTest.class
// DnDTest.class, // DnDTest.testSetDragOperation() fails
diff --git a/tests/org.eclipse.ui.tests.navigator/src/org/eclipse/ui/tests/navigator/extension/TestLabelProvider.java b/tests/org.eclipse.ui.tests.navigator/src/org/eclipse/ui/tests/navigator/extension/TestLabelProvider.java
index 3342017c47e..e5e228d6717 100644
--- a/tests/org.eclipse.ui.tests.navigator/src/org/eclipse/ui/tests/navigator/extension/TestLabelProvider.java
+++ b/tests/org.eclipse.ui.tests.navigator/src/org/eclipse/ui/tests/navigator/extension/TestLabelProvider.java
@@ -42,7 +42,7 @@ public abstract class TestLabelProvider extends LabelProvider implements
public Image image;
- public Font font;
+ public static final Font font = new Font(Display.getDefault(), new FontData());
private Font boldFont;
@@ -170,9 +170,8 @@ public void dispose() {
_runnable.run();
boldFont.dispose();
boldFont = null;
-
-// font.dispose();
-// font = null;
+ // font can not disposed here because the TestLabelProviders are used by its
+ // static instances
}
}
diff --git a/tests/org.eclipse.ui.tests.navigator/src/org/eclipse/ui/tests/navigator/extension/TestLabelProviderBlank.java b/tests/org.eclipse.ui.tests.navigator/src/org/eclipse/ui/tests/navigator/extension/TestLabelProviderBlank.java
index 18f24e1ccb0..aff50ca2bf3 100644
--- a/tests/org.eclipse.ui.tests.navigator/src/org/eclipse/ui/tests/navigator/extension/TestLabelProviderBlank.java
+++ b/tests/org.eclipse.ui.tests.navigator/src/org/eclipse/ui/tests/navigator/extension/TestLabelProviderBlank.java
@@ -15,7 +15,6 @@
package org.eclipse.ui.tests.navigator.extension;
import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.ISharedImages;
import org.eclipse.ui.PlatformUI;
@@ -32,7 +31,6 @@ public class TestLabelProviderBlank extends TestStyledLabelProvider {
protected void initSubclass() {
backgroundColor = Display.getCurrent().getSystemColor(SWT.COLOR_RED);
backgroundColorName = "Red";
- font = new Font(Display.getDefault(), boldFontData);
image = PlatformUI.getWorkbench().getSharedImages().getImage(
ISharedImages.IMG_OBJ_ADD);
instance = this;
diff --git a/tests/org.eclipse.ui.tests.navigator/src/org/eclipse/ui/tests/navigator/extension/TestLabelProviderBlue.java b/tests/org.eclipse.ui.tests.navigator/src/org/eclipse/ui/tests/navigator/extension/TestLabelProviderBlue.java
index eeebb869329..f8df866eeb0 100644
--- a/tests/org.eclipse.ui.tests.navigator/src/org/eclipse/ui/tests/navigator/extension/TestLabelProviderBlue.java
+++ b/tests/org.eclipse.ui.tests.navigator/src/org/eclipse/ui/tests/navigator/extension/TestLabelProviderBlue.java
@@ -15,7 +15,6 @@
package org.eclipse.ui.tests.navigator.extension;
import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.ISharedImages;
import org.eclipse.ui.PlatformUI;
@@ -32,7 +31,6 @@ protected void initSubclass() {
backgroundColor = Display.getCurrent().getSystemColor(
SWT.COLOR_BLUE);
backgroundColorName = "Blue";
- font = new Font(Display.getDefault(), boldFontData);
image = PlatformUI.getWorkbench().getSharedImages().getImage(
ISharedImages.IMG_ETOOL_SAVE_EDIT);
instance = this;
diff --git a/tests/org.eclipse.ui.tests.navigator/src/org/eclipse/ui/tests/navigator/extension/TestLabelProviderCyan.java b/tests/org.eclipse.ui.tests.navigator/src/org/eclipse/ui/tests/navigator/extension/TestLabelProviderCyan.java
index 88c752604d2..d14480eccb0 100644
--- a/tests/org.eclipse.ui.tests.navigator/src/org/eclipse/ui/tests/navigator/extension/TestLabelProviderCyan.java
+++ b/tests/org.eclipse.ui.tests.navigator/src/org/eclipse/ui/tests/navigator/extension/TestLabelProviderCyan.java
@@ -15,7 +15,6 @@
package org.eclipse.ui.tests.navigator.extension;
import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.ISharedImages;
import org.eclipse.ui.PlatformUI;
@@ -32,7 +31,6 @@ protected void initSubclass() {
backgroundColor = Display.getCurrent().getSystemColor(
SWT.COLOR_CYAN);
backgroundColorName = "Cyan";
- font = new Font(Display.getDefault(), boldFontData);
image = PlatformUI.getWorkbench().getSharedImages().getImage(
ISharedImages.IMG_DEF_VIEW);
instance = this;
diff --git a/tests/org.eclipse.ui.tests.navigator/src/org/eclipse/ui/tests/navigator/extension/TestLabelProviderPlainGreen.java b/tests/org.eclipse.ui.tests.navigator/src/org/eclipse/ui/tests/navigator/extension/TestLabelProviderPlainGreen.java
index 1a22d87d454..ef8fd1e3db1 100644
--- a/tests/org.eclipse.ui.tests.navigator/src/org/eclipse/ui/tests/navigator/extension/TestLabelProviderPlainGreen.java
+++ b/tests/org.eclipse.ui.tests.navigator/src/org/eclipse/ui/tests/navigator/extension/TestLabelProviderPlainGreen.java
@@ -15,7 +15,6 @@
package org.eclipse.ui.tests.navigator.extension;
import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.ISharedImages;
import org.eclipse.ui.PlatformUI;
@@ -31,7 +30,6 @@ protected void initSubclass() {
backgroundColor = Display.getCurrent().getSystemColor(
SWT.COLOR_GREEN);
backgroundColorName = "Green";
- font = new Font(Display.getDefault(), boldFontData);
image = PlatformUI.getWorkbench().getSharedImages().getImage(
ISharedImages.IMG_ELCL_COLLAPSEALL);
instance = this;
diff --git a/tests/org.eclipse.ui.tests.navigator/src/org/eclipse/ui/tests/navigator/extension/TestLabelProviderPlainRed.java b/tests/org.eclipse.ui.tests.navigator/src/org/eclipse/ui/tests/navigator/extension/TestLabelProviderPlainRed.java
index ef791d71701..8be8e8bd7f0 100644
--- a/tests/org.eclipse.ui.tests.navigator/src/org/eclipse/ui/tests/navigator/extension/TestLabelProviderPlainRed.java
+++ b/tests/org.eclipse.ui.tests.navigator/src/org/eclipse/ui/tests/navigator/extension/TestLabelProviderPlainRed.java
@@ -15,7 +15,6 @@
package org.eclipse.ui.tests.navigator.extension;
import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.ISharedImages;
import org.eclipse.ui.PlatformUI;
@@ -31,7 +30,6 @@ protected void initSubclass() {
backgroundColor = Display.getCurrent().getSystemColor(
SWT.COLOR_RED);
backgroundColorName = "Red";
- font = new Font(Display.getDefault(), boldFontData);
image = PlatformUI.getWorkbench().getSharedImages().getImage(
ISharedImages.IMG_ELCL_REMOVE);
instance = this;
diff --git a/tests/org.eclipse.ui.tests.navigator/src/org/eclipse/ui/tests/navigator/extension/TestLabelProviderStyledGreen.java b/tests/org.eclipse.ui.tests.navigator/src/org/eclipse/ui/tests/navigator/extension/TestLabelProviderStyledGreen.java
index d48c3f3263f..fed548b28a5 100755
--- a/tests/org.eclipse.ui.tests.navigator/src/org/eclipse/ui/tests/navigator/extension/TestLabelProviderStyledGreen.java
+++ b/tests/org.eclipse.ui.tests.navigator/src/org/eclipse/ui/tests/navigator/extension/TestLabelProviderStyledGreen.java
@@ -15,7 +15,6 @@
package org.eclipse.ui.tests.navigator.extension;
import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.ISharedImages;
import org.eclipse.ui.PlatformUI;
@@ -31,7 +30,6 @@ protected void initSubclass() {
backgroundColor = Display.getCurrent().getSystemColor(
SWT.COLOR_GREEN);
backgroundColorName = "Green";
- font = new Font(Display.getDefault(), boldFontData);
image = PlatformUI.getWorkbench().getSharedImages().getImage(
ISharedImages.IMG_ELCL_COLLAPSEALL);
instance = this;
diff --git a/tests/org.eclipse.ui.tests.navigator/src/org/eclipse/ui/tests/navigator/extension/TestLabelProviderStyledRed.java b/tests/org.eclipse.ui.tests.navigator/src/org/eclipse/ui/tests/navigator/extension/TestLabelProviderStyledRed.java
index d666742ad43..2e8593cce81 100755
--- a/tests/org.eclipse.ui.tests.navigator/src/org/eclipse/ui/tests/navigator/extension/TestLabelProviderStyledRed.java
+++ b/tests/org.eclipse.ui.tests.navigator/src/org/eclipse/ui/tests/navigator/extension/TestLabelProviderStyledRed.java
@@ -15,7 +15,6 @@
package org.eclipse.ui.tests.navigator.extension;
import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.ISharedImages;
import org.eclipse.ui.PlatformUI;
@@ -31,7 +30,6 @@ protected void initSubclass() {
backgroundColor = Display.getCurrent().getSystemColor(
SWT.COLOR_RED);
backgroundColorName = "Red";
- font = new Font(Display.getDefault(), boldFontData);
image = PlatformUI.getWorkbench().getSharedImages().getImage(
ISharedImages.IMG_ELCL_REMOVE);
instance = this;
diff --git a/tests/org.eclipse.ui.tests.navigator/src/org/eclipse/ui/tests/navigator/resources/ResourceMgmtActionProviderTests.java b/tests/org.eclipse.ui.tests.navigator/src/org/eclipse/ui/tests/navigator/resources/ResourceMgmtActionProviderTests.java
new file mode 100644
index 00000000000..ca4e49f0cbb
--- /dev/null
+++ b/tests/org.eclipse.ui.tests.navigator/src/org/eclipse/ui/tests/navigator/resources/ResourceMgmtActionProviderTests.java
@@ -0,0 +1,221 @@
+/*******************************************************************************
+ * Copyright (c) 2024 Dave Carpeneto 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.ui.tests.navigator.resources;
+
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import org.eclipse.core.resources.ICommand;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IProjectDescription;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IWorkspaceDescription;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.jface.action.GroupMarker;
+import org.eclipse.jface.action.IContributionItem;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.ui.actions.ActionContext;
+import org.eclipse.ui.internal.navigator.NavigatorContentService;
+import org.eclipse.ui.internal.navigator.extensions.CommonActionExtensionSite;
+import org.eclipse.ui.internal.navigator.resources.actions.ResourceMgmtActionProvider;
+import org.eclipse.ui.navigator.CommonViewerSiteFactory;
+import org.eclipse.ui.navigator.ICommonActionExtensionSite;
+import org.eclipse.ui.navigator.ICommonMenuConstants;
+import org.eclipse.ui.tests.navigator.NavigatorTestBase;
+import org.junit.Before;
+import org.junit.Test;
+
+public final class ResourceMgmtActionProviderTests extends NavigatorTestBase {
+
+ private IMenuManager manager;
+
+ public ResourceMgmtActionProviderTests() {
+ _navigatorInstanceId = TEST_VIEWER;
+ }
+
+ @Override
+ @Before
+ public void setUp() {
+ super.setUp();
+ manager = new MenuManager();
+ manager.add(new GroupMarker(ICommonMenuConstants.GROUP_BUILD));
+ }
+
+ /**
+ * Test for 'no selection' condition - no menu items should be included
+ */
+ @Test
+ public void testFillContextMenu_noSelection() {
+ ResourceMgmtActionProvider provider = provider((IResource[]) null);
+ provider.fillContextMenu(manager);
+ checkMenuHasCorrectContributions(false, false, false, false, false);
+ }
+
+ /**
+ * Test for 'folder' condition - only 'refresh' should be included
+ */
+ @Test
+ public void testFillContextMenu_folderSelection() {
+
+ IFolder justAFolder = ResourcesPlugin.getWorkspace().getRoot().getFolder(new Path("some/folder"));
+ ResourceMgmtActionProvider provider = provider(justAFolder);
+ provider.fillContextMenu(manager);
+ checkMenuHasCorrectContributions(false, true, false, false, false);
+ }
+
+ /**
+ * Test for 'closed project' - only 'open project' should be included
+ */
+ @Test
+ public void testFillContextMenu_closedProjectSelection() {
+ IProject closedProj = ResourcesPlugin.getWorkspace().getRoot().getProject("closedProj");
+ ResourceMgmtActionProvider provider = provider(closedProj);
+ provider.fillContextMenu(manager);
+ checkMenuHasCorrectContributions(false, false, true, false, false);
+ }
+
+ /**
+ * Test for 'open project' that doesn't have a builder attached - all but
+ * 'build' & 'open project' should be enabled
+ */
+ @Test
+ public void testFillContextMenu_openProjectNoBuilderSelection() {
+ IProject openProj = ResourcesPlugin.getWorkspace().getRoot().getProject("Test");
+ boolean autoBuildInitialState = ResourcesPlugin.getWorkspace().getDescription().isAutoBuilding();
+
+ try {
+ if (!autoBuildInitialState) {
+ // we want to enable auto-building for this test to guarantee that the 'build'
+ // menu option isn't shown
+ IWorkspaceDescription wsd = ResourcesPlugin.getWorkspace().getDescription();
+ wsd.setAutoBuilding(true);
+ ResourcesPlugin.getWorkspace().setDescription(wsd);
+ }
+ openProj.open(null);
+ } catch (CoreException e) {
+ fail(e.getClass().getSimpleName() + " thrown: " + e.getLocalizedMessage());
+ }
+ ResourceMgmtActionProvider provider = provider(openProj);
+ provider.fillContextMenu(manager);
+ checkMenuHasCorrectContributions(false, true, false, true, true);
+
+ if (!autoBuildInitialState) {
+ // clean-up: reset autobuild since we changed it
+ try {
+ IWorkspaceDescription wsd = ResourcesPlugin.getWorkspace().getDescription();
+ wsd.setAutoBuilding(false);
+ ResourcesPlugin.getWorkspace().setDescription(wsd);
+ } catch (CoreException e) {
+ fail(e.getClass().getSimpleName() + " thrown: " + e.getLocalizedMessage());
+ }
+ }
+ }
+
+ /**
+ * Test for 'open project' that doesn't have a builder attached - only 'open
+ * project' should be disabled
+ */
+ @Test
+ public void testFillContextMenu_openProjectWithBuilderSelection() {
+ IProject openProj = ResourcesPlugin.getWorkspace().getRoot().getProject("Test");
+ IWorkspaceDescription wsd = ResourcesPlugin.getWorkspace().getDescription();
+ boolean autobuildInitialState = wsd.isAutoBuilding();
+ boolean hasNoInitialBuildCommands = false;
+ IProjectDescription desc = null;
+ try {
+ if (autobuildInitialState) {
+ wsd.setAutoBuilding(false);
+ ResourcesPlugin.getWorkspace().setDescription(wsd);
+ }
+ openProj.open(null);
+ desc = openProj.getDescription();
+ if (desc.getBuildSpec().length == 0) {
+ hasNoInitialBuildCommands = true;
+ ICommand cmd = desc.newCommand();
+ desc.setBuildSpec(new ICommand[] { cmd });
+ openProj.setDescription(desc, null);
+ }
+ } catch (CoreException e) {
+ fail(e.getClass().getSimpleName() + " thrown: " + e.getLocalizedMessage());
+ }
+ ResourceMgmtActionProvider provider = provider(openProj);
+ provider.fillContextMenu(manager);
+ checkMenuHasCorrectContributions(true, true, false, true, true);
+ try {
+ // clean-up where needed: reset autobuild if we changed it & remove
+ // the build config if we added it
+ if (autobuildInitialState) {
+ wsd.setAutoBuilding(true);
+ ResourcesPlugin.getWorkspace().setDescription(wsd);
+ }
+ if (desc != null && hasNoInitialBuildCommands) {
+ desc.setBuildSpec(new ICommand[0]);
+ openProj.setDescription(desc, null);
+ }
+ } catch (CoreException e) {
+ fail(e.getClass().getSimpleName() + " thrown: " + e.getLocalizedMessage());
+ }
+ }
+
+ /*
+ * Return a provider, given the selected navigator items
+ */
+ private ResourceMgmtActionProvider provider(IResource... selectedElements) {
+ ICommonActionExtensionSite cfg = new CommonActionExtensionSite("NA", "NA",
+ CommonViewerSiteFactory.createCommonViewerSite(_commonNavigator.getViewSite()),
+ (NavigatorContentService) _contentService, _viewer);
+ ResourceMgmtActionProvider provider = new ResourceMgmtActionProvider();
+ StructuredSelection selection = null;
+ if (selectedElements != null && selectedElements.length > 0) {
+ selection = new StructuredSelection(selectedElements);
+ } else {
+ selection = new StructuredSelection();
+ }
+ provider.setContext(new ActionContext(selection));
+ provider.init(cfg);
+ return provider;
+ }
+
+ /*
+ * Check the expected menu items (passed in) against what the menu actually has
+ */
+ private void checkMenuHasCorrectContributions(boolean... actions) {
+ if (actions.length != 5) { // there's 5 menus we check for
+ fail(String.format("Incorrect number of menu items being checked : %d", actions.length));
+ }
+ int index = 0;
+ for (String thisAction : new String[] { "org.eclipse.ui.BuildAction", "org.eclipse.ui.RefreshAction",
+ "org.eclipse.ui.OpenResourceAction", "org.eclipse.ui.CloseResourceAction",
+ "org.eclipse.ui.CloseUnrelatedProjectsAction" }) {
+ assertTrue(String.format("Unexpected menu membership for %s (%b)", thisAction, !actions[index]),
+ actions[index] == menuHasContribution(thisAction));
+ index++;
+ }
+ }
+
+ /*
+ * Check the menu for the named entry
+ */
+ private boolean menuHasContribution(String contribution) {
+ for (IContributionItem thisItem : manager.getItems()) {
+ if (thisItem.getId().equals(contribution)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+}
diff --git a/tests/org.eclipse.ui.tests.pluginchecks/META-INF/MANIFEST.MF b/tests/org.eclipse.ui.tests.pluginchecks/META-INF/MANIFEST.MF
index 55370d8626c..10c5422f8ec 100644
--- a/tests/org.eclipse.ui.tests.pluginchecks/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.ui.tests.pluginchecks/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Pluginchecks
Bundle-SymbolicName: org.eclipse.ui.tests.pluginchecks;singleton:=true
-Bundle-Version: 1.2.300.qualifier
+Bundle-Version: 1.2.400.qualifier
Automatic-Module-Name: org.eclipse.ui.tests.pluginchecks
Bundle-RequiredExecutionEnvironment: JavaSE-17
Require-Bundle: org.junit;bundle-version="4.12.0",
diff --git a/tests/org.eclipse.ui.tests.pluginchecks/src/org/eclipse/ui/tests/pluginchecks/PluginWalkerTest.java b/tests/org.eclipse.ui.tests.pluginchecks/src/org/eclipse/ui/tests/pluginchecks/PluginWalkerTest.java
index effbf678eca..8c4e2b85647 100644
--- a/tests/org.eclipse.ui.tests.pluginchecks/src/org/eclipse/ui/tests/pluginchecks/PluginWalkerTest.java
+++ b/tests/org.eclipse.ui.tests.pluginchecks/src/org/eclipse/ui/tests/pluginchecks/PluginWalkerTest.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2018 vogella GmbH and others.
+ * Copyright (c) 2018, 2024 vogella GmbH and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -74,11 +74,11 @@ public void setup() throws Exception {
bundleContext = bundle.getBundleContext();
bundlesWithPluginXml = List.of("org.eclipse.e4.ui.css.swt", "org.eclipse.e4.ui.model.workbench",
"org.eclipse.e4.ui.workbench.swt", "org.eclipse.ui.forms", "org.eclipse.ui.themes",
- "org.eclipse.e4.ui.workbench", "org.eclipse.e4.ui.workbench.addons.swt", "org.eclipse.ui.ide",
- "org.eclipse.e4.ui.css.core", "org.eclipse.ui.workbench", "org.eclipse.ui.navigator.resources",
- "org.eclipse.ui.navigator", "org.eclipse.ui.views", "org.eclipse.ui.views.properties.tabbed",
- "org.eclipse.ui", "org.eclipse.ui.browser", "org.eclipse.e4.ui.css.swt.theme",
- "org.eclipse.ui.ide.application", "org.eclipse.ui.monitoring");
+ "org.eclipse.e4.ui.workbench", "org.eclipse.ui.ide", "org.eclipse.e4.ui.css.core",
+ "org.eclipse.ui.workbench", "org.eclipse.ui.navigator.resources", "org.eclipse.ui.navigator",
+ "org.eclipse.ui.views", "org.eclipse.ui.views.properties.tabbed", "org.eclipse.ui",
+ "org.eclipse.ui.browser", "org.eclipse.e4.ui.css.swt.theme", "org.eclipse.ui.ide.application",
+ "org.eclipse.ui.monitoring");
}
@Test
diff --git a/tests/org.eclipse.ui.tests.rcp/Eclipse RCP Tests/org/eclipse/ui/tests/rcp/RcpTestSuite.java b/tests/org.eclipse.ui.tests.rcp/Eclipse RCP Tests/org/eclipse/ui/tests/rcp/RcpTestSuite.java
index 583d982b105..137f0e8cc41 100644
--- a/tests/org.eclipse.ui.tests.rcp/Eclipse RCP Tests/org/eclipse/ui/tests/rcp/RcpTestSuite.java
+++ b/tests/org.eclipse.ui.tests.rcp/Eclipse RCP Tests/org/eclipse/ui/tests/rcp/RcpTestSuite.java
@@ -27,6 +27,4 @@
WorkbenchWindowConfigurerTest.class, ActionBarConfigurerTest.class, IWorkbenchPageTest.class,
WorkbenchSaveRestoreStateTest.class, WorkbenchListenerTest.class, WorkbenchTest.class })
public class RcpTestSuite {
- public RcpTestSuite() {
- }
}
diff --git a/tests/org.eclipse.ui.tests.rcp/Eclipse RCP Tests/org/eclipse/ui/tests/rcp/WorkbenchWindowConfigurerTest.java b/tests/org.eclipse.ui.tests.rcp/Eclipse RCP Tests/org/eclipse/ui/tests/rcp/WorkbenchWindowConfigurerTest.java
index 689d0398858..2a2aefe58cc 100644
--- a/tests/org.eclipse.ui.tests.rcp/Eclipse RCP Tests/org/eclipse/ui/tests/rcp/WorkbenchWindowConfigurerTest.java
+++ b/tests/org.eclipse.ui.tests.rcp/Eclipse RCP Tests/org/eclipse/ui/tests/rcp/WorkbenchWindowConfigurerTest.java
@@ -294,15 +294,15 @@ public IStatus saveState(IMemento memento) {
}};
}
+ @SuppressWarnings("removal")
@Override
- @SuppressWarnings("deprecation")
public Control createEmptyWindowContents(Composite parent) {
ensureThread();
return super.createEmptyWindowContents(parent);
}
+ @SuppressWarnings("removal")
@Override
- @SuppressWarnings("deprecation")
public void createWindowContents(Shell shell) {
ensureThread();
super.createWindowContents(shell);
diff --git a/tests/org.eclipse.ui.tests.rcp/META-INF/MANIFEST.MF b/tests/org.eclipse.ui.tests.rcp/META-INF/MANIFEST.MF
index a86735328fa..d0343bfdb21 100644
--- a/tests/org.eclipse.ui.tests.rcp/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.ui.tests.rcp/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.ui.tests.rcp; singleton:=true
-Bundle-Version: 3.6.400.qualifier
+Bundle-Version: 3.6.600.qualifier
Bundle-Vendor: %providerName
Require-Bundle: org.eclipse.core.runtime,
org.eclipse.ui,
diff --git a/tests/org.eclipse.ui.tests.rcp/RCP Test Suite.launch b/tests/org.eclipse.ui.tests.rcp/RCP Test Suite.launch
index b429be97a17..6880d7474dd 100644
--- a/tests/org.eclipse.ui.tests.rcp/RCP Test Suite.launch
+++ b/tests/org.eclipse.ui.tests.rcp/RCP Test Suite.launch
@@ -33,7 +33,7 @@
-
+
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/NoApplicationAttribTestView.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/NoApplicationAttribTestView.java
new file mode 100644
index 00000000000..a60b374fc75
--- /dev/null
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/NoApplicationAttribTestView.java
@@ -0,0 +1,30 @@
+/*******************************************************************************
+ * Copyright (c) 2024 Enda O'Brien 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
+ *
+ * Contributors: Enda O'Brien, Pilz Ireland - PR #144
+ *******************************************************************************/
+package org.eclipse.ui.tests;
+
+import org.eclipse.ui.views.markers.MarkerSupportView;
+
+/**
+ * A test view that does not define the markerTypeReference application
+ * attribute in its content generator (CONTENT_GEN_ID).
+ *
+ */
+public class NoApplicationAttribTestView extends MarkerSupportView {
+ public static final String ID = "org.eclipse.ui.tests.noApplicationAttribTestView";
+
+ static final String CONTENT_GEN_ID = "org.eclipse.ui.tests.noApplicationAttribTestViewContentGenerator";
+
+ public NoApplicationAttribTestView() {
+ super(CONTENT_GEN_ID);
+ }
+
+}
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/StyledStringHighlighterTest.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/StyledStringHighlighterTest.java
index cc90f7317a7..41d1638b4b4 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/StyledStringHighlighterTest.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/StyledStringHighlighterTest.java
@@ -15,37 +15,34 @@
package org.eclipse.ui.tests;
+import static org.junit.Assert.assertEquals;
+
import org.eclipse.jface.text.contentassist.BoldStylerProvider;
import org.eclipse.jface.viewers.StyledString;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.StyleRange;
import org.eclipse.swt.graphics.Font;
+import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.dialogs.StyledStringHighlighter;
-import org.eclipse.ui.tests.harness.util.UITestCase;
+import org.junit.After;
+import org.junit.Before;
import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
-
-@RunWith(JUnit4.class)
-public class StyledStringHighlighterTest extends UITestCase {
- public StyledStringHighlighterTest() {
- super(StyledStringHighlighterTest.class.getSimpleName());
- }
+public class StyledStringHighlighterTest {
private StyledStringHighlighter cut;
private static Font font;
private static BoldStylerProvider boldStyler;
- @Override
+ @Before
public void doSetUp() {
- font = new Font(fWorkbench.getDisplay(), "Arial", 14, SWT.BOLD);
+ font = new Font(Display.getDefault(), "Arial", 14, SWT.BOLD);
boldStyler = new BoldStylerProvider(font);
cut = new StyledStringHighlighter();
}
- @Override
- protected void doTearDown() {
+ @After
+ public void doTearDown() {
if (boldStyler != null) {
boldStyler.dispose();
boldStyler = null;
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/SubTypeOnlyTestView.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/SubTypeOnlyTestView.java
new file mode 100644
index 00000000000..6701562072b
--- /dev/null
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/SubTypeOnlyTestView.java
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * Copyright (c) 2024 Enda O'Brien 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
+ *
+ * Contributors: Enda O'Brien, Pilz Ireland - PR #144
+ *******************************************************************************/
+package org.eclipse.ui.tests;
+
+import org.eclipse.ui.views.markers.MarkerSupportView;
+
+/**
+ * A test view that defines a markerTypeReference application attribute of
+ * subTypesOnly in it content generator (CONTENT_GEN_ID).
+ */
+public class SubTypeOnlyTestView extends MarkerSupportView {
+ public static final String ID = "org.eclipse.ui.tests.subTypeOnlyTestView";
+
+ static final String CONTENT_GEN_ID = "org.eclipse.ui.tests.subTypeOnlyTestViewContentGenerator";
+
+ public SubTypeOnlyTestView() {
+ super(CONTENT_GEN_ID);
+ }
+
+}
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/SwtLeakTestWatcher.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/SwtLeakTestWatcher.java
new file mode 100644
index 00000000000..dd9e42bb9fc
--- /dev/null
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/SwtLeakTestWatcher.java
@@ -0,0 +1,58 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2023 IBM Corporation 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
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.ui.tests;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.PlatformUI;
+import org.junit.Assert;
+import org.junit.rules.TestWatcher;
+import org.junit.runner.Description;
+
+public class SwtLeakTestWatcher extends TestWatcher {
+
+ IWorkbench workbench;
+ Set preExistingShells;
+
+ @Override
+ protected void starting(Description description) {
+ workbench = PlatformUI.getWorkbench();
+ preExistingShells = Set.of(workbench.getDisplay().getShells());
+ super.starting(description);
+ }
+
+ @Override
+ protected void finished(Description description) {
+ // Check for shell leak.
+ List leakedModalShellTitles = new ArrayList<>();
+ Shell[] shells = workbench.getDisplay().getShells();
+ for (Shell shell : shells) {
+ if (!shell.isDisposed() && !preExistingShells.contains(shell)) {
+ leakedModalShellTitles.add(shell.getText());
+ // closing shell may introduce "not disposed" errors in next tests :
+ // shell.close();
+ }
+ }
+ if (!leakedModalShellTitles.isEmpty()) {
+ Assert.fail(description.getClassName() + "." + description.getDisplayName()
+ + " Test leaked modal shell(s): [" + String.join(", ", leakedModalShellTitles) + "]");
+ }
+ super.finished(description);
+ }
+
+}
\ No newline at end of file
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/TypeAndSubTypeTestView.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/TypeAndSubTypeTestView.java
new file mode 100644
index 00000000000..b7c2990e6bc
--- /dev/null
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/TypeAndSubTypeTestView.java
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * Copyright (c) 2024 Enda O'Brien 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
+ *
+ * Contributors: Enda O'Brien, Pilz Ireland - PR #144
+ *******************************************************************************/
+package org.eclipse.ui.tests;
+
+import org.eclipse.ui.views.markers.MarkerSupportView;
+
+/**
+ * A test view that defines a markerTypeReference application attribute of
+ * typeAndSubTypes in it content generator (CONTENT_GEN_ID).
+ */
+public class TypeAndSubTypeTestView extends MarkerSupportView {
+ public static final String ID = "org.eclipse.ui.tests.typeAndSubTypeTestView";
+
+ static final String CONTENT_GEN_ID = "org.eclipse.ui.tests.typeAndSubTypeTestViewContentGenerator";
+
+ public TypeAndSubTypeTestView() {
+ super(CONTENT_GEN_ID);
+ }
+
+}
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/TypeOnlyTestView.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/TypeOnlyTestView.java
new file mode 100644
index 00000000000..a571845293e
--- /dev/null
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/TypeOnlyTestView.java
@@ -0,0 +1,31 @@
+/*******************************************************************************
+ * Copyright (c) 2024 Enda O'Brien 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
+ *
+ * Contributors: Enda O'Brien, Pilz Ireland - PR #144
+ *******************************************************************************/
+package org.eclipse.ui.tests;
+
+import org.eclipse.ui.views.markers.MarkerSupportView;
+
+/**
+ * A test view that defines a markerTypeReference application attribute of
+ * typeOnly in it content generator (CONTENT_GEN_ID).
+ *
+ */
+public class TypeOnlyTestView extends MarkerSupportView {
+
+ public static final String ID = "org.eclipse.ui.tests.typeOnlyTestView";
+
+ static final String CONTENT_GEN_ID = "org.eclipse.ui.tests.typeOnlyTestViewContentGenerator";
+
+ public TypeOnlyTestView() {
+ super(CONTENT_GEN_ID);
+ }
+
+}
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/UiTestSuite.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/UiTestSuite.java
index 8664529313e..008255bf985 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/UiTestSuite.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/UiTestSuite.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2019 IBM Corporation and others.
+ * Copyright (c) 2000, 2025 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -37,7 +37,6 @@
import org.eclipse.ui.tests.fieldassist.FieldAssistTestSuite;
import org.eclipse.ui.tests.filteredtree.FilteredTreeTests;
import org.eclipse.ui.tests.filteredtree.PatternFilterTest;
-import org.eclipse.ui.tests.filteredtree.TextMatcherTest;
import org.eclipse.ui.tests.internal.InternalTestSuite;
import org.eclipse.ui.tests.intro.IntroTestSuite;
import org.eclipse.ui.tests.keys.KeysTestSuite;
@@ -91,7 +90,6 @@
ConcurrencyTestSuite.class,
FilteredTreeTests.class,
PatternFilterTest.class,
- TextMatcherTest.class,
StatusHandlingTestSuite.class,
MenusTestSuite.class,
QuickAccessTestSuite.class,
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/activities/ActivityPreferenceTest.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/activities/ActivityPreferenceTest.java
index 8402ef6e109..6efee01c401 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/activities/ActivityPreferenceTest.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/activities/ActivityPreferenceTest.java
@@ -23,13 +23,7 @@
import org.eclipse.ui.activities.IActivityManager;
import org.eclipse.ui.internal.WorkbenchPlugin;
import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
-/**
- * @since 3.1
- */
-@RunWith(JUnit4.class)
public class ActivityPreferenceTest {
/**
* Preference prefix - must match the one specified in ActivityPreferenceHelper
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/activities/DynamicTest.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/activities/DynamicTest.java
index 477a3b314c8..e39e3314405 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/activities/DynamicTest.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/activities/DynamicTest.java
@@ -15,8 +15,8 @@
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotEquals;
import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
@@ -28,7 +28,6 @@
import org.eclipse.core.runtime.ContributorFactoryOSGi;
import org.eclipse.core.runtime.IContributor;
import org.eclipse.core.runtime.RegistryFactory;
-import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.activities.IActivity;
import org.eclipse.ui.activities.IActivityPatternBinding;
@@ -41,6 +40,7 @@
import org.eclipse.ui.activities.WorkbenchTriggerPointAdvisor;
import org.eclipse.ui.internal.activities.MutableActivityManager;
import org.eclipse.ui.tests.TestPlugin;
+import org.eclipse.ui.tests.harness.util.DisplayHelper;
import org.junit.Before;
import org.junit.Test;
@@ -92,9 +92,9 @@ public void init() {
*/
@Test
public void testSizes() {
- assertTrue(activityManager.getDefinedCategoryIds().size() == 6);
- assertTrue(activityManager.getDefinedActivityIds().size() == 18);
- assertTrue(activityManager.getEnabledActivityIds().size() == 3);
+ assertEquals(6, activityManager.getDefinedCategoryIds().size());
+ assertEquals(18, activityManager.getDefinedActivityIds().size());
+ assertEquals(3, activityManager.getEnabledActivityIds().size());
}
/**
@@ -103,20 +103,18 @@ public void testSizes() {
@Test
public void testActivityPatternBindings() {
IActivity first_activity = activityManager
- .getActivity((String) activityManager.getDefinedActivityIds()
- .toArray()[0]);
+ .getActivity(activityManager.getDefinedActivityIds()
+ .toArray(String[]::new)[0]);
Set initialPatternBindings = first_activity
.getActivityPatternBindings();
// Add pattern binding
String pattern = "org\\.eclipse\\.ui\\.myPattern/.*"; //$NON-NLS-1$
fixedModelRegistry.addActivityPatternBinding(first_activity.getId(),
pattern);
- assertFalse(initialPatternBindings.size() == first_activity
- .getActivityPatternBindings().size());
+ assertNotEquals(initialPatternBindings.size(), first_activity.getActivityPatternBindings().size());
// Remove pattern binding
fixedModelRegistry.removeActivityPatternBinding(pattern);
- assertTrue(initialPatternBindings.size() == first_activity
- .getActivityPatternBindings().size());
+ assertEquals(initialPatternBindings.size(), first_activity.getActivityPatternBindings().size());
}
/**
@@ -125,17 +123,16 @@ public void testActivityPatternBindings() {
@Test
public void testEnabledActivities() {
// Add an enabled activity
- Set compareSet;
Set copySet = new HashSet<>(activityManager.getEnabledActivityIds());
- copySet.add(activityManager.getDefinedActivityIds().toArray(new String[0])[0]);
+ copySet.add(activityManager.getDefinedActivityIds().toArray(String[]::new)[0]);
activityManager.setEnabledActivityIds(copySet);
- compareSet = activityManager.getEnabledActivityIds();
- assertTrue(compareSet.size() == copySet.size());
+ Set compareSet = activityManager.getEnabledActivityIds();
+ assertEquals(compareSet.size(), copySet.size());
// Remove an enabled activity
copySet.remove(activityManager.getDefinedActivityIds().toArray()[0]);
activityManager.setEnabledActivityIds(copySet);
compareSet = activityManager.getEnabledActivityIds();
- assertTrue(compareSet.size() == copySet.size());
+ assertEquals(compareSet.size(), copySet.size());
}
/**
@@ -161,8 +158,8 @@ public void testIdentifiersListener() {
IIdentifier activitiesIdentifier = activityManager
.getIdentifier("org.eclipse.pattern4"); //$NON-NLS-1$
Set identifiedActivities = activitiesIdentifier.getActivityIds(); // $NON-NLS-1$
- assertTrue(identifiedActivities.size() == 1);
- assertTrue(((String) identifiedActivities.toArray()[0])
+ assertEquals(1, identifiedActivities.size());
+ assertTrue(identifiedActivities.toArray(String[]::new)[0]
.equals("org.eclipse.activity4")); //$NON-NLS-1$
assertFalse(activitiesIdentifier.isEnabled());
// Disable Enabled activity
@@ -170,28 +167,28 @@ public void testIdentifiersListener() {
Set copySet = new HashSet<>(activityManager.getEnabledActivityIds());
copySet.remove(enabledIdentifier.getActivityIds().toArray()[0]);
activityManager.setEnabledActivityIds(copySet);
- assertTrue(listenerType == -1);
+ assertEquals(-1, listenerType);
// Enable Disabled activity
listenerType = 0;
copySet.add("org.eclipse.activity3"); //$NON-NLS-1$
activityManager.setEnabledActivityIds(copySet);
- assertTrue(listenerType == -1);
+ assertEquals(-1, listenerType);
// Add pattern binding
listenerType = 1;
fixedModelRegistry.addActivityPatternBinding("org.eclipse.activity1", //$NON-NLS-1$
"org.eclipse.pattern3"); //$NON-NLS-1$
- assertTrue(listenerType == -1);
+ assertEquals(-1, listenerType);
// Test correctenesss of identifier
Set manipulatedIdentifiers = activityManager.getIdentifier(
"org.eclipse.pattern3").getActivityIds(); //$NON-NLS-1$
- assertTrue(manipulatedIdentifiers.size() == 2);
+ assertEquals(2, manipulatedIdentifiers.size());
// Remove pattern binding
listenerType = 1;
fixedModelRegistry.removeActivityPatternBinding("org.eclipse.pattern3"); //$NON-NLS-1$
- assertTrue(listenerType == -1);
+ assertEquals(-1, listenerType);
manipulatedIdentifiers = activityManager.getIdentifier(
"org.eclipse.pattern3").getActivityIds(); //$NON-NLS-1$
- assertTrue(manipulatedIdentifiers.size() == 1);
+ assertEquals(1, manipulatedIdentifiers.size());
}
/**
@@ -218,37 +215,37 @@ public void testActivityManagerListener() {
Set enabledSet = new HashSet<>(activityManager.getEnabledActivityIds());
enabledSet.add("org.eclipse.activity19"); //$NON-NLS-1$
activityManager.setEnabledActivityIds(enabledSet);
- assertTrue(listenerType == -1);
+ assertEquals(-1, listenerType);
// Remove an enabled activity
listenerType = 2;
enabledSet.remove("org.eclipse.activity19"); //$NON-NLS-1$
activityManager.setEnabledActivityIds(enabledSet);
- assertTrue(listenerType == -1);
+ assertEquals(-1, listenerType);
// Add categroy
listenerType = 3;
fixedModelRegistry.addCategory("org.eclipse.category7", "Category 7"); //$NON-NLS-1$ //$NON-NLS-2$
- assertTrue(listenerType == -1);
+ assertEquals(-1, listenerType);
// Remove category
listenerType = 3;
fixedModelRegistry.removeCategory("org.eclipse.category7", //$NON-NLS-1$
"Category 7"); //$NON-NLS-1$
- assertTrue(listenerType == -1);
+ assertEquals(-1, listenerType);
// Add activity
listenerType = 4;
fixedModelRegistry.addActivity("org.eclipse.activity19", "Activity 19"); //$NON-NLS-1$ //$NON-NLS-2$
- assertTrue(listenerType == -1);
+ assertEquals(-1, listenerType);
// Remove activity
listenerType = 4;
fixedModelRegistry.removeActivity("org.eclipse.activity19", //$NON-NLS-1$
"Activity 19"); //$NON-NLS-1$
- assertTrue(listenerType == -1);
+ assertEquals(-1, listenerType);
}
/**
* Test the activity listener.
*/
@Test
- public void testActivityListener() {
+ public void testActivityListener() throws NotDefinedException {
final String activity_to_listen_name = "Activity 18"; //$NON-NLS-1$
final IActivity activity_to_listen = activityManager
.getActivity("org.eclipse.activity18"); //$NON-NLS-1$
@@ -281,82 +278,74 @@ public void testActivityListener() {
// Remove activity and change name consequently
fixedModelRegistry.removeActivity(activity_to_listen.getId(),
activity_to_listen_name);
- assertTrue(listenerType == -1);
+ assertEquals(-1, listenerType);
// Add activity
listenerType = 5;
fixedModelRegistry.addActivity(activity_to_listen.getId(),
activity_to_listen_name);
- assertTrue(listenerType == -1);
+ assertEquals(-1, listenerType);
// Add to enabled activity
listenerType = 6;
Set enabledSet = new HashSet<>(activityManager.getEnabledActivityIds());
enabledSet.add(activity_to_listen.getId());
activityManager.setEnabledActivityIds(enabledSet);
- assertTrue(listenerType == -1);
+ assertEquals(-1, listenerType);
// Remove from enabled activity
listenerType = 6;
enabledSet.remove(activity_to_listen.getId());
activityManager.setEnabledActivityIds(enabledSet);
- assertTrue(listenerType == -1);
+ assertEquals(-1, listenerType);
// Add pattern binding
listenerType = 8;
fixedModelRegistry.addActivityPatternBinding("org.eclipse.activity18", //$NON-NLS-1$
"org.eclipse.pattern3"); //$NON-NLS-1$
- assertTrue(listenerType == -1);
+ assertEquals(-1, listenerType);
// Remove pattern binding
listenerType = 8;
fixedModelRegistry.removeActivityPatternBinding("org.eclipse.pattern3");//$NON-NLS-1$
- assertTrue(listenerType == -1);
+ assertEquals(-1, listenerType);
// Add activity activity binding as parent
listenerType = 9;
fixedModelRegistry.addActivityRequirementBinding(
"org.eclipse.activity9", //$NON-NLS-1$
activity_to_listen.getId());
- assertTrue(listenerType == -1);
+ assertEquals(-1, listenerType);
// Remove activity activity binding as parent
listenerType = 9;
fixedModelRegistry.removeActivityRequirementBinding(
"org.eclipse.activity9", activity_to_listen.getId());//$NON-NLS-1$
- assertTrue(listenerType == -1);
+ assertEquals(-1, listenerType);
// Update activity name
listenerType = 7;
fixedModelRegistry.updateActivityName(activity_to_listen.getId(),
"name_change"); //$NON-NLS-1$
- assertTrue(listenerType == -1);
+ assertEquals(-1, listenerType);
// Update activity description
listenerType = 10;
fixedModelRegistry.updateActivityDescription(
activity_to_listen.getId(), "description_change"); //$NON-NLS-1$
- assertTrue(listenerType == -1);
+ assertEquals(-1, listenerType);
// check default enablement
listenerType = DEFAULT_ENABLED_CHANGED;
fixedModelRegistry.addDefaultEnabledActivity(activity_to_listen.getId());
- assertTrue(listenerType == -1);
- try {
- assertTrue(activity_to_listen.isDefaultEnabled());
- } catch (NotDefinedException e1) {
- fail(e1.getMessage());
- }
+ assertEquals(-1, listenerType);
+ assertTrue(activity_to_listen.isDefaultEnabled());
listenerType = DEFAULT_ENABLED_CHANGED;
fixedModelRegistry.removeDefaultEnabledActivity(activity_to_listen.getId());
- assertTrue(listenerType == -1);
- try {
- assertFalse(activity_to_listen.isDefaultEnabled());
- } catch (NotDefinedException e1) {
- fail(e1.getMessage());
- }
+ assertEquals(-1, listenerType);
+ assertFalse(activity_to_listen.isDefaultEnabled());
}
/**
* Test the category listener.
*/
@Test
- public void testCategoryListener() {
+ public void testCategoryListener() throws NotDefinedException {
final ICategory category_to_listen = activityManager
- .getCategory((String) activityManager.getDefinedCategoryIds()
- .toArray()[0]);
+ .getCategory(activityManager.getDefinedCategoryIds()
+ .toArray(String[]::new)[0]);
category_to_listen.addCategoryListener(categoryEvent -> {
switch (listenerType) {
case DEFINED_CHANGED:
@@ -375,57 +364,44 @@ public void testCategoryListener() {
listenerType = -1;
});
// Remove category, and change name
- try {
- fixedModelRegistry.removeCategory(category_to_listen.getId(),
+ fixedModelRegistry.removeCategory(category_to_listen.getId(),
category_to_listen.getName());
- } catch (NotDefinedException e) {
- e.printStackTrace(System.err);
- }
- assertTrue(listenerType == -1);
+ assertEquals(-1, listenerType);
// Add category
listenerType = 5;
fixedModelRegistry
.addCategory(category_to_listen.getId(), "Category 6"); //$NON-NLS-1$
- assertTrue(listenerType == -1);
+ assertEquals(-1, listenerType);
// Add category activity binding
listenerType = 8;
- fixedModelRegistry.addCategoryActivityBinding((String) activityManager
- .getDefinedActivityIds().toArray()[4], category_to_listen
+ fixedModelRegistry.addCategoryActivityBinding(activityManager
+ .getDefinedActivityIds().toArray(String[]::new)[4], category_to_listen
.getId());
- assertTrue(listenerType == -1);
+ assertEquals(-1, listenerType);
// Remove activity activity binding
listenerType = 8;
fixedModelRegistry.removeCategoryActivityBinding(
- (String) activityManager.getDefinedActivityIds().toArray()[4],
+ activityManager.getDefinedActivityIds().toArray(String[]::new)[4],
category_to_listen.getId());
// Change category description
listenerType = 10;
fixedModelRegistry.updateCategoryDescription(
category_to_listen.getId(), "description_change"); //$NON-NLS-1$
- try {
- assertTrue(category_to_listen.getDescription().equals(
- "description_change")); //$NON-NLS-1$
- } catch (NotDefinedException e) {
- e.printStackTrace(System.err);
- }
- assertTrue(listenerType == -1);
+ assertTrue(category_to_listen.getDescription().equals("description_change")); //$NON-NLS-1$
+ assertEquals(-1, listenerType);
// Change category name
listenerType = 7;
fixedModelRegistry.updateCategoryName(category_to_listen.getId(),
"name_change"); //$NON-NLS-1$
- try {
- assertTrue(category_to_listen.getName().equals("name_change")); //$NON-NLS-1$
- } catch (NotDefinedException e) {
- e.printStackTrace(System.err);
- }
- assertTrue(listenerType == -1);
+ assertTrue(category_to_listen.getName().equals("name_change")); //$NON-NLS-1$
+ assertEquals(-1, listenerType);
}
/**
* Tests to ensure dynamism with regard to the extension registry.
*/
@Test
- public void testDynamicRegistry() {
+ public void testDynamicRegistry() throws NotDefinedException {
IWorkbenchActivitySupport was = PlatformUI.getWorkbench()
.getActivitySupport();
IActivity activity = was.getActivityManager().getActivity(
@@ -437,7 +413,10 @@ public void testDynamicRegistry() {
// set to true when the activity/category in question have had an event
// fired
final boolean[] registryChanged = new boolean[] { false, false };
- activity.addActivityListener(activityEvent -> registryChanged[0] = true);
+ activity.addActivityListener(activityEvent -> {
+ System.err.println("activityChanged");
+ registryChanged[0] = true;
+ });
category.addCategoryListener(categoryEvent -> {
System.err.println("categoryChanged");
registryChanged[1] = true;
@@ -458,24 +437,12 @@ public void testDynamicRegistry() {
InputStream is = new ByteArrayInputStream(bytes);
IContributor contrib = ContributorFactoryOSGi.createContributor(TestPlugin.getDefault().getBundle());
ExtensionRegistry registry = (ExtensionRegistry) RegistryFactory.getRegistry();
- if (!registry.addContribution(is, contrib, false, null, null, registry.getTemporaryUserToken())) {
- throw new RuntimeException();
- }
+ assertTrue(registry.addContribution(is, contrib, false, null, null, registry.getTemporaryUserToken()));
// spin the event loop and ensure that the changes come down the pipe.
// 20 seconds should be more than enough
- long endTime = System.currentTimeMillis() + 20000;
- while (!(registryChanged[0] && registryChanged[1])
- && System.currentTimeMillis() < endTime) {
-
- Display display = PlatformUI.getWorkbench().getDisplay();
- if (display != null && !display.isDisposed()) {
- while (display.readAndDispatch()) {
- }
- }
- display.sleep();
-
- }
+ DisplayHelper.waitForCondition(PlatformUI.getWorkbench().getDisplay(), 20000,
+ () -> registryChanged[0] && registryChanged[1]);
assertTrue("Activity Listener not called", registryChanged[0]);
assertTrue("Category Listener not called", registryChanged[1]);
@@ -490,11 +457,7 @@ public void testDynamicRegistry() {
.pattern());
assertEquals("dynamic.activity", patternBinding.getActivityId());
- try {
- assertTrue(activity.isDefaultEnabled());
- } catch (NotDefinedException e) {
- fail(e.getMessage());
- }
+ assertTrue(activity.isDefaultEnabled());
Set requirementBindings = activity.getActivityRequirementBindings();
assertEquals(1, requirementBindings.size());
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/activities/ImagesTest.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/activities/ImagesTest.java
index cff850fec52..a970f5b798a 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/activities/ImagesTest.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/activities/ImagesTest.java
@@ -13,6 +13,11 @@
*******************************************************************************/
package org.eclipse.ui.tests.activities;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNotSame;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
+
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.swt.graphics.Image;
import org.eclipse.ui.PlatformUI;
@@ -22,25 +27,18 @@
import org.eclipse.ui.internal.IWorkbenchGraphicConstants;
import org.eclipse.ui.internal.WorkbenchImages;
import org.eclipse.ui.tests.harness.util.ImageTests;
-import org.eclipse.ui.tests.harness.util.UITestCase;
+import org.junit.After;
import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
/**
* @since 3.1
*/
-@RunWith(JUnit4.class)
-public class ImagesTest extends UITestCase {
+public class ImagesTest {
private Image defaultImage;
private Image image1;
private Image image2;
- public ImagesTest() {
- super(ImagesTest.class.getSimpleName());
- }
-
@Test
public void testActivityImages() {
IWorkbenchActivitySupport support = PlatformUI.getWorkbench().getActivitySupport();
@@ -95,9 +93,8 @@ public void testCategoryImages() {
}
- @Override
- protected void doTearDown() throws Exception {
- super.doTearDown();
+ @After
+ public void doTearDown() throws Exception {
if (defaultImage != null) {
defaultImage.dispose();
}
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/activities/MenusTest.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/activities/MenusTest.java
index 84e1f89eb2c..caaf856a567 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/activities/MenusTest.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/activities/MenusTest.java
@@ -14,6 +14,11 @@
package org.eclipse.ui.tests.activities;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
import java.util.Collections;
import java.util.Set;
@@ -24,23 +29,24 @@
import org.eclipse.ui.menus.IContributionRoot;
import org.eclipse.ui.menus.IMenuService;
import org.eclipse.ui.services.IServiceLocator;
+import org.eclipse.ui.tests.harness.util.CloseTestWindowsRule;
import org.eclipse.ui.tests.harness.util.UITestCase;
+import org.junit.After;
+import org.junit.Before;
import org.junit.Ignore;
+import org.junit.Rule;
import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
-/**
- * @since 3.3
- */
-@RunWith(JUnit4.class)
-public class MenusTest extends UITestCase {
+public class MenusTest {
private TestFactory factory;
private IWorkbenchWindow window;
private IMenuService service;
private Set enabledActivities;
+ @Rule
+ public CloseTestWindowsRule closeTestWindows = new CloseTestWindowsRule();
+
/**
* @since 3.3
*/
@@ -81,22 +87,17 @@ public CommandContributionItem getBarItemWithNoVisibilityClause() {
}
}
- public MenusTest() {
- super(MenusTest.class.getSimpleName());
- }
-
- @Override
- protected void doSetUp() throws Exception {
- super.doSetUp();
- window = openTestWindow();
+ @Before
+ public void doSetUp() throws Exception {
+ window = UITestCase.openTestWindow();
enabledActivities = window.getWorkbench().getActivitySupport()
.getActivityManager().getEnabledActivityIds();
service = window.getService(IMenuService.class);
assertNotNull(service);
}
- @Override
- protected void doTearDown() throws Exception {
+ @After
+ public void doTearDown() throws Exception {
window.getWorkbench().getActivitySupport().setEnabledActivityIds(
enabledActivities);
assertEquals(enabledActivities, window.getWorkbench()
@@ -105,7 +106,6 @@ protected void doTearDown() throws Exception {
if (factory != null) {
service.removeContributionFactory(factory);
}
- super.doTearDown();
}
@Test
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/activities/PersistanceTest.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/activities/PersistanceTest.java
index 83dc005ee4c..94e1890ac90 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/activities/PersistanceTest.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/activities/PersistanceTest.java
@@ -14,89 +14,77 @@
package org.eclipse.ui.tests.activities;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.activities.IActivity;
import org.eclipse.ui.activities.IActivityManager;
import org.eclipse.ui.activities.ICategory;
import org.eclipse.ui.activities.NotDefinedException;
-import org.eclipse.ui.tests.harness.util.UITestCase;
import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
/**
* Tests that the Persistance class is catching malformed registry entries.
*
* @since 3.1
*/
-@RunWith(JUnit4.class)
-public class PersistanceTest extends UITestCase {
-
- public PersistanceTest() {
- super(PersistanceTest.class.getSimpleName());
- }
+public class PersistanceTest {
@Test
- public void testCategoryPermutations() {
- try {
- IActivityManager manager = fWorkbench.getActivitySupport().getActivityManager();
- ICategory category = manager.getCategory("org.eclipse.ui.PT.C1"); // should not be defined - missing name
- assertFalse(category.isDefined());
+ public void testCategoryPermutations() throws NotDefinedException {
+ IActivityManager manager = PlatformUI.getWorkbench().getActivitySupport().getActivityManager();
+ ICategory category = manager.getCategory("org.eclipse.ui.PT.C1"); // should not be defined - missing name
+ assertFalse(category.isDefined());
- category = manager.getCategory("org.eclipse.ui.PT.C2"); // should be defined - missing desc
- assertTrue(category.isDefined());
- assertNotNull(category.getDescription());
+ category = manager.getCategory("org.eclipse.ui.PT.C2"); // should be defined - missing desc
+ assertTrue(category.isDefined());
+ assertNotNull(category.getDescription());
- for (String string : manager.getDefinedCategoryIds()) {
- if (manager.getCategory(string).getName().equals("org.eclipse.ui.PT.C3")) {
- fail("Found category that should not be.");
- }
+ for (String string : manager.getDefinedCategoryIds()) {
+ if (manager.getCategory(string).getName().equals("org.eclipse.ui.PT.C3")) {
+ fail("Found category that should not be.");
}
}
- catch (NotDefinedException e) {
- fail(e.getMessage());
- }
}
@Test
public void testActivityRequirementBindings() {
- IActivityManager manager = fWorkbench.getActivitySupport().getActivityManager();
+ IActivityManager manager = PlatformUI.getWorkbench().getActivitySupport().getActivityManager();
IActivity activity = manager.getActivity("org.eclipse.ui.PT.A2");
assertTrue(activity.getActivityRequirementBindings().isEmpty());
}
@Test
public void testActivityPatternBindings() {
- IActivityManager manager = fWorkbench.getActivitySupport().getActivityManager();
+ IActivityManager manager = PlatformUI.getWorkbench().getActivitySupport().getActivityManager();
IActivity activity = manager.getActivity("org.eclipse.ui.PT.A2");
assertTrue(activity.getActivityPatternBindings().isEmpty());
}
@Test
public void testCategoryActivityBindings() {
- IActivityManager manager = fWorkbench.getActivitySupport().getActivityManager();
+ IActivityManager manager = PlatformUI.getWorkbench().getActivitySupport().getActivityManager();
ICategory category = manager.getCategory("org.eclipse.ui.PT.C2");
assertTrue(category.getCategoryActivityBindings().isEmpty());
}
@Test
- public void testActivityPermutations() {
- try {
- IActivityManager manager = fWorkbench.getActivitySupport().getActivityManager();
- IActivity activity = manager.getActivity("org.eclipse.ui.PT.A1"); // should not be defined - missing name
- assertFalse(activity.isDefined());
+ public void testActivityPermutations() throws NotDefinedException {
+ IActivityManager manager = PlatformUI.getWorkbench().getActivitySupport().getActivityManager();
+ IActivity activity = manager.getActivity("org.eclipse.ui.PT.A1"); // should not be defined - missing name
+ assertFalse(activity.isDefined());
- activity = manager.getActivity("org.eclipse.ui.PT.A2"); // should be defined - missing desc
- assertTrue(activity.isDefined());
- assertNotNull(activity.getDescription());
+ activity = manager.getActivity("org.eclipse.ui.PT.A2"); // should be defined - missing desc
+ assertTrue(activity.isDefined());
+ assertNotNull(activity.getDescription());
- for (String string : manager.getDefinedActivityIds()) {
- if (manager.getActivity(string).getName().equals("org.eclipse.ui.PT.A3")) {
- fail("Found activity that should not be.");
- }
+ for (String string : manager.getDefinedActivityIds()) {
+ if (manager.getActivity(string).getName().equals("org.eclipse.ui.PT.A3")) {
+ fail("Found activity that should not be.");
}
}
- catch (NotDefinedException e) {
- fail(e.getMessage());
- }
}
}
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/activities/StaticTest.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/activities/StaticTest.java
index 04b32ae33ba..1908e195172 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/activities/StaticTest.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/activities/StaticTest.java
@@ -13,6 +13,8 @@
*******************************************************************************/
package org.eclipse.ui.tests.activities;
+import static org.junit.Assert.assertTrue;
+
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
@@ -26,18 +28,14 @@
import org.eclipse.ui.activities.NotDefinedException;
import org.eclipse.ui.internal.activities.ActivityRequirementBinding;
import org.eclipse.ui.internal.activities.CategoryActivityBinding;
-import org.eclipse.ui.tests.harness.util.UITestCase;
import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
/**
*
* The static test reads activity definitions from the plugin.xml (in
* org.eclipse.ui.tests) file and valides its content.
*/
-@RunWith(JUnit4.class)
-public class StaticTest extends UITestCase {
+public class StaticTest {
private final IActivityManager activityManager;
private List categoryIds;
@@ -47,7 +45,6 @@ public class StaticTest extends UITestCase {
private List patternActivityIds;
public StaticTest() {
- super(StaticTest.class.getSimpleName());
activityManager = PlatformUI.getWorkbench().getActivitySupport()
.getActivityManager();
populateIds();
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/adaptable/MarkerImageProviderTest.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/adaptable/MarkerImageProviderTest.java
index bdc2c813a90..ac27d63bdd1 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/adaptable/MarkerImageProviderTest.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/adaptable/MarkerImageProviderTest.java
@@ -13,40 +13,32 @@
*******************************************************************************/
package org.eclipse.ui.tests.adaptable;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
import org.eclipse.core.resources.IMarker;
import org.eclipse.core.resources.IWorkspace;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.ui.model.IWorkbenchAdapter;
-import org.eclipse.ui.tests.harness.util.UITestCase;
import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
/**
* Tests the markerImageProviders extension point.
*/
-@RunWith(JUnit4.class)
-public class MarkerImageProviderTest extends UITestCase {
-
- public MarkerImageProviderTest() {
- super(MarkerImageProviderTest.class.getSimpleName());
- }
+public class MarkerImageProviderTest {
/**
* Tests the static form of the extension, where just a file path is given.
+ *
+ * @throws CoreException
*/
@Test
- public void testStatic() {
+ public void testStatic() throws CoreException {
IWorkspace workspace = ResourcesPlugin.getWorkspace();
- IMarker marker = null;
- try {
- marker = workspace.getRoot().createMarker(
+ IMarker marker = workspace.getRoot().createMarker(
"org.eclipse.ui.tests.testmarker"); //$NON-NLS-1$
- } catch (CoreException e) {
- fail(e.getMessage());
- }
IWorkbenchAdapter adapter = marker.getAdapter(IWorkbenchAdapter.class);
ImageDescriptor imageDesc = adapter.getImageDescriptor(marker);
assertNotNull(imageDesc);
@@ -54,18 +46,16 @@ public void testStatic() {
}
/**
- * Tests the dynamic form of the extension, where an IMarkerImageProvider class is given.
+ * Tests the dynamic form of the extension, where an IMarkerImageProvider class
+ * is given.
+ *
+ * @throws CoreException
*/
@Test
- public void testDynamic() {
+ public void testDynamic() throws CoreException {
IWorkspace workspace = ResourcesPlugin.getWorkspace();
- IMarker marker = null;
- try {
- marker = workspace.getRoot().createMarker(
+ IMarker marker = workspace.getRoot().createMarker(
"org.eclipse.ui.tests.testmarker2"); //$NON-NLS-1$
- } catch (CoreException e) {
- fail(e.getMessage());
- }
IWorkbenchAdapter adapter = marker.getAdapter(IWorkbenchAdapter.class);
ImageDescriptor imageDesc = adapter.getImageDescriptor(marker);
assertNotNull(imageDesc);
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/api/ApiTestSuite.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/api/ApiTestSuite.java
index abc15b31936..661ea136d4b 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/api/ApiTestSuite.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/api/ApiTestSuite.java
@@ -21,6 +21,7 @@
import org.eclipse.ui.tests.api.workbenchpart.OverriddenTitleTest;
import org.eclipse.ui.tests.api.workbenchpart.RawIViewPartTest;
import org.eclipse.ui.tests.api.workbenchpart.ViewPartTitleTest;
+import org.eclipse.ui.tests.e4.CloseAllHandlerTest;
import org.eclipse.ui.tests.ide.api.FileEditorInputTest;
import org.eclipse.ui.tests.ide.api.IDETest;
import org.eclipse.ui.tests.ide.api.IDETest2;
@@ -83,7 +84,8 @@
SaveablesListTest.class,
PerspectiveExtensionReaderTest.class,
ModeledPageLayoutTest.class,
- WorkbenchPluginTest.class
+ WorkbenchPluginTest.class,
+ CloseAllHandlerTest.class
})
public class ApiTestSuite {
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/api/BadElementFactory.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/api/BadElementFactory.java
index 48d342c3574..d6db6832cd3 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/api/BadElementFactory.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/api/BadElementFactory.java
@@ -72,7 +72,7 @@ public String getFactoryId() {
public void saveState(IMemento memento) {
if (shouldSaveFail) {
saveAttemptedWhileShouldFail = true;
- throw new RuntimeException();
+ throw new TestException();
}
}
@@ -83,7 +83,7 @@ public void saveState(IMemento memento) {
public IAdaptable createElement(IMemento memento) {
if (shouldFailOnCreateElement) {
elementCreationAttemptedWhileShouldFail = true;
- throw new RuntimeException();
+ throw new TestException();
}
return new BadElementInstance();
}
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/api/EditorIconTest.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/api/EditorIconTest.java
index 5ee6e0a245e..92a10bf67fa 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/api/EditorIconTest.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/api/EditorIconTest.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
+ * Copyright (c) 2004, 2024 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -14,17 +14,18 @@
package org.eclipse.ui.tests.api;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+
import java.net.URL;
import org.eclipse.core.runtime.FileLocator;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.resource.ResourceLocator;
import org.eclipse.swt.graphics.Image;
+import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.tests.harness.util.ImageTests;
-import org.eclipse.ui.tests.harness.util.UITestCase;
import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
/**
* Tests to ensure that various icon scenarios work. These are tested on editors
@@ -33,12 +34,7 @@
*
* @since 3.0
*/
-@RunWith(JUnit4.class)
-public class EditorIconTest extends UITestCase {
-
- public EditorIconTest() {
- super(EditorIconTest.class.getSimpleName());
- }
+public class EditorIconTest {
@Test
public void testDependantBundleIcon() {
@@ -46,7 +42,7 @@ public void testDependantBundleIcon() {
Image i2 = null;
try {
- i1 = fWorkbench.getEditorRegistry().getDefaultEditor(
+ i1 = PlatformUI.getWorkbench().getEditorRegistry().getDefaultEditor(
"foo.icontest1").getImageDescriptor().createImage();
i2 = ResourceLocator.imageDescriptorFromBundle("org.eclipse.ui", "icons/full/obj16/font.png")
.orElseThrow(AssertionError::new).createImage();
@@ -67,10 +63,11 @@ public void testNonDependantBundleIcon() {
Image i1 = null;
Image i2 = null;
try {
- i1 = fWorkbench.getEditorRegistry().getDefaultEditor(
+ i1 = PlatformUI.getWorkbench().getEditorRegistry()
+ .getDefaultEditor(
"foo.icontest2").getImageDescriptor().createImage();
i2 = ResourceLocator.imageDescriptorFromBundle(
- "org.eclipse.jdt.ui", "icons/full/obj16/class_obj.png") // layer breaker!
+ "org.eclipse.debug.ui", "icons/full/obj16/file_obj.png") // layer breaker!
.orElseThrow(AssertionError::new).createImage();
ImageTests.assertEquals(i1, i2);
}
@@ -90,7 +87,7 @@ public void testBadIcon() {
Image i2 = null;
try {
- i1 = fWorkbench.getEditorRegistry().getDefaultEditor(
+ i1 = PlatformUI.getWorkbench().getEditorRegistry().getDefaultEditor(
"foo.icontest3").getImageDescriptor().createImage();
i2 = ResourceLocator.imageDescriptorFromBundle("org.eclipse.ui", "icons/full/obj16/file_obj.png")
.orElseThrow(AssertionError::new).createImage();
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/api/IActionBarsTest.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/api/IActionBarsTest.java
index 0e140470dd3..5f448ff67d7 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/api/IActionBarsTest.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/api/IActionBarsTest.java
@@ -13,6 +13,13 @@
*******************************************************************************/
package org.eclipse.ui.tests.api;
+import static org.eclipse.ui.tests.harness.util.UITestCase.openTestWindow;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
import org.eclipse.core.commands.NotEnabledException;
import org.eclipse.core.commands.NotHandledException;
import org.eclipse.jface.action.Action;
@@ -28,20 +35,22 @@
import org.eclipse.ui.handlers.IHandlerService;
import org.eclipse.ui.internal.handlers.IActionCommandMappingService;
import org.eclipse.ui.tests.harness.util.ActionUtil;
-import org.eclipse.ui.tests.harness.util.UITestCase;
+import org.eclipse.ui.tests.harness.util.CloseTestWindowsRule;
+import org.junit.Before;
+import org.junit.Rule;
import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
/**
* Test the lifecycle of an action delegate.
*/
-@RunWith(JUnit4.class)
-public class IActionBarsTest extends UITestCase {
+public class IActionBarsTest {
+
+ private IWorkbenchWindow fWindow;
- protected IWorkbenchWindow fWindow;
+ private IWorkbenchPage fPage;
- protected IWorkbenchPage fPage;
+ @Rule
+ public final CloseTestWindowsRule closeTestWindows = new CloseTestWindowsRule();
private static class MockAction extends Action {
public boolean hasRun = false;
@@ -56,16 +65,9 @@ public void run() {
}
}
- /**
- * Constructor for IActionDelegateTest
- */
- public IActionBarsTest() {
- super(IActionBarsTest.class.getSimpleName());
- }
- @Override
- protected void doSetUp() throws Exception {
- super.doSetUp();
+ @Before
+ public void doSetUp() throws Exception {
fWindow = openTestWindow();
fPage = fWindow.getActivePage();
}
@@ -168,7 +170,7 @@ public void testSetGlobalActionHandler() throws Throwable {
runMatchingCommand(fWindow, ActionFactory.CUT.getId());
runMatchingCommand(fWindow, ActionFactory.UNDO.getId());
- ActionUtil.runActionUsingPath(this, fWindow,
+ ActionUtil.runActionUsingPath(fWindow,
IWorkbenchActionConstants.M_FILE + '/' + IWorkbenchActionConstants.QUIT);
assertTrue(cut.hasRun);
assertTrue(!copy.hasRun);
@@ -187,7 +189,7 @@ public void testSetGlobalActionHandler() throws Throwable {
cut.hasRun = copy.hasRun = undo.hasRun = quit.hasRun = false;
runMatchingCommand(fWindow, ActionFactory.CUT.getId());
runMatchingCommand(fWindow, ActionFactory.UNDO.getId());
- ActionUtil.runActionUsingPath(this, fWindow,
+ ActionUtil.runActionUsingPath(fWindow,
IWorkbenchActionConstants.M_FILE + '/' + IWorkbenchActionConstants.QUIT);
assertTrue(!cut.hasRun);
assertTrue(!copy.hasRun);
@@ -200,7 +202,7 @@ public void testSetGlobalActionHandler() throws Throwable {
cut.hasRun = copy.hasRun = undo.hasRun = quit.hasRun = false;
runMatchingCommand(fWindow, ActionFactory.CUT.getId());
runMatchingCommand(fWindow, ActionFactory.UNDO.getId());
- ActionUtil.runActionUsingPath(this, fWindow,
+ ActionUtil.runActionUsingPath(fWindow,
IWorkbenchActionConstants.M_FILE + '/' + IWorkbenchActionConstants.QUIT);
assertTrue(cut.hasRun);
assertTrue(!copy.hasRun);
@@ -219,7 +221,7 @@ private void runMatchingCommand(IWorkbenchWindow window, String actionId) {
// this is not a failure, just a condition to be checked by
// the test
} catch (Exception e) {
- fail("Failed to run " + commandId, e);
+ fail("Failed to run " + commandId);
}
}
}
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/api/IActionDelegateTest.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/api/IActionDelegateTest.java
index 853c3cc5ffc..e932ab85c4f 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/api/IActionDelegateTest.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/api/IActionDelegateTest.java
@@ -13,33 +13,35 @@
*******************************************************************************/
package org.eclipse.ui.tests.api;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
import java.util.Arrays;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.tests.harness.util.CloseTestWindowsRule;
import org.eclipse.ui.tests.harness.util.UITestCase;
+import org.junit.Before;
+import org.junit.Rule;
import org.junit.Test;
/**
* Test the lifecycle of an action delegate.
*/
-public abstract class IActionDelegateTest extends UITestCase {
+public abstract class IActionDelegateTest {
protected IWorkbenchWindow fWindow;
protected IWorkbenchPage fPage;
- /**
- * Constructor for IActionDelegateTest
- */
- public IActionDelegateTest(String testName) {
- super(testName);
- }
+ @Rule
+ public final CloseTestWindowsRule closeTestWindows = new CloseTestWindowsRule();
- @Override
- protected void doSetUp() throws Exception {
- super.doSetUp();
- fWindow = openTestWindow();
+ @Before
+ public void doSetUp() throws Exception {
+ fWindow = UITestCase.openTestWindow();
fPage = fWindow.getActivePage();
}
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/api/IAggregateWorkingSetTest.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/api/IAggregateWorkingSetTest.java
index cc90684354d..aa2c0e90864 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/api/IAggregateWorkingSetTest.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/api/IAggregateWorkingSetTest.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2017 IBM Corporation and others.
+ * Copyright (c) 2000, 2024 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -34,7 +34,6 @@
import org.eclipse.ui.internal.AbstractWorkingSetManager;
import org.eclipse.ui.internal.AggregateWorkingSet;
import org.eclipse.ui.internal.IWorkbenchConstants;
-import org.eclipse.ui.tests.harness.util.ArrayUtil;
import org.eclipse.ui.tests.harness.util.UITestCase;
import org.junit.Ignore;
import org.junit.Test;
@@ -128,9 +127,7 @@ public void testGetElemets() throws Throwable {
//
//unexpected
- assertTrue(ArrayUtil.equals(
- new IAdaptable[] {},
- fWorkingSet.getElements()));
+ assertArrayEquals(new IAdaptable[] {}, fWorkingSet.getElements());
}
/**
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/api/IEditorActionDelegateTest.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/api/IEditorActionDelegateTest.java
index d5d841e8965..c3060b4ff8a 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/api/IEditorActionDelegateTest.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/api/IEditorActionDelegateTest.java
@@ -13,6 +13,9 @@
*******************************************************************************/
package org.eclipse.ui.tests.api;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
import org.eclipse.jface.action.IMenuManager;
@@ -21,26 +24,16 @@
import org.eclipse.ui.tests.harness.util.ActionUtil;
import org.eclipse.ui.tests.harness.util.FileUtil;
import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
/**
* Tests the lifecycle for an editor action delegate.
*/
-@RunWith(JUnit4.class)
public class IEditorActionDelegateTest extends IActionDelegateTest {
public static String EDITOR_ID = "org.eclipse.ui.tests.api.IEditorActionDelegateTest";
private MockEditorPart editor;
- /**
- * Constructor for IWorkbenchWindowActionDelegateTest
- */
- public IEditorActionDelegateTest() {
- super(IEditorActionDelegateTest.class.getSimpleName());
- }
-
@Test
public void testSetActiveEditor() throws Throwable {
// When an action delegate is run the
@@ -69,7 +62,7 @@ protected void runAction(Object widget) throws Throwable {
MockEditorActionBarContributor contributor = (MockEditorActionBarContributor) editor
.getEditorSite().getActionBarContributor();
IMenuManager mgr = contributor.getActionBars().getMenuManager();
- ActionUtil.runActionWithLabel(this, mgr, "Mock Action");
+ ActionUtil.runActionWithLabel(mgr, "Mock Action");
}
@Override
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/api/IEditorRegistryTest.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/api/IEditorRegistryTest.java
index 6733337ba5a..62e6df4b6e6 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/api/IEditorRegistryTest.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/api/IEditorRegistryTest.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2022 IBM Corporation and others.
+ * Copyright (c) 2000, 2024 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -123,7 +123,7 @@ public void testGetEditors() throws Throwable {
assertEquals(editors[0].getId(), map[1]);
editors2 = fReg.getEditors(FileUtil.createFile(map[0], proj)
.getName());
- assertEquals(ArrayUtil.equals(editors, editors2), true);
+ assertArrayEquals(editors, editors2);
}
// there is no matching editor
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/api/IViewActionDelegateTest.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/api/IViewActionDelegateTest.java
index d5bcbb517f2..5cfcaeac7a4 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/api/IViewActionDelegateTest.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/api/IViewActionDelegateTest.java
@@ -13,27 +13,20 @@
*******************************************************************************/
package org.eclipse.ui.tests.api;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.ui.tests.harness.util.ActionUtil;
import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
/**
* Tests the lifecycle for a view action delegate.
*/
-@RunWith(JUnit4.class)
public class IViewActionDelegateTest extends IActionDelegateTest {
public static String TEST_VIEW_ID = "org.eclipse.ui.tests.api.IViewActionDelegateTest";
- /**
- * Constructor for IWorkbenchWindowActionDelegateTest
- */
- public IViewActionDelegateTest() {
- super(IViewActionDelegateTest.class.getSimpleName());
- }
-
@Test
public void testInit() throws Throwable {
// When an action delegate is run the
@@ -59,7 +52,7 @@ protected Object createActionWidget() throws Throwable {
protected void runAction(Object widget) throws Throwable {
MockViewPart view = (MockViewPart) widget;
IMenuManager mgr = view.getViewSite().getActionBars().getMenuManager();
- ActionUtil.runActionWithLabel(this, mgr, "Mock Action");
+ ActionUtil.runActionWithLabel(mgr, "Mock Action");
}
@Override
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/api/IWorkbenchPageTest.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/api/IWorkbenchPageTest.java
index e2f7224ec80..a9cfd33280e 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/api/IWorkbenchPageTest.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/api/IWorkbenchPageTest.java
@@ -169,11 +169,11 @@ protected void doSetUp() throws Exception {
@Override
protected void doTearDown() throws Exception {
Platform.removeLogListener(openAndHideListener);
+ super.doTearDown();
if (proj != null) {
FileUtil.deleteProject(proj);
proj = null;
}
- super.doTearDown();
}
/**
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/api/IWorkbenchWindowActionDelegateTest.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/api/IWorkbenchWindowActionDelegateTest.java
index 5c6ba6bbb0e..f82ca14b3e5 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/api/IWorkbenchWindowActionDelegateTest.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/api/IWorkbenchWindowActionDelegateTest.java
@@ -13,6 +13,11 @@
*******************************************************************************/
package org.eclipse.ui.tests.api;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
import java.util.Arrays;
import org.eclipse.ui.IActionDelegate2;
@@ -20,22 +25,12 @@
import org.eclipse.ui.tests.harness.util.ActionUtil;
import org.junit.Ignore;
import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
/**
* Tests the lifecycle for a window action delegate.
*/
-@RunWith(JUnit4.class)
public class IWorkbenchWindowActionDelegateTest extends IActionDelegateTest {
- /**
- * Constructor for IWorkbenchWindowActionDelegateTest
- */
- public IWorkbenchWindowActionDelegateTest() {
- super(IWorkbenchWindowActionDelegateTest.class.getSimpleName());
- }
-
@Test
@Override
public void testRun() throws Throwable {
@@ -123,7 +118,7 @@ protected Object createActionWidget() throws Throwable {
@Override
protected void runAction(Object widget) throws Throwable {
- ActionUtil.runActionWithLabel(this, fWindow, "Mock Action");
+ ActionUtil.runActionWithLabel(fWindow, "Mock Action");
}
@Override
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/api/IWorkingSetManagerTest.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/api/IWorkingSetManagerTest.java
index e251eaf394a..ed953d6b108 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/api/IWorkingSetManagerTest.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/api/IWorkingSetManagerTest.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2017 IBM Corporation and others.
+ * Copyright (c) 2000, 2024 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -14,6 +14,10 @@
*******************************************************************************/
package org.eclipse.ui.tests.api;
+import static org.junit.Assert.assertArrayEquals;
+
+import java.util.Arrays;
+
import org.eclipse.core.resources.IWorkspace;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.IAdaptable;
@@ -161,22 +165,19 @@ public void testAddPropertyChangeListener() throws Throwable {
public void testAddRecentWorkingSet() throws Throwable {
fWorkingSetManager.addRecentWorkingSet(fWorkingSet);
fWorkingSetManager.addWorkingSet(fWorkingSet);
- assertTrue(ArrayUtil.equals(new IWorkingSet[] { fWorkingSet },
- fWorkingSetManager.getRecentWorkingSets()));
+ assertArrayEquals(new IWorkingSet[] { fWorkingSet }, fWorkingSetManager.getRecentWorkingSets());
IWorkingSet workingSet2 = fWorkingSetManager.createWorkingSet(
WORKING_SET_NAME_2, new IAdaptable[] { fWorkspace.getRoot() });
fWorkingSetManager.addRecentWorkingSet(workingSet2);
fWorkingSetManager.addWorkingSet(workingSet2);
- assertTrue(ArrayUtil.equals(new IWorkingSet[] { workingSet2,
- fWorkingSet }, fWorkingSetManager.getRecentWorkingSets()));
+ assertArrayEquals(new IWorkingSet[] { workingSet2, fWorkingSet }, fWorkingSetManager.getRecentWorkingSets());
}
@Test
public void testAddWorkingSet() throws Throwable {
fWorkingSetManager.addWorkingSet(fWorkingSet);
- assertTrue(ArrayUtil.equals(new IWorkingSet[] { fWorkingSet },
- fWorkingSetManager.getWorkingSets()));
+ assertArrayEquals(new IWorkingSet[] { fWorkingSet }, fWorkingSetManager.getWorkingSets());
boolean exceptionThrown = false;
try {
@@ -185,8 +186,7 @@ public void testAddWorkingSet() throws Throwable {
exceptionThrown = true;
}
assertTrue(exceptionThrown);
- assertTrue(ArrayUtil.equals(new IWorkingSet[] { fWorkingSet },
- fWorkingSetManager.getWorkingSets()));
+ assertArrayEquals(new IWorkingSet[] { fWorkingSet }, fWorkingSetManager.getWorkingSets());
}
@Test
@@ -194,14 +194,12 @@ public void testCreateWorkingSet() throws Throwable {
IWorkingSet workingSet2 = fWorkingSetManager.createWorkingSet(
WORKING_SET_NAME_2, new IAdaptable[] { fWorkspace.getRoot() });
assertEquals(WORKING_SET_NAME_2, workingSet2.getName());
- assertTrue(ArrayUtil.equals(new IAdaptable[] { fWorkspace.getRoot() },
- workingSet2.getElements()));
+ assertArrayEquals(new IAdaptable[] { fWorkspace.getRoot() }, workingSet2.getElements());
workingSet2 = fWorkingSetManager.createWorkingSet("",
new IAdaptable[] {});
assertEquals("", workingSet2.getName());
- assertTrue(ArrayUtil.equals(new IAdaptable[] {}, workingSet2
- .getElements()));
+ assertArrayEquals(new IAdaptable[] {}, workingSet2.getElements());
}
@Test
@@ -213,8 +211,7 @@ public void testCreateWorkingSetFromMemento() throws Throwable {
IWorkingSet restoredWorkingSet2 = fWorkingSetManager
.createWorkingSet(memento);
assertEquals(WORKING_SET_NAME_2, restoredWorkingSet2.getName());
- assertTrue(ArrayUtil.equals(new IAdaptable[] { fWorkspace.getRoot() },
- restoredWorkingSet2.getElements()));
+ assertArrayEquals(new IAdaptable[] { fWorkspace.getRoot() }, restoredWorkingSet2.getElements());
}
@Test
@@ -232,19 +229,16 @@ public void testGetRecentWorkingSets() throws Throwable {
fWorkingSetManager.addRecentWorkingSet(fWorkingSet);
fWorkingSetManager.addWorkingSet(fWorkingSet);
- assertTrue(ArrayUtil.equals(new IWorkingSet[] { fWorkingSet },
- fWorkingSetManager.getRecentWorkingSets()));
+ assertArrayEquals(new IWorkingSet[] { fWorkingSet }, fWorkingSetManager.getRecentWorkingSets());
IWorkingSet workingSet2 = fWorkingSetManager.createWorkingSet(
WORKING_SET_NAME_2, new IAdaptable[] { fWorkspace.getRoot() });
fWorkingSetManager.addRecentWorkingSet(workingSet2);
fWorkingSetManager.addWorkingSet(workingSet2);
- assertTrue(ArrayUtil.equals(new IWorkingSet[] { workingSet2,
- fWorkingSet }, fWorkingSetManager.getRecentWorkingSets()));
+ assertArrayEquals(new IWorkingSet[] { workingSet2, fWorkingSet }, fWorkingSetManager.getRecentWorkingSets());
fWorkingSetManager.removeWorkingSet(workingSet2);
- assertTrue(ArrayUtil.equals(new IWorkingSet[] { fWorkingSet },
- fWorkingSetManager.getRecentWorkingSets()));
+ assertArrayEquals(new IWorkingSet[] { fWorkingSet }, fWorkingSetManager.getRecentWorkingSets());
}
@Test
@@ -261,12 +255,12 @@ public void testRecentWorkingSetsLength() throws Throwable {
fWorkingSetManager.addWorkingSet(workingSet);
workingSets[9 - i] = workingSet;
}
- assertTrue(ArrayUtil.equals(workingSets, fWorkingSetManager.getRecentWorkingSets()));
+ assertArrayEquals(workingSets, fWorkingSetManager.getRecentWorkingSets());
fWorkingSetManager.setRecentWorkingSetsLength(7);
IWorkingSet[] workingSets7 = new IWorkingSet[7];
System.arraycopy(workingSets, 0, workingSets7, 0, 7);
- assertTrue(ArrayUtil.equals(workingSets7, fWorkingSetManager.getRecentWorkingSets()));
+ assertArrayEquals(workingSets7, fWorkingSetManager.getRecentWorkingSets());
fWorkingSetManager.setRecentWorkingSetsLength(9);
IWorkingSet[] workingSets9 = new IWorkingSet[9];
@@ -280,7 +274,7 @@ public void testRecentWorkingSetsLength() throws Throwable {
workingSets9[8 - i] = workingSet;
}
- assertTrue(ArrayUtil.equals(workingSets9, fWorkingSetManager.getRecentWorkingSets()));
+ assertArrayEquals(workingSets9, fWorkingSetManager.getRecentWorkingSets());
} finally {
if (oldMRULength > 0) {
fWorkingSetManager.setRecentWorkingSetsLength(oldMRULength);
@@ -302,20 +296,17 @@ public void testGetWorkingSet() throws Throwable {
@Test
public void testGetWorkingSets() throws Throwable {
- assertTrue(ArrayUtil.equals(new IWorkingSet[] {}, fWorkingSetManager
- .getWorkingSets()));
+ assertArrayEquals(new IWorkingSet[] {}, fWorkingSetManager.getWorkingSets());
fWorkingSetManager.addWorkingSet(fWorkingSet);
- assertTrue(ArrayUtil.equals(new IWorkingSet[] { fWorkingSet },
- fWorkingSetManager.getWorkingSets()));
+ assertArrayEquals(new IWorkingSet[] { fWorkingSet }, fWorkingSetManager.getWorkingSets());
try {
fWorkingSetManager.addWorkingSet(fWorkingSet);
fail("Added the same set twice");
} catch (RuntimeException exception) {
}
- assertTrue(ArrayUtil.equals(new IWorkingSet[] { fWorkingSet },
- fWorkingSetManager.getWorkingSets()));
+ assertArrayEquals(new IWorkingSet[] { fWorkingSet }, fWorkingSetManager.getWorkingSets());
IWorkingSet workingSet2 = fWorkingSetManager.createWorkingSet(
WORKING_SET_NAME_2, new IAdaptable[] { fWorkspace.getRoot() });
@@ -369,16 +360,14 @@ public void testRemovePropertyChangeListener() throws Throwable {
@Test
public void testRemoveWorkingSet() throws Throwable {
fWorkingSetManager.removeWorkingSet(fWorkingSet);
- assertTrue(ArrayUtil.equals(new IWorkingSet[] {}, fWorkingSetManager
- .getWorkingSets()));
+ assertArrayEquals(new IWorkingSet[] {}, fWorkingSetManager.getWorkingSets());
fWorkingSetManager.addWorkingSet(fWorkingSet);
IWorkingSet workingSet2 = fWorkingSetManager.createWorkingSet(
WORKING_SET_NAME_2, new IAdaptable[] { fWorkspace.getRoot() });
fWorkingSetManager.addWorkingSet(workingSet2);
fWorkingSetManager.removeWorkingSet(fWorkingSet);
- assertTrue(ArrayUtil.equals(new IWorkingSet[] { workingSet2 },
- fWorkingSetManager.getWorkingSets()));
+ assertArrayEquals(new IWorkingSet[] { workingSet2 }, fWorkingSetManager.getWorkingSets());
}
@Test
@@ -391,9 +380,7 @@ public void testRemoveWorkingSetAfterRename() throws Throwable {
String origName=fWorkingSet.getName();
/* check that workingSetManager contains "fWorkingSet"*/
- assertTrue(ArrayUtil.equals(
- new IWorkingSet[] { fWorkingSet },
- workingSetManager.getWorkingSets()));
+ assertArrayEquals(new IWorkingSet[] { fWorkingSet }, workingSetManager.getWorkingSets());
fWorkingSet.setName(" ");
assertEquals(" ", fWorkingSet.getName());
@@ -402,7 +389,7 @@ public void testRemoveWorkingSetAfterRename() throws Throwable {
workingSetManager.removeWorkingSet(fWorkingSet);
/* check that "fWorkingSet" was removed after rename*/
- if(!ArrayUtil.equals(new IWorkingSet[] {},
+ if (!Arrays.equals(new IWorkingSet[] {},
workingSetManager.getWorkingSets())){
/*Test Failure, report after restoring state*/
fWorkingSet.setName(origName);
@@ -419,7 +406,7 @@ public void testListenerSafety() throws Throwable {
final boolean[] result = new boolean[1];
// add a bogus listener that dies unexpectedly
IPropertyChangeListener badListener = event -> {
- throw new RuntimeException();
+ throw new TestException();
};
IPropertyChangeListener goodListener = event -> result[0] = true;
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/api/IWorkingSetTest.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/api/IWorkingSetTest.java
index e64552630ed..88751d432ac 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/api/IWorkingSetTest.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/api/IWorkingSetTest.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2017 IBM Corporation and others.
+ * Copyright (c) 2000, 2024 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -13,6 +13,10 @@
*******************************************************************************/
package org.eclipse.ui.tests.api;
+import static org.junit.Assert.assertArrayEquals;
+
+import java.util.Arrays;
+
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IWorkspace;
@@ -24,7 +28,6 @@
import org.eclipse.ui.IWorkingSetManager;
import org.eclipse.ui.XMLMemento;
import org.eclipse.ui.internal.WorkingSet;
-import org.eclipse.ui.tests.harness.util.ArrayUtil;
import org.eclipse.ui.tests.harness.util.FileUtil;
import org.eclipse.ui.tests.harness.util.UITestCase;
import org.eclipse.ui.tests.menus.ObjectContributionClasses.IA;
@@ -101,7 +104,7 @@ public void testSetElements() throws Throwable {
IFile f1 = FileUtil.createFile("f1.txt", p1);
IAdaptable[] elements = new IAdaptable[] { f1, p1 };
fWorkingSet.setElements(elements);
- assertTrue(ArrayUtil.equals(elements, fWorkingSet.getElements()));
+ assertArrayEquals(elements, fWorkingSet.getElements());
fWorkingSet.setElements(new IAdaptable[] { f1 });
assertEquals(f1, fWorkingSet.getElements()[0]);
@@ -160,17 +163,16 @@ public void testNoDuplicateWorkingSetName() throws Throwable {
/*
* check that initially workingSetManager contains "fWorkingSet"
*/
- assertTrue(ArrayUtil.equals(new IWorkingSet[] { fWorkingSet },
- workingSetManager.getWorkingSets()));
+ assertArrayEquals(new IWorkingSet[] { fWorkingSet }, workingSetManager.getWorkingSets());
IWorkingSet wSet = workingSetManager.createWorkingSet(
WORKING_SET_NAME_2, new IAdaptable[] {});
workingSetManager.addWorkingSet(wSet);
/* check that workingSetManager contains "fWorkingSet" and wSet */
- assertTrue(ArrayUtil.equals(new IWorkingSet[] { fWorkingSet, wSet },
+ assertTrue(Arrays.equals(new IWorkingSet[] { fWorkingSet, wSet },
workingSetManager.getWorkingSets())
- || ArrayUtil.equals(new IWorkingSet[] { wSet, fWorkingSet },
+ || Arrays.equals(new IWorkingSet[] { wSet, fWorkingSet },
workingSetManager.getWorkingSets()));
String sameName = fWorkingSet.getName();
@@ -198,8 +200,7 @@ public void testNoDuplicateWorkingSetNamesDifferentLabels()
/*
* check that initially workingSetManager contains "fWorkingSet"
*/
- assertTrue(ArrayUtil.equals(new IWorkingSet[] { fWorkingSet },
- workingSetManager.getWorkingSets()));
+ assertArrayEquals(new IWorkingSet[] { fWorkingSet }, workingSetManager.getWorkingSets());
String sameName = fWorkingSet.getName();
IWorkingSet wSet = workingSetManager.createWorkingSet(sameName,
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/api/SelectionListenerFactoryTest.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/api/SelectionListenerFactoryTest.java
index db67043a1eb..2e68d847d09 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/api/SelectionListenerFactoryTest.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/api/SelectionListenerFactoryTest.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2019 Remain Software and others.
+ * Copyright (c) 2019, 2024 Remain Software and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -13,6 +13,10 @@
*******************************************************************************/
package org.eclipse.ui.tests.api;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertThrows;
+import static org.junit.Assert.assertTrue;
+
import java.util.function.Predicate;
import org.eclipse.core.runtime.IAdapterFactory;
@@ -30,17 +34,17 @@
import org.eclipse.ui.SelectionListenerFactory.ISelectionModel;
import org.eclipse.ui.SelectionListenerFactory.Predicates;
import org.eclipse.ui.tests.SelectionProviderView;
+import org.eclipse.ui.tests.harness.util.CloseTestWindowsRule;
import org.eclipse.ui.tests.harness.util.UITestCase;
+import org.junit.Before;
import org.junit.Ignore;
+import org.junit.Rule;
import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
/**
* Tests the ISelectionService class.
*/
-@RunWith(JUnit4.class)
-public class SelectionListenerFactoryTest extends UITestCase implements ISelectionListener {
+public class SelectionListenerFactoryTest implements ISelectionListener {
private static final String KNOCK_KNOCK = "KnockKnock";
private IWorkbenchWindow fWindow;
@@ -50,15 +54,12 @@ public class SelectionListenerFactoryTest extends UITestCase implements ISelecti
private boolean fEventReceived;
private int fCounter;
+ @Rule
+ public final CloseTestWindowsRule closeTestWindows = new CloseTestWindowsRule();
- public SelectionListenerFactoryTest() {
- super(SelectionListenerFactoryTest.class.getSimpleName());
- }
-
- @Override
- protected void doSetUp() throws Exception {
- super.doSetUp();
- fWindow = openTestWindow();
+ @Before
+ public void doSetUp() throws Exception {
+ fWindow = UITestCase.openTestWindow();
fPage = fWindow.getActivePage();
}
@@ -593,12 +594,7 @@ public void testUserPredicateT4() throws Throwable {
@Test
public void testCreateListenerTest() throws Throwable {
SelectionProviderView view = (SelectionProviderView) fPage.showView(SelectionProviderView.ID);
- try {
- SelectionListenerFactory.createListener(view, m -> true);
- assertTrue("ClassCastException expected", false);
- } catch (ClassCastException e) {
- return;
- }
+ assertThrows(ClassCastException.class, () -> SelectionListenerFactory.createListener(view, m -> true));
}
/**
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/api/StartupTest.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/api/StartupTest.java
index 17d2369afd4..8b10646b613 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/api/StartupTest.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/api/StartupTest.java
@@ -13,21 +13,15 @@
*******************************************************************************/
package org.eclipse.ui.tests.api;
+import static org.junit.Assert.assertTrue;
+
+import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.tests.TestPlugin;
-import org.eclipse.ui.tests.harness.util.UITestCase;
+import org.junit.After;
+import org.junit.Before;
import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
-
-@RunWith(JUnit4.class)
-public class StartupTest extends UITestCase {
- /**
- * Construct an instance.
- */
- public StartupTest() {
- super(StartupTest.class.getSimpleName());
- }
+public class StartupTest {
@Test
public void testStartup() {
@@ -36,9 +30,13 @@ public void testStartup() {
assertTrue("Startup - completed before tests", StartupClass.getEarlyStartupCompleted());
}
- @Override
- protected void doTearDown() throws Exception {
- super.doTearDown();
+ @Before
+ public void doSetUp() {
+ PlatformUI.getWorkbench();
+ }
+
+ @After
+ public void doTearDown() throws Exception {
// NOTE: tearDown will run after each test. Therefore, we
// only want one test in this suite (or the values set when
// this plugin started up will be lost).
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/api/TestException.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/api/TestException.java
new file mode 100644
index 00000000000..f73593f7254
--- /dev/null
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/api/TestException.java
@@ -0,0 +1,25 @@
+/*******************************************************************************
+ * Copyright (c) 2024 Joerg Kubitz 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
+ *
+ * Contributors:
+ * Joerg Kubitz - initial API and implementation
+ ******************************************************************************/
+
+package org.eclipse.ui.tests.api;
+
+public class TestException extends RuntimeException {
+
+ private static final long serialVersionUID = 1L;
+
+ public TestException() {
+ super("Intentional TestException. Ignore me in the logfile.");
+ }
+
+}
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/autotests/XmlUtil.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/autotests/XmlUtil.java
index c78af0c9152..4fcabc7307d 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/autotests/XmlUtil.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/autotests/XmlUtil.java
@@ -14,8 +14,6 @@
package org.eclipse.ui.tests.autotests;
import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
@@ -23,7 +21,6 @@
import java.io.OutputStreamWriter;
import java.net.URL;
-import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.ui.IMemento;
import org.eclipse.ui.WorkbenchException;
@@ -44,40 +41,23 @@ public static IMemento read(URL toRead) throws WorkbenchException {
try {
return read(toRead.openStream());
} catch (IOException e) {
- throw new WorkbenchException(new Status(IStatus.ERROR,
- TestPlugin.getDefault().getBundle().getSymbolicName(),
- IStatus.OK, null, e));
- }
- }
-
- public static IMemento read(File toRead) throws WorkbenchException {
- FileInputStream input;
- try {
- input = new FileInputStream(toRead);
- return read(input);
- } catch (FileNotFoundException e) {
- throw new WorkbenchException(new Status(IStatus.ERROR,
- TestPlugin.getDefault().getBundle().getSymbolicName(),
- IStatus.OK, null, e));
+ throw new WorkbenchException(Status.error(TestPlugin.getDefault().getBundle().getSymbolicName(), e));
}
}
public static void write(File file, XMLMemento data) throws WorkbenchException {
- FileOutputStream output;
try {
file.getParentFile().mkdirs();
file.delete();
file.createNewFile();
- output = new FileOutputStream(file);
- try (OutputStreamWriter writer = new OutputStreamWriter(output)) {
+ try (FileOutputStream output = new FileOutputStream(file);
+ OutputStreamWriter writer = new OutputStreamWriter(output)) {
data.save(writer);
}
} catch (IOException e) {
- throw new WorkbenchException(new Status(IStatus.ERROR,
- TestPlugin.getDefault().getBundle().getSymbolicName(),
- IStatus.OK, e.toString(), e));
+ throw new WorkbenchException(Status.error(TestPlugin.getDefault().getBundle().getSymbolicName(), e));
}
}
}
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/commands/ActionDelegateProxyTest.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/commands/ActionDelegateProxyTest.java
index 3b60c86a8f3..985644457f3 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/commands/ActionDelegateProxyTest.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/commands/ActionDelegateProxyTest.java
@@ -41,13 +41,7 @@
import org.junit.Ignore;
import org.junit.Rule;
import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
-/**
- * @since 3.3
- */
-@RunWith(JUnit4.class)
@Ignore("broke during e4 transition and still need adjustments")
public class ActionDelegateProxyTest {
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/commands/CommandEnablementTest.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/commands/CommandEnablementTest.java
index 3227fec8b92..8599ccf525c 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/commands/CommandEnablementTest.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/commands/CommandEnablementTest.java
@@ -74,13 +74,10 @@
import org.junit.Ignore;
import org.junit.Rule;
import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
/**
* @since 3.3
*/
-@RunWith(JUnit4.class)
@Ignore("broke during e4 transition and still need adjustments")
public class CommandEnablementTest {
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/commands/HelpContextIdTest.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/commands/HelpContextIdTest.java
index db5c7e47fcb..0949cc95c35 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/commands/HelpContextIdTest.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/commands/HelpContextIdTest.java
@@ -14,6 +14,8 @@
package org.eclipse.ui.tests.commands;
+import static org.junit.Assert.assertEquals;
+
import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.Command;
import org.eclipse.core.commands.ExecutionEvent;
@@ -23,20 +25,17 @@
import org.eclipse.core.expressions.ExpressionInfo;
import org.eclipse.core.expressions.IEvaluationContext;
import org.eclipse.ui.ISources;
+import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.commands.ICommandService;
import org.eclipse.ui.handlers.IHandlerService;
-import org.eclipse.ui.tests.harness.util.UITestCase;
import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
/**
* Tests the new help context identifier support on commands and handlers.
*
* @since 3.2
*/
-@RunWith(JUnit4.class)
-public final class HelpContextIdTest extends UITestCase {
+public final class HelpContextIdTest {
private static final String COMMAND_HELP_ID = "org.eclipse.ui.tests.commandHelp";
@@ -46,13 +45,6 @@ public final class HelpContextIdTest extends UITestCase {
private static final String NEW_HELP_ID = "new_help_id";
- /**
- * Constructs a new instance of HelpContextIdTest
- */
- public HelpContextIdTest() {
- super(HelpContextIdTest.class.getSimpleName());
- }
-
/**
* Tests the reading of the help context identifier of the registry, as well
* as programmatic changes. It does not test whether there is notification.
@@ -63,9 +55,9 @@ public HelpContextIdTest() {
*/
@Test
public final void testHelpContextId() throws NotDefinedException {
- final ICommandService commandService = fWorkbench
+ final ICommandService commandService = PlatformUI.getWorkbench()
.getService(ICommandService.class);
- final IHandlerService handlerService = fWorkbench
+ final IHandlerService handlerService = PlatformUI.getWorkbench()
.getService(IHandlerService.class);
String helpContextId = null;
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/commands/RadioStateTest.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/commands/RadioStateTest.java
index 729a14d9dbc..1652265f42b 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/commands/RadioStateTest.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/commands/RadioStateTest.java
@@ -32,14 +32,7 @@
import org.eclipse.ui.services.IServiceLocator;
import org.junit.Before;
import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
-
-/**
- * @since 3.5
- * @author Prakash G.R.
- */
-@RunWith(JUnit4.class)
+
public class RadioStateTest {
private final IWorkbench fWorkbench = PlatformUI.getWorkbench();
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/commands/StateTest.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/commands/StateTest.java
index 71b94745563..b396fd9bc35 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/commands/StateTest.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/commands/StateTest.java
@@ -38,15 +38,12 @@
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
/**
* Tests various aspects of command state.
*
* @since 3.2
*/
-@RunWith(JUnit4.class)
public class StateTest {
private static final String TEXT_HELLO = "hello";
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/commands/ToggleStateTest.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/commands/ToggleStateTest.java
index 04bf1ac9abb..81b7d205968 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/commands/ToggleStateTest.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/commands/ToggleStateTest.java
@@ -16,8 +16,8 @@
package org.eclipse.ui.tests.commands;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertThrows;
import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
import org.eclipse.core.commands.Command;
import org.eclipse.core.commands.ExecutionException;
@@ -36,15 +36,12 @@
import org.junit.Before;
import org.junit.FixMethodOrder;
import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
import org.junit.runners.MethodSorters;
/**
* @since 3.5
* @author Prakash G.R.
*/
-@RunWith(JUnit4.class)
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class ToggleStateTest {
@@ -61,9 +58,7 @@ public void doSetUp() throws Exception {
// Note: this and all other tests are numbered because they must run in a
// specific order.
// See https://bugs.eclipse.org/bugs/show_bug.cgi?id=369660
- // The old junit3 implementation used a custom suite(). Because junit4 provides
- // less options on test run order the tests are now numbered and run in method
- // name order.
+ // Tests are now numbered and run in method name order.
@Test
public void test01DefaultValues() throws Exception {
@@ -85,16 +80,10 @@ public void test01DefaultValues() throws Exception {
@Test
public void test02ExceptionThrown() throws Exception {
-
Command command3 = commandService.getCommand("org.eclipse.ui.tests.toggleStateCommand3");
- try {
- handlerService.executeCommand(command3.getId(), null);
- fail("Command3 doesn't have any state. An exception must be thrown from the handler, when trying to change that");
- } catch (Exception e) {
- if(!(e instanceof ExecutionException)) {
- throw e;
- }
- }
+ assertThrows(
+ "Command3 doesn't have any state. An exception must be thrown from the handler, when trying to change that",
+ ExecutionException.class, () -> handlerService.executeCommand(command3.getId(), null));
}
static class MyUIElement extends UIElement{
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/concurrency/Bug_262032.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/concurrency/Bug_262032.java
index bfab209d0df..9422aac0694 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/concurrency/Bug_262032.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/concurrency/Bug_262032.java
@@ -116,7 +116,9 @@ protected IStatus run(IProgressMonitor monitor) {
j.join();
tb1.waitForStatus(TestBarrier2.STATUS_WAIT_FOR_DONE);
assertEquals(Status.OK_STATUS, j.getResult());
- } catch (InterruptedException e) {fail();}
+ } catch (InterruptedException e) {
+ fail(e.getMessage());
+ }
}
}
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/concurrency/NestedSyncExecDeadlockTest.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/concurrency/NestedSyncExecDeadlockTest.java
index 44fa14517bd..7e5b65c3550 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/concurrency/NestedSyncExecDeadlockTest.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/concurrency/NestedSyncExecDeadlockTest.java
@@ -29,9 +29,12 @@
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.actions.WorkspaceModifyOperation;
+import org.eclipse.ui.tests.SwtLeakTestWatcher;
import org.junit.After;
import org.junit.Before;
+import org.junit.Rule;
import org.junit.Test;
+import org.junit.rules.TestWatcher;
/**
* This is a regression test for a case where a recursive attempt to syncExec
@@ -39,6 +42,9 @@
*/
public class NestedSyncExecDeadlockTest {
+ @Rule
+ public TestWatcher swtLeakTestWatcher = new SwtLeakTestWatcher();
+
private static class ResourceListener implements IResourceChangeListener {
@Override
public void resourceChanged(IResourceChangeEvent event) {
@@ -52,12 +58,9 @@ public void resourceChanged(IResourceChangeEvent event) {
private final IWorkspace workspace = ResourcesPlugin.getWorkspace();
- public NestedSyncExecDeadlockTest() {
- super();
- }
-
public void doTest(final long timeToSleep) throws Exception {
- ProgressMonitorDialog dialog = new ProgressMonitorDialog(new Shell());
+ Shell shell = new Shell();
+ ProgressMonitorDialog dialog = new ProgressMonitorDialog(shell);
dialog.run(true, false, new WorkspaceModifyOperation() {
@Override
public void execute(final IProgressMonitor pm) {
@@ -81,6 +84,7 @@ public void execute(final IProgressMonitor pm) {
});
}
});
+ shell.close();
}
@Before
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/concurrency/NoFreezeWhileWaitingForRuleTest.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/concurrency/NoFreezeWhileWaitingForRuleTest.java
index b3294091604..612fc134090 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/concurrency/NoFreezeWhileWaitingForRuleTest.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/concurrency/NoFreezeWhileWaitingForRuleTest.java
@@ -93,7 +93,7 @@ public void testWaiting() {
blockingJob.join();
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
- fail();
+ fail(e.getMessage());
}
assertFalse("Timeout reached, blocking occurred!", ruleMonitor.isCanceled());
}
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/concurrency/SyncExecWhileUIThreadWaitsForLock.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/concurrency/SyncExecWhileUIThreadWaitsForLock.java
index a0d74e3be2f..818a43bc28e 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/concurrency/SyncExecWhileUIThreadWaitsForLock.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/concurrency/SyncExecWhileUIThreadWaitsForLock.java
@@ -141,7 +141,7 @@ public void run() {
}
//if we waited too long, fail the test
if (System.currentTimeMillis() - waitStart > 60000) {
- assertTrue("Deadlock occurred", false);
+ fail("Deadlock occurred");
}
}
//if we get here, the test succeeded
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/concurrency/TestBug105491.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/concurrency/TestBug105491.java
index ef1a7036d7d..403b28ca4bb 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/concurrency/TestBug105491.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/concurrency/TestBug105491.java
@@ -74,10 +74,6 @@ public void threadChange(Thread thread) {
private final IWorkspace workspace = ResourcesPlugin.getWorkspace();
- public TestBug105491() {
- super();
- }
-
/**
* Performs the test
*/
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/concurrency/TestBug108162.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/concurrency/TestBug108162.java
index 6e8bcdd5717..199b23ea8d4 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/concurrency/TestBug108162.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/concurrency/TestBug108162.java
@@ -13,7 +13,7 @@
*******************************************************************************/
package org.eclipse.ui.tests.concurrency;
-import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
import java.lang.reflect.InvocationTargetException;
@@ -26,7 +26,10 @@
import org.eclipse.jface.dialogs.ProgressMonitorDialog;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.actions.WorkspaceModifyOperation;
+import org.eclipse.ui.tests.SwtLeakTestWatcher;
+import org.junit.Rule;
import org.junit.Test;
+import org.junit.rules.TestWatcher;
/**
* Tests the following sequence of events:
@@ -38,6 +41,10 @@
* This test asserts that the exception is thrown and that deadlock does not occur.
*/
public class TestBug108162 {
+
+ @Rule
+ public TestWatcher swtLeakTestWatcher = new SwtLeakTestWatcher();
+
static class LockAcquiringOperation extends WorkspaceModifyOperation {
@Override
public void execute(final IProgressMonitor pm) {
@@ -47,25 +54,23 @@ public void execute(final IProgressMonitor pm) {
private final IWorkspace workspace = ResourcesPlugin.getWorkspace();
- public TestBug108162() {
- super();
- }
-
/**
* Performs the test
*/
@Test
public void testBug() throws CoreException {
+ Shell shell = new Shell();
workspace.run((IWorkspaceRunnable) monitor -> {
- ProgressMonitorDialog dialog = new ProgressMonitorDialog(new Shell());
+ ProgressMonitorDialog dialog = new ProgressMonitorDialog(shell);
try {
dialog.run(true, false, new LockAcquiringOperation());
// should not succeed
- assertTrue("Should not get here", false);
+ fail("Should not get here");
} catch (InvocationTargetException | InterruptedException | IllegalStateException e) {
// this failure is expected because it tried to fork and block while owning a
// lock.
}
}, workspace.getRoot(), IResource.NONE, null);
+ shell.close();
}
}
\ No newline at end of file
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/concurrency/TestBug269121.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/concurrency/TestBug269121.java
index 85017f2b8a4..dfe0b5e2ebe 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/concurrency/TestBug269121.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/concurrency/TestBug269121.java
@@ -29,7 +29,10 @@
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.actions.WorkspaceModifyOperation;
import org.eclipse.ui.progress.UIJob;
+import org.eclipse.ui.tests.SwtLeakTestWatcher;
+import org.junit.Rule;
import org.junit.Test;
+import org.junit.rules.TestWatcher;
import junit.framework.AssertionFailedError;
@@ -56,6 +59,9 @@
*/
public class TestBug269121 {
+ @Rule
+ public TestWatcher swtLeakTestWatcher = new SwtLeakTestWatcher();
+
@Test
public void testBug() throws InterruptedException,
InvocationTargetException {
@@ -73,8 +79,9 @@ protected void execute(IProgressMonitor monitor) {
status.set(0, TestBarrier2.STATUS_DONE);
}
};
+ Shell shell = new Shell();
final ProgressMonitorDialog dialog = new ProgressMonitorDialog(
- new Shell());
+ shell);
Job statusJob = new Job("Checking for deadlock") {
@Override
protected IStatus run(IProgressMonitor monitor) {
@@ -104,5 +111,6 @@ protected IStatus run(IProgressMonitor monitor) {
}
job.join();
assertTrue("Timeout occurred - possible Deadlock. See logging!", statusJob.getResult().isOK());
+ shell.close();
}
}
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/concurrency/TestBug98621.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/concurrency/TestBug98621.java
index ee803c662be..19d75ec4078 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/concurrency/TestBug98621.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/concurrency/TestBug98621.java
@@ -28,7 +28,10 @@
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.actions.WorkspaceModifyOperation;
+import org.eclipse.ui.tests.SwtLeakTestWatcher;
+import org.junit.Rule;
import org.junit.Test;
+import org.junit.rules.TestWatcher;
/**
* Tests the following sequence of events:
@@ -47,6 +50,10 @@
* @since 3.2
*/
public class TestBug98621 {
+
+ @Rule
+ public TestWatcher swtLeakTestWatcher = new SwtLeakTestWatcher();
+
class TransferTestOperation extends WorkspaceModifyOperation {
@Override
public void execute(final IProgressMonitor pm) {
@@ -75,17 +82,14 @@ public void threadChange(Thread thread) {
private final IWorkspace workspace = ResourcesPlugin.getWorkspace();
- public TestBug98621() {
- super();
- }
-
/**
* Performs the test
*/
@Test
public void testBug() throws CoreException {
+ Shell shell = new Shell();
workspace.run((IWorkspaceRunnable) monitor -> {
- ProgressMonitorDialog dialog = new ProgressMonitorDialog(new Shell());
+ ProgressMonitorDialog dialog = new ProgressMonitorDialog(shell);
try {
dialog.run(true, false, new TransferTestOperation());
} catch (InvocationTargetException e1) {
@@ -95,5 +99,6 @@ public void testBug() throws CoreException {
// ignore
}
}, workspace.getRoot(), IResource.NONE, null);
+ shell.close();
}
}
\ No newline at end of file
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/concurrency/TransferRuleTest.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/concurrency/TransferRuleTest.java
index a698d4760ae..9e62e5f70a6 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/concurrency/TransferRuleTest.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/concurrency/TransferRuleTest.java
@@ -13,6 +13,8 @@
*******************************************************************************/
package org.eclipse.ui.tests.concurrency;
+import static org.junit.Assert.fail;
+
import java.lang.reflect.InvocationTargetException;
import org.eclipse.core.runtime.IProgressMonitor;
@@ -22,18 +24,14 @@
import org.eclipse.jface.operation.IRunnableWithProgress;
import org.eclipse.jface.operation.IThreadListener;
import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.tests.harness.util.UITestCase;
import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
/**
* Tests IJobManger#transferRule in conjunction with ModalContext.run.
* This also exercises the IThreadListener API to allow the runnable to transfer
* and obtain the rule owned by the calling thread.
*/
-@RunWith(JUnit4.class)
-public class TransferRuleTest extends UITestCase {
+public class TransferRuleTest {
static class TestRule implements ISchedulingRule {
@Override
public boolean contains(ISchedulingRule rule) {
@@ -88,12 +86,8 @@ public void threadChange(Thread thread) {
}
}
- public TransferRuleTest() {
- super(TransferRuleTest.class.getSimpleName());
- }
-
@Test
- public void testModalContextTransfer() {
+ public void testModalContextTransfer() throws InvocationTargetException, InterruptedException {
ISchedulingRule rule = new TestRule();
TestRunnable runnable = new TestRunnable(rule);
try {
@@ -101,12 +95,6 @@ public void testModalContextTransfer() {
Job.getJobManager().beginRule(rule, null);
//now execute the runnable using ModalContext - the rule should transfer correctly
new ProgressMonitorDialog(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell()).run(true, true, runnable);
- } catch (InvocationTargetException e) {
- e.printStackTrace();
- fail("1.0");
- } catch (InterruptedException e) {
- e.printStackTrace();
- fail("1.1");
} finally {
//must release the rule when finished
Job.getJobManager().endRule(rule);
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/contexts/ExtensionTestCase.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/contexts/ExtensionTestCase.java
index 8d0b7141878..eb0b1443e99 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/contexts/ExtensionTestCase.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/contexts/ExtensionTestCase.java
@@ -13,14 +13,15 @@
*******************************************************************************/
package org.eclipse.ui.tests.contexts;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.contexts.IContext;
import org.eclipse.ui.contexts.IContextManager;
import org.eclipse.ui.contexts.IWorkbenchContextSupport;
import org.eclipse.ui.contexts.NotDefinedException;
-import org.eclipse.ui.tests.harness.util.UITestCase;
import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
/**
* The test case for reading in elements from the extension point. This verifies
@@ -30,16 +31,7 @@
*
* @since 3.0
*/
-@RunWith(JUnit4.class)
-public class ExtensionTestCase extends UITestCase {
-
- /**
- * Constructs a new instance of ExtensionTestCase with the
- * given name.
- */
- public ExtensionTestCase() {
- super(ExtensionTestCase.class.getSimpleName());
- }
+public class ExtensionTestCase {
/**
* Tests that the "org.eclipse.ui.acceleratorScopes" extension point can be
@@ -51,7 +43,7 @@ public ExtensionTestCase() {
*/
@Test
public final void testAcceleratorScopes() throws NotDefinedException {
- final IWorkbenchContextSupport contextSupport = fWorkbench
+ final IWorkbenchContextSupport contextSupport = PlatformUI.getWorkbench()
.getContextSupport();
final IContextManager contextManager = contextSupport
.getContextManager();
@@ -90,7 +82,7 @@ public final void testAcceleratorScopes() throws NotDefinedException {
*/
@Test
public final void testCommandsScopes() throws NotDefinedException {
- final IWorkbenchContextSupport contextSupport = fWorkbench
+ final IWorkbenchContextSupport contextSupport = PlatformUI.getWorkbench()
.getContextSupport();
final IContextManager contextManager = contextSupport
.getContextManager();
@@ -128,7 +120,7 @@ public final void testCommandsScopes() throws NotDefinedException {
*/
@Test
public final void testContexts() throws NotDefinedException {
- final IWorkbenchContextSupport contextSupport = fWorkbench
+ final IWorkbenchContextSupport contextSupport = PlatformUI.getWorkbench()
.getContextSupport();
final IContextManager contextManager = contextSupport
.getContextManager();
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/contexts/PartContextTest.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/contexts/PartContextTest.java
index dcd1be4fd93..37c32ce7304 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/contexts/PartContextTest.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/contexts/PartContextTest.java
@@ -14,6 +14,12 @@
package org.eclipse.ui.tests.contexts;
+import static org.eclipse.ui.PlatformUI.getWorkbench;
+import static org.eclipse.ui.tests.harness.util.UITestCase.openTestWindow;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
import java.util.Collection;
import org.eclipse.core.resources.IFile;
@@ -25,11 +31,11 @@
import org.eclipse.ui.contexts.IContextService;
import org.eclipse.ui.part.FileEditorInput;
import org.eclipse.ui.tests.api.MockViewPart;
+import org.eclipse.ui.tests.harness.util.CloseTestWindowsRule;
import org.eclipse.ui.tests.harness.util.FileUtil;
import org.eclipse.ui.tests.harness.util.UITestCase;
+import org.junit.Rule;
import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
/**
* Test that the contexts activated through their local services are only in
@@ -37,17 +43,15 @@
*
* @since 3.2
*/
-@RunWith(JUnit4.class)
-public class PartContextTest extends UITestCase {
+public class PartContextTest {
public static final String PAGE_VIEW_ID = "org.eclipse.ui.tests.contexts.MockPageView";
private static final String TEXT_EDITOR_ID = "org.eclipse.ui.DefaultTextEditor";
public static final String WINDOW_CONTEXT_ID = "org.eclipse.ui.tests.contexts.WorkbenchWindow";
- public PartContextTest() {
- super(PartContextTest.class.getSimpleName());
- }
+ @Rule
+ public CloseTestWindowsRule closeTestWindows = new CloseTestWindowsRule();
@Test
public void testBasicContextActivation() throws Exception {
@@ -106,7 +110,7 @@ public void testWindowContextActivation() throws Exception {
checkActiveContext(globalService, WINDOW_CONTEXT_ID, false);
IWorkbenchWindow window = openTestWindow();
- assertTrue(forceActive(window.getShell()));
+ assertTrue(UITestCase.forceActive(window.getShell()));
IContextService localService = window
.getService(IContextService.class);
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/datatransfer/ImportArchiveOperationTest.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/datatransfer/ImportArchiveOperationTest.java
index 0c451c4182a..5d203057dcf 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/datatransfer/ImportArchiveOperationTest.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/datatransfer/ImportArchiveOperationTest.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2017 IBM Corporation and others.
+ * Copyright (c) 2000, 2024 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -13,7 +13,10 @@
*******************************************************************************/
package org.eclipse.ui.tests.datatransfer;
-import java.io.IOException;
+import static org.eclipse.ui.tests.harness.util.UITestCase.openTestWindow;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
import java.io.InputStream;
import java.net.URL;
import java.util.ArrayList;
@@ -36,15 +39,14 @@
import org.eclipse.ui.internal.wizards.datatransfer.TarLeveledStructureProvider;
import org.eclipse.ui.internal.wizards.datatransfer.ZipLeveledStructureProvider;
import org.eclipse.ui.tests.TestPlugin;
+import org.eclipse.ui.tests.harness.util.CloseTestWindowsRule;
import org.eclipse.ui.tests.harness.util.FileUtil;
-import org.eclipse.ui.tests.harness.util.UITestCase;
import org.eclipse.ui.wizards.datatransfer.ImportOperation;
+import org.junit.After;
+import org.junit.Rule;
import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
-@RunWith(JUnit4.class)
-public class ImportArchiveOperationTest extends UITestCase implements IOverwriteQuery {
+public class ImportArchiveOperationTest implements IOverwriteQuery {
private static final String DATA_PATH_PREFIX = "data/org.eclipse.datatransferArchives/";
private static final String ARCHIVE_SOURCE_PROPERTY = "archiveSource";
@@ -58,16 +60,14 @@ public class ImportArchiveOperationTest extends UITestCase implements IOverwrite
private static final String[] fileNames = { "file1.txt", "file2.txt" };
private String localDirectory;
-
private IProject project;
private URL zipFileURL;
private URL tarFileURL;
- public ImportArchiveOperationTest() {
- super(ImportArchiveOperationTest.class.getSimpleName());
- }
+ @Rule
+ public CloseTestWindowsRule closeTestWindows = new CloseTestWindowsRule();
@Override
public String queryOverwrite(String pathString) {
@@ -80,13 +80,10 @@ public String queryOverwrite(String pathString) {
* Tear down. Delete the project we created and all of the
* files on the file system.
*/
- @Override
- protected void doTearDown() throws Exception {
- super.doTearDown();
+ @After
+ public void doTearDown() throws Exception {
try {
project.delete(true, true, null);
- } catch (CoreException e) {
- fail(e.toString());
}
finally{
localDirectory = null;
@@ -115,21 +112,20 @@ private void setup(String propertyName) throws Exception{
public void testZipGetStatus() throws Exception {
setup(ARCHIVE_SOURCE_PROPERTY);
project = FileUtil.createProject("ImportZipGetStatus");
- ZipFile zipFile = new ZipFile(zipFileURL.getPath());
+ try (ZipFile zipFile = new ZipFile(zipFileURL.getPath())) {
- ZipLeveledStructureProvider structureProvider = new ZipLeveledStructureProvider(zipFile);
+ ZipLeveledStructureProvider structureProvider = new ZipLeveledStructureProvider(zipFile);
- Enumeration extends ZipEntry> zipEntries = zipFile.entries();
- List entries = new ArrayList<>();
- while (zipEntries.hasMoreElements()){
- entries.add(zipEntries.nextElement());
- }
- ImportOperation operation = new ImportOperation(
- IPath.fromOSString(zipFileURL.getPath()), structureProvider.getRoot(),
- structureProvider, this, entries);
+ Enumeration extends ZipEntry> zipEntries = zipFile.entries();
+ List entries = new ArrayList<>();
+ while (zipEntries.hasMoreElements()) {
+ entries.add(zipEntries.nextElement());
+ }
+ ImportOperation operation = new ImportOperation(IPath.fromOSString(zipFileURL.getPath()),
+ structureProvider.getRoot(), structureProvider, this, entries);
- closeZipFile(zipFile);
- assertTrue(operation.getStatus().getCode() == IStatus.OK);
+ assertTrue(operation.getStatus().getCode() == IStatus.OK);
+ }
}
@Test
@@ -155,25 +151,23 @@ public void testTarGetStatus() throws Exception {
public void testZipImport() throws Exception {
setup(ARCHIVE_SOURCE_PROPERTY);
project = FileUtil.createProject("ImportZip");
- ZipFile zipFile = new ZipFile(zipFileURL.getPath());
- ZipLeveledStructureProvider structureProvider = new ZipLeveledStructureProvider(zipFile);
- zipFile = new ZipFile(zipFileURL.getPath());
- Enumeration extends ZipEntry> zipEntries = zipFile.entries();
- List entries = new ArrayList<>();
- while (zipEntries.hasMoreElements()){
- ZipEntry entry = zipEntries.nextElement();
- if (!entry.isDirectory()) {
- entries.add(entry);
+ try (ZipFile zipFile = new ZipFile(zipFileURL.getPath())) {
+ ZipLeveledStructureProvider structureProvider = new ZipLeveledStructureProvider(zipFile);
+ Enumeration extends ZipEntry> zipEntries = zipFile.entries();
+ List entries = new ArrayList<>();
+ while (zipEntries.hasMoreElements()) {
+ ZipEntry entry = zipEntries.nextElement();
+ if (!entry.isDirectory()) {
+ entries.add(entry);
+ }
}
- }
- ImportOperation operation = new ImportOperation(
- IPath.fromOSString(project.getName()), structureProvider.getRoot(),
- structureProvider, this, entries);
+ ImportOperation operation = new ImportOperation(IPath.fromOSString(project.getName()),
+ structureProvider.getRoot(), structureProvider, this, entries);
- openTestWindow().run(true, true, operation);
- closeZipFile(zipFile);
+ openTestWindow().run(true, true, operation);
- verifyFiles(directoryNames.length, false);
+ verifyFiles(directoryNames.length, false);
+ }
}
@@ -224,25 +218,23 @@ public void testTarSetOverwriteResources() throws Exception {
public void testZipSetOverwriteResources() throws Exception {
setup(ARCHIVE_SOURCE_PROPERTY);
project = FileUtil.createProject("ImporZiprSetOverwriteResources");
- ZipFile zipFile = new ZipFile(zipFileURL.getPath());
- ZipLeveledStructureProvider structureProvider = new ZipLeveledStructureProvider(zipFile);
- zipFile = new ZipFile(zipFileURL.getPath());
- Enumeration extends ZipEntry> zipEntries = zipFile.entries();
- List entries = new ArrayList<>();
- while (zipEntries.hasMoreElements()){
- ZipEntry entry = zipEntries.nextElement();
- if (!entry.isDirectory()) {
- entries.add(entry);
+ try (ZipFile zipFile = new ZipFile(zipFileURL.getPath())) {
+ ZipLeveledStructureProvider structureProvider = new ZipLeveledStructureProvider(zipFile);
+ Enumeration extends ZipEntry> zipEntries = zipFile.entries();
+ List entries = new ArrayList<>();
+ while (zipEntries.hasMoreElements()) {
+ ZipEntry entry = zipEntries.nextElement();
+ if (!entry.isDirectory()) {
+ entries.add(entry);
+ }
}
+ ImportOperation operation = new ImportOperation(IPath.fromOSString(project.getName()),
+ structureProvider.getRoot(), structureProvider, this, entries);
+
+ openTestWindow().run(true, true, operation);
+ operation.setOverwriteResources(true);
+ openTestWindow().run(true, true, operation);
}
- ImportOperation operation = new ImportOperation(
- IPath.fromOSString(project.getName()), structureProvider.getRoot(),
- structureProvider, this, entries);
-
- openTestWindow().run(true, true, operation);
- operation.setOverwriteResources(true);
- openTestWindow().run(true, true, operation);
- closeZipFile(zipFile);
verifyFiles(directoryNames.length, false);
}
@@ -250,23 +242,21 @@ public void testZipSetOverwriteResources() throws Exception {
public void testZipWithFileAtRoot() throws Exception {
setup(ARCHIVE_115800_PROPERTY);
project = FileUtil.createProject("ImportZipWithFileAtRoot");
- ZipFile zipFile = new ZipFile(zipFileURL.getPath());
- ZipLeveledStructureProvider structureProvider = new ZipLeveledStructureProvider(zipFile);
- zipFile = new ZipFile(zipFileURL.getPath());
- Enumeration extends ZipEntry> zipEntries = zipFile.entries();
- List entries = new ArrayList<>();
- while (zipEntries.hasMoreElements()){
- ZipEntry entry = zipEntries.nextElement();
- if (!entry.isDirectory()) {
- entries.add(entry);
+ try (ZipFile zipFile = new ZipFile(zipFileURL.getPath())) {
+ ZipLeveledStructureProvider structureProvider = new ZipLeveledStructureProvider(zipFile);
+ Enumeration extends ZipEntry> zipEntries = zipFile.entries();
+ List entries = new ArrayList<>();
+ while (zipEntries.hasMoreElements()) {
+ ZipEntry entry = zipEntries.nextElement();
+ if (!entry.isDirectory()) {
+ entries.add(entry);
+ }
}
- }
- ImportOperation operation = new ImportOperation(
- IPath.fromOSString(project.getName()), structureProvider.getRoot(),
- structureProvider, this, entries);
+ ImportOperation operation = new ImportOperation(IPath.fromOSString(project.getName()),
+ structureProvider.getRoot(), structureProvider, this, entries);
- openTestWindow().run(true, true, operation);
- closeZipFile(zipFile);
+ openTestWindow().run(true, true, operation);
+ }
verifyFiles(directoryNames.length, true);
}
@@ -299,69 +289,47 @@ public void testTarWithFileAtRoot() throws Exception {
*
* @param folderCount number of folders that were imported
*/
- private void verifyFiles(int folderCount, boolean hasRootMembers) {
- try {
- IPath path = IPath.fromOSString(localDirectory);
- IResource targetFolder = project.findMember(path.makeRelative());
-
- assertTrue("Import failed", targetFolder instanceof IContainer);
-
- IResource[] resources = ((IContainer) targetFolder).members();
- if (!hasRootMembers){
- assertEquals("Import failed to import all directories",
- folderCount, resources.length);
- for (IResource resource : resources) {
- assertTrue("Import failed", resource instanceof IContainer);
- verifyFolder((IContainer) resource);
- }
+ private void verifyFiles(int folderCount, boolean hasRootMembers) throws CoreException {
+ IPath path = IPath.fromOSString(localDirectory);
+ IResource targetFolder = project.findMember(path.makeRelative());
+
+ assertTrue("Import failed", targetFolder instanceof IContainer);
+
+ IResource[] resources = ((IContainer) targetFolder).members();
+ if (!hasRootMembers) {
+ assertEquals("Import failed to import all directories", folderCount, resources.length);
+ for (IResource resource : resources) {
+ assertTrue("Import failed", resource instanceof IContainer);
+ verifyFolder((IContainer) resource);
}
- else {
- for (IResource resource : resources) {
- if (resource instanceof IContainer c) {
- verifyFolder(c);
- } else {
- assertTrue("Root resource is not present or is not present as a file: " + rootResourceName,
- resource instanceof IFile && rootResourceName.equals(resource.getName()));
- }
+ } else {
+ for (IResource resource : resources) {
+ if (resource instanceof IContainer c) {
+ verifyFolder(c);
+ } else {
+ assertTrue("Root resource is not present or is not present as a file: " + rootResourceName,
+ resource instanceof IFile && rootResourceName.equals(resource.getName()));
}
}
-
- } catch (CoreException e) {
- fail(e.toString());
}
+
}
/**
* Verifies that all files were imported into the specified folder.
*/
- private void verifyFolder(IContainer folder) {
- try {
- IResource[] files = folder.members();
- assertEquals("Import failed to import all files", fileNames.length,
- files.length);
- for (String fileName : fileNames) {
- int k;
- for (k = 0; k < files.length; k++) {
- if (fileName.equals(files[k].getName())) {
- break;
- }
+ private void verifyFolder(IContainer folder) throws CoreException {
+ IResource[] files = folder.members();
+ assertEquals("Import failed to import all files", fileNames.length, files.length);
+ for (String fileName : fileNames) {
+ int k;
+ for (k = 0; k < files.length; k++) {
+ if (fileName.equals(files[k].getName())) {
+ break;
}
- assertTrue("Import failed to import file " + fileName,
- k < fileNames.length);
}
- } catch (CoreException e) {
- fail(e.toString());
+ assertTrue("Import failed to import file " + fileName, k < fileNames.length);
}
}
- private boolean closeZipFile(ZipFile zipFile){
- try{
- zipFile.close();
- }
- catch(IOException e){
- fail("Could not close zip file " + zipFile.getName(), e);
- return false;
- }
- return true;
- }
}
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/datatransfer/ImportExistingArchiveProjectFilterTest.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/datatransfer/ImportExistingArchiveProjectFilterTest.java
index 1aff6631812..6e9adc65191 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/datatransfer/ImportExistingArchiveProjectFilterTest.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/datatransfer/ImportExistingArchiveProjectFilterTest.java
@@ -21,6 +21,7 @@
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.IWorkspaceRoot;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
@@ -40,13 +41,13 @@
import org.eclipse.ui.IPageLayout;
import org.eclipse.ui.IViewPart;
import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.internal.WorkbenchPlugin;
import org.eclipse.ui.internal.dialogs.ImportExportWizard;
import org.eclipse.ui.internal.wizards.datatransfer.WizardProjectsImportPage;
import org.eclipse.ui.internal.wizards.datatransfer.WizardProjectsImportPage.ProjectRecord;
import org.eclipse.ui.navigator.resources.ProjectExplorer;
import org.eclipse.ui.tests.TestPlugin;
-import org.eclipse.ui.tests.harness.util.DialogCheck;
import org.eclipse.ui.tests.harness.util.EmptyPerspective;
import org.eclipse.ui.tests.harness.util.FileUtil;
import org.eclipse.ui.tests.harness.util.UITestCase;
@@ -66,6 +67,10 @@ public ImportExistingArchiveProjectFilterTest() {
@Override
protected void doTearDown() throws Exception {
+ if (dialog != null) {
+ dialog.close();
+ dialog = null;
+ }
IWorkspaceRoot wsRoot = ResourcesPlugin.getWorkspace().getRoot();
IProject[] projects = wsRoot.getProjects();
for (int i = projects.length - 1; i >= 0; i--) {
@@ -150,7 +155,7 @@ private void processElementAndChildren(Object element, ITreeContentProvider cont
if (element instanceof IFolder) {
IFolder folder = (IFolder) element;
assertFalse(folder.getName().equalsIgnoreCase("res"));
- } else {
+ } else if (element instanceof IResource) { // to expensive to walk other contributions like whole JRE from JDT
Object[] children = contentProvider.getChildren(element);
for (Object child : children) {
processElementAndChildren(child, contentProvider);
@@ -158,6 +163,7 @@ private void processElementAndChildren(Object element, ITreeContentProvider cont
}
}
+ private WizardDialog dialog;
public WizardProjectsImportPage getNewWizard() {
ImportExportWizard wizard = new ImportExportWizard(ImportExportWizard.IMPORT);
wizard.init(getWorkbench(), null);
@@ -173,7 +179,10 @@ public WizardProjectsImportPage getNewWizard() {
Shell shell = getShell();
- WizardDialog dialog = new WizardDialog(shell, wizard);
+ if (dialog != null) {
+ dialog.close();
+ }
+ dialog = new WizardDialog(shell, wizard);
dialog.create();
dialog.getShell().setSize(Math.max(100, dialog.getShell().getSize().x), 100);
@@ -185,6 +194,6 @@ public WizardProjectsImportPage getNewWizard() {
}
private Shell getShell() {
- return DialogCheck.getShell();
+ return PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
}
}
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/datatransfer/ImportExistingProjectsWizardTest.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/datatransfer/ImportExistingProjectsWizardTest.java
index 4149e8089b6..480e4d7832a 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/datatransfer/ImportExistingProjectsWizardTest.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/datatransfer/ImportExistingProjectsWizardTest.java
@@ -17,8 +17,14 @@
package org.eclipse.ui.tests.datatransfer;
import static org.eclipse.jface.dialogs.IMessageProvider.WARNING;
+import static org.eclipse.ui.PlatformUI.getWorkbench;
import static org.eclipse.ui.tests.datatransfer.ImportTestUtils.restoreWorkspaceConfiguration;
import static org.eclipse.ui.tests.datatransfer.ImportTestUtils.setWorkspaceAutoBuild;
+import static org.eclipse.ui.tests.harness.util.UITestCase.processEvents;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
@@ -48,7 +54,6 @@
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.internal.WorkbenchPlugin;
import org.eclipse.ui.internal.dialogs.ImportExportWizard;
import org.eclipse.ui.internal.wizards.datatransfer.DataTransferMessages;
@@ -56,19 +61,18 @@
import org.eclipse.ui.internal.wizards.datatransfer.WizardProjectsImportPage.ProjectRecord;
import org.eclipse.ui.tests.TestPlugin;
import org.eclipse.ui.tests.datatransfer.ImportTestUtils.TestBuilder;
-import org.eclipse.ui.tests.harness.util.DialogCheck;
+import org.eclipse.ui.tests.harness.util.CloseTestWindowsRule;
import org.eclipse.ui.tests.harness.util.FileUtil;
-import org.eclipse.ui.tests.harness.util.UITestCase;
import org.eclipse.ui.wizards.datatransfer.ExternalProjectImportWizard;
+import org.junit.After;
+import org.junit.Before;
import org.junit.FixMethodOrder;
+import org.junit.Rule;
import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
import org.junit.runners.MethodSorters;
-@RunWith(JUnit4.class)
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
-public class ImportExistingProjectsWizardTest extends UITestCase {
+public class ImportExistingProjectsWizardTest {
private static final String DATA_PATH_PREFIX = "data/org.eclipse.datatransferArchives/";
private static final String WS_DATA_LOCATION = "importExistingFromDirTest";
@@ -86,19 +90,19 @@ public class ImportExistingProjectsWizardTest extends UITestCase {
private String zipLocation = null;
+ private WizardDialog dialog;
+
private boolean originalRefreshSetting;
- public ImportExistingProjectsWizardTest() {
- super(ImportExistingProjectsWizardTest.class.getName());
- }
+ @Rule
+ public final CloseTestWindowsRule closeTestWindows = new CloseTestWindowsRule();
private Shell getShell() {
- return DialogCheck.getShell();
+ return getWorkbench().getActiveWorkbenchWindow().getShell();
}
- @Override
- protected void doSetUp() throws Exception {
- super.doSetUp();
+ @Before
+ public void doSetUp() throws Exception {
originalRefreshSetting = ResourcesPlugin.getPlugin()
.getPluginPreferences().getBoolean(
ResourcesPlugin.PREF_AUTO_REFRESH);
@@ -107,8 +111,13 @@ protected void doSetUp() throws Exception {
setWorkspaceAutoBuild(true);
}
- @Override
- protected void doTearDown() throws Exception {
+ @After
+ public void doTearDown() throws Exception {
+ if (dialog != null) {
+ dialog.close();
+ dialog = null;
+ }
+
IWorkspaceRoot wsRoot = ResourcesPlugin.getWorkspace().getRoot();
IProject[] projects = wsRoot.getProjects();
for (int i = projects.length - 1; i >= 0; i--) {
@@ -137,12 +146,11 @@ protected void doTearDown() throws Exception {
ResourcesPlugin.getPlugin().getPluginPreferences().setValue(
ResourcesPlugin.PREF_AUTO_REFRESH, originalRefreshSetting);
restoreWorkspaceConfiguration();
- super.doTearDown();
}
private void waitForRefresh() {
try {
- PlatformUI.getWorkbench().getProgressService().busyCursorWhile(
+ getWorkbench().getProgressService().busyCursorWhile(
monitor -> Job.getJobManager().join(ResourcesPlugin.FAMILY_AUTO_REFRESH,
new NullProgressMonitor()));
} catch (InvocationTargetException | InterruptedException e) {
@@ -153,9 +161,7 @@ private void waitForRefresh() {
// Note: this and all other tests are numbered because they must run in a
// specific order.
// See https://bugs.eclipse.org/bugs/show_bug.cgi?id=369660
- // The old junit3 implementation used a custom suite(). Because junit4 provides
- // less options on test run order the tests are now numbered and run in method
- // name order.
+ // Tests are now numbered and run in method name order.
@Test
public void test01FindSingleZip() throws IOException {
URL archiveFile = FileLocator.toFileURL(FileLocator.find(TestPlugin.getDefault().getBundle(),
@@ -799,8 +805,6 @@ public void test14InitialValue() throws IOException, CoreException {
wpip = getExternalImportWizard(null);
selectedProjects = wpip.getProjectRecords();
assertEquals(0, selectedProjects.length);
-
-
}
@Test
@@ -900,7 +904,6 @@ private String copyZipLocation(String zipLocation) throws IOException {
return ImportTestUtils.copyZipLocation(zipLocation, ARCHIVE_HELLOWORLD);
}
-
private WizardProjectsImportPage getNewWizard() {
ImportExportWizard wizard = new ImportExportWizard(
ImportExportWizard.IMPORT);
@@ -920,7 +923,10 @@ private WizardProjectsImportPage getNewWizard() {
Shell shell = getShell();
- WizardDialog dialog = new WizardDialog(shell, wizard);
+ if (dialog != null) {
+ dialog.close();
+ }
+ dialog = new WizardDialog(shell, wizard);
dialog.create();
dialog.getShell().setSize(Math.max(100, dialog.getShell().getSize().x),
100);
@@ -1176,7 +1182,10 @@ private WizardProjectsImportPage getExternalImportWizard(String initialPath) {
ExternalProjectImportWizard wizard = new ExternalProjectImportWizard(
initialPath);
wizard.init(getWorkbench(), null);
- WizardDialog dialog = new WizardDialog(getShell(), wizard);
+ if (dialog != null) {
+ dialog.close();
+ }
+ dialog = new WizardDialog(getShell(), wizard);
dialog.create();
dialog.getShell().setSize(Math.max(100, dialog.getShell().getSize().x),
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/datatransfer/SmartImportTests.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/datatransfer/SmartImportTests.java
index de57704c53c..16020d7af58 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/datatransfer/SmartImportTests.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/datatransfer/SmartImportTests.java
@@ -157,7 +157,7 @@ private void proceedSmartImportWizard(SmartImportWizard wizard, Consumer okButton.isEnabled(), -1);
finishWizard(wizard);
} finally {
- if (!dialog.getShell().isDisposed()) {
+ if (dialog.getShell() != null && !dialog.getShell().isDisposed()) {
dialog.close();
}
}
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/datatransfer/ZipSlipTests.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/datatransfer/ZipSlipTests.java
index 497f2f9ae67..0136ed43cbc 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/datatransfer/ZipSlipTests.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/datatransfer/ZipSlipTests.java
@@ -25,21 +25,13 @@
import org.eclipse.core.runtime.FileLocator;
import org.eclipse.core.runtime.IPath;
import org.eclipse.ui.internal.wizards.datatransfer.ZipLeveledStructureProvider;
-import org.eclipse.ui.tests.harness.util.UITestCase;
import org.eclipse.ui.wizards.datatransfer.ZipFileStructureProvider;
import org.junit.Assert;
import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
import org.osgi.framework.Bundle;
import org.osgi.framework.FrameworkUtil;
-@RunWith(JUnit4.class)
-public class ZipSlipTests extends UITestCase {
-
- public ZipSlipTests() {
- super(ZipSlipTests.class.getName());
- }
+public class ZipSlipTests {
public static final String ZIPSLIP_FILE = "data/zipSlip.zip"; //$NON-NLS-1$
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/dialogs/DeprecatedUIPreferencesAuto.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/dialogs/DeprecatedUIPreferencesAuto.java
index ee1b127f8af..e8814c914ad 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/dialogs/DeprecatedUIPreferencesAuto.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/dialogs/DeprecatedUIPreferencesAuto.java
@@ -13,6 +13,8 @@
*******************************************************************************/
package org.eclipse.ui.tests.dialogs;
+import static org.junit.Assume.assumeNotNull;
+
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.preference.IPreferenceNode;
import org.eclipse.jface.preference.PreferenceDialog;
@@ -21,11 +23,17 @@
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.internal.IWorkbenchHelpContextIds;
import org.eclipse.ui.internal.WorkbenchPlugin;
+import org.eclipse.ui.tests.SwtLeakTestWatcher;
import org.eclipse.ui.tests.harness.util.DialogCheck;
+import org.junit.Rule;
import org.junit.Test;
+import org.junit.rules.TestWatcher;
public class DeprecatedUIPreferencesAuto {
+ @Rule
+ public TestWatcher swtLeakTestWatcher = new SwtLeakTestWatcher();
+
protected Shell getShell() {
return DialogCheck.getShell();
}
@@ -122,23 +130,22 @@ public void testProjectReferencesProp() {
@Test
public void testFieldEditorEnablePref() {
- PreferenceDialogWrapper dialog = null;
PreferenceManager manager = WorkbenchPlugin.getDefault().getPreferenceManager();
- if (manager != null) {
- dialog = new PreferenceDialogWrapper(getShell(), manager);
- dialog.create();
-
- for (IPreferenceNode node : manager.getElements(PreferenceManager.PRE_ORDER)) {
- if (node.getId().equals("org.eclipse.ui.tests.dialogs.EnableTestPreferencePage")) {
- dialog.showPage(node);
- EnableTestPreferencePage page = (EnableTestPreferencePage) dialog.getPage(node);
- page.flipState();
- page.flipState();
- break;
- }
+ assumeNotNull(manager);
+ PreferenceDialogWrapper dialog = new PreferenceDialogWrapper(
+ PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), manager);
+ dialog.create();
+
+ for (IPreferenceNode node : manager.getElements(PreferenceManager.PRE_ORDER)) {
+ if (node.getId().equals("org.eclipse.ui.tests.dialogs.EnableTestPreferencePage")) {
+ dialog.showPage(node);
+ EnableTestPreferencePage page = (EnableTestPreferencePage) dialog.getPage(node);
+ page.flipState();
+ page.flipState();
+ break;
}
}
-
+ dialog.close();
}
}
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/dialogs/ResourceInitialSelectionTest.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/dialogs/ResourceInitialSelectionTest.java
index 0ffe9d0be6e..68dee301d34 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/dialogs/ResourceInitialSelectionTest.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/dialogs/ResourceInitialSelectionTest.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2019 Emmanuel Chebbi
+ * Copyright (c) 2019, 2024 Emmanuel Chebbi and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -14,16 +14,17 @@
package org.eclipse.ui.tests.dialogs;
import static java.util.Arrays.asList;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
-import java.io.ByteArrayInputStream;
-import java.io.InputStream;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
-import java.util.Map.Entry;
import java.util.Set;
+import java.util.Map.Entry;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
@@ -31,17 +32,18 @@
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableItem;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.dialogs.FilteredResourcesSelectionDialog;
+import org.eclipse.ui.internal.decorators.DecoratorManager;
import org.eclipse.ui.tests.harness.util.DisplayHelper;
-import org.eclipse.ui.tests.harness.util.UITestCase;
+import org.junit.After;
+import org.junit.Before;
import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
/**
* Tests that FilteredResourcesSelectionDialog selects its initial selection
@@ -49,8 +51,7 @@
*
* @since 3.14
*/
-@RunWith(JUnit4.class)
-public class ResourceInitialSelectionTest extends UITestCase {
+public class ResourceInitialSelectionTest {
/** The names of the files created within the test project. */
private final static List FILE_NAMES = asList("foo.txt", "bar.txt", "foofoo");
@@ -58,23 +59,13 @@ public class ResourceInitialSelectionTest extends UITestCase {
/** The test files stored by name. */
private final static Map FILES = new HashMap<>();
- /** Used to fill created files with an empty content. */
- private static InputStream stream = new ByteArrayInputStream(new byte[0]);
-
private FilteredResourcesSelectionDialog dialog;
private IProject project;
- /**
- * Constructs a new instance of ResourceItemInitialSelectionTest.
- */
- public ResourceInitialSelectionTest() {
- super(ResourceInitialSelectionTest.class.getSimpleName());
- }
- @Override
- protected void doSetUp() throws Exception {
- super.doSetUp();
+ @Before
+ public void doSetUp() throws Exception {
FILES.clear();
createProject();
}
@@ -353,34 +344,30 @@ private void createProject() throws CoreException {
for (String fileName : FILE_NAMES) {
IFile file = project.getFile(fileName);
- file.create(stream, true, new NullProgressMonitor());
+ file.create(new byte[0], true, false, new NullProgressMonitor());
FILES.put(fileName, file);
}
project.refreshLocal(IResource.DEPTH_INFINITE, new NullProgressMonitor());
// Assert files have been properly created
- Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
+ Display display = PlatformUI.getWorkbench().getDisplay();
for (String fileName : FILE_NAMES) {
- new DisplayHelper() {
- @Override
- protected boolean condition() {
- return project.getFile(fileName).exists();
- }
- }.waitForCondition(shell.getDisplay(), 1000);
-
+ DisplayHelper.waitForCondition(display, 1000, () -> project.getFile(fileName).exists());
assertTrue("File was not created", project.getFile(fileName).exists());
}
}
- @Override
- protected void doTearDown() throws Exception {
+ @After
+ public void doTearDown() throws Exception {
if (dialog != null) {
dialog.close();
}
if (project != null) {
try {
+ Job.getJobManager().wakeUp(DecoratorManager.FAMILY_DECORATE);
+ Job.getJobManager().join(DecoratorManager.FAMILY_DECORATE, null);
project.delete(true, null);
} catch (Exception e) {
// try to get a stacktrace which jobs still has project open so that it can not
@@ -393,6 +380,5 @@ protected void doTearDown() throws Exception {
throw e;
}
}
- super.doTearDown();
}
}
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/dialogs/ResourceItemLabelTest.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/dialogs/ResourceItemLabelTest.java
index b32cd574bc1..4f89a111b07 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/dialogs/ResourceItemLabelTest.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/dialogs/ResourceItemLabelTest.java
@@ -13,6 +13,10 @@
*******************************************************************************/
package org.eclipse.ui.tests.dialogs;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
import java.io.ByteArrayInputStream;
import java.io.InputStream;
@@ -31,10 +35,9 @@
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.dialogs.FilteredResourcesSelectionDialog;
import org.eclipse.ui.tests.harness.util.DisplayHelper;
-import org.eclipse.ui.tests.harness.util.UITestCase;
+import org.junit.After;
+import org.junit.Before;
import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
/**
* Tests that resources are highlighted to match user search input. See Bug
@@ -42,22 +45,12 @@
*
* @since 3.14
*/
-@RunWith(JUnit4.class)
-public class ResourceItemLabelTest extends UITestCase {
-
- /**
- * Constructs a new instance of ResourceItemlLabelTest.
- */
-
- public ResourceItemLabelTest() {
- super(ResourceItemLabelTest.class.getSimpleName());
- }
+public class ResourceItemLabelTest {
private IProject project;
- @Override
- protected void doSetUp() throws Exception {
- super.doSetUp();
+ @Before
+ public void doSetUp() throws Exception {
project = ResourcesPlugin.getWorkspace().getRoot()
.getProject(getClass().getName() + "_" + System.currentTimeMillis());
project.create(new NullProgressMonitor());
@@ -357,14 +350,13 @@ private String printStyleRanges(StyleRange[] styleRanges) {
return builder.toString();
}
- @Override
- protected void doTearDown() throws Exception {
+ @After
+ public void doTearDown() throws Exception {
if (dialog != null) {
dialog.close();
}
if (project != null) {
project.delete(true, null);
}
- super.doTearDown();
}
}
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/dialogs/ResourceSelectionFilteringDialogTest.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/dialogs/ResourceSelectionFilteringDialogTest.java
index 5b1f2b3387c..d855c08ef4b 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/dialogs/ResourceSelectionFilteringDialogTest.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/dialogs/ResourceSelectionFilteringDialogTest.java
@@ -24,18 +24,12 @@
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.dialogs.FilteredResourcesSelectionDialog;
import org.eclipse.ui.tests.harness.util.DisplayHelper;
-import org.eclipse.ui.tests.harness.util.UITestCase;
+import org.junit.After;
import org.junit.Assert;
+import org.junit.Before;
import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
-@RunWith(JUnit4.class)
-public class ResourceSelectionFilteringDialogTest extends UITestCase {
-
- public ResourceSelectionFilteringDialogTest() {
- super(ResourceSelectionFilteringDialogTest.class.getSimpleName());
- }
+public class ResourceSelectionFilteringDialogTest {
private static SeeThroughFilteredResourcesSelectionDialog createDialog() {
SeeThroughFilteredResourcesSelectionDialog dialog = new SeeThroughFilteredResourcesSelectionDialog(
@@ -47,9 +41,8 @@ private static SeeThroughFilteredResourcesSelectionDialog createDialog() {
private IProject project;
- @Override
+ @Before
public void doSetUp() throws Exception {
- super.doSetUp();
project = ResourcesPlugin.getWorkspace().getRoot()
.getProject(getClass().getSimpleName() + System.currentTimeMillis());
project.create(null);
@@ -76,9 +69,8 @@ public void testMatch() throws CoreException {
}
}
- @Override
+ @After
public void doTearDown() throws Exception {
- super.doTearDown();
project.delete(true, null);
}
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/dialogs/UIPreferencesAuto.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/dialogs/UIPreferencesAuto.java
index 90bebbd8074..43933de7d51 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/dialogs/UIPreferencesAuto.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/dialogs/UIPreferencesAuto.java
@@ -13,6 +13,8 @@
*******************************************************************************/
package org.eclipse.ui.tests.dialogs;
+import static org.junit.Assume.assumeNotNull;
+
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.preference.IPreferenceNode;
import org.eclipse.jface.preference.PreferenceDialog;
@@ -21,11 +23,16 @@
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.internal.IWorkbenchHelpContextIds;
import org.eclipse.ui.internal.WorkbenchPlugin;
+import org.eclipse.ui.tests.SwtLeakTestWatcher;
import org.eclipse.ui.tests.harness.util.DialogCheck;
+import org.junit.Rule;
import org.junit.Test;
+import org.junit.rules.TestWatcher;
public class UIPreferencesAuto {
+ @Rule
+ public TestWatcher swtLeakTestWatcher = new SwtLeakTestWatcher();
protected Shell getShell() {
return DialogCheck.getShell();
}
@@ -124,25 +131,23 @@ public void testProjectReferencesProp() {
*/
@Test
public void testFieldEditorEnablePref() {
-
- PreferenceDialogWrapper dialog = null;
PreferenceManager manager = WorkbenchPlugin.getDefault()
.getPreferenceManager();
- if (manager != null) {
- dialog = new PreferenceDialogWrapper(getShell(), manager);
- dialog.create();
-
- for (IPreferenceNode node : manager.getElements(PreferenceManager.PRE_ORDER)) {
- if (node.getId().equals("org.eclipse.ui.tests.dialogs.EnableTestPreferencePage")) {
- dialog.showPage(node);
- EnableTestPreferencePage page = (EnableTestPreferencePage) dialog.getPage(node);
- page.flipState();
- page.flipState();
- break;
- }
+ assumeNotNull(manager);
+ PreferenceDialogWrapper dialog = new PreferenceDialogWrapper(
+ PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), manager);
+ dialog.create();
+
+ for (IPreferenceNode node : manager.getElements(PreferenceManager.PRE_ORDER)) {
+ if (node.getId().equals("org.eclipse.ui.tests.dialogs.EnableTestPreferencePage")) {
+ dialog.showPage(node);
+ EnableTestPreferencePage page = (EnableTestPreferencePage) dialog.getPage(node);
+ page.flipState();
+ page.flipState();
+ break;
}
}
-
+ dialog.close();
}
}
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/dialogs/UIWizardsAuto.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/dialogs/UIWizardsAuto.java
index b9cbd0fc6d4..8c2dcf4b130 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/dialogs/UIWizardsAuto.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/dialogs/UIWizardsAuto.java
@@ -39,6 +39,7 @@
import org.eclipse.ui.internal.dialogs.NewWizard;
import org.eclipse.ui.internal.ide.IIDEHelpContextIds;
import org.eclipse.ui.internal.wizards.newresource.ResourceMessages;
+import org.eclipse.ui.tests.SwtLeakTestWatcher;
import org.eclipse.ui.tests.harness.util.DialogCheck;
import org.eclipse.ui.tests.harness.util.FileUtil;
import org.eclipse.ui.wizards.newresource.BasicNewFileResourceWizard;
@@ -46,9 +47,14 @@
import org.eclipse.ui.wizards.newresource.BasicNewProjectResourceWizard;
import org.junit.After;
import org.junit.Ignore;
+import org.junit.Rule;
import org.junit.Test;
+import org.junit.rules.TestWatcher;
public class UIWizardsAuto {
+ @Rule
+ public TestWatcher swtLeakTestWatcher = new SwtLeakTestWatcher();
+
private static final int SIZING_WIZARD_WIDTH = 470;
private static final int SIZING_WIZARD_HEIGHT = 550;
@@ -332,7 +338,8 @@ private void checkWizardWindowTitle(String windowTitle) {
initNewWizard(newWizard);
- WizardDialog dialog = new WizardDialog(getShell(), newWizard);
+ WizardDialog dialog = new WizardDialog(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(),
+ newWizard);
dialog.create();
if(windowTitle == null) {
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/dnd/Bug87211Test.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/dnd/Bug87211Test.java
index a8480c14ac8..381e5beb97f 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/dnd/Bug87211Test.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/dnd/Bug87211Test.java
@@ -14,8 +14,7 @@
package org.eclipse.ui.tests.dnd;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
+import static org.junit.Assert.assertEquals;
import org.eclipse.swt.SWT;
import org.eclipse.ui.IViewPart;
@@ -23,18 +22,17 @@
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.internal.WorkbenchPage;
import org.eclipse.ui.internal.WorkbenchPlugin;
+import org.junit.Before;
+import org.junit.Test;
-public class Bug87211Test extends TestCase {
- public static TestSuite suite() {
- return new TestSuite(Bug87211Test.class);
- }
+public class Bug87211Test {
private WorkbenchPage fPage;
private IWorkbenchWindow fWindow;
- @Override
- protected void setUp() throws Exception {
+ @Before
+ public void setUp() throws Exception {
fWindow = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
fPage = (WorkbenchPage) fWindow.getActivePage();
}
@@ -44,6 +42,7 @@ protected void setUp() throws Exception {
* another view on top of it. The views should still be in their
* separate stacks.
*/
+ @Test
public void testDragStandaloneView() throws Throwable {
fPage.setPerspective(WorkbenchPlugin.getDefault()
.getPerspectiveRegistry().findPerspectiveWithId(
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/e4/CloseAllHandlerTest.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/e4/CloseAllHandlerTest.java
new file mode 100644
index 00000000000..3bf7836e98f
--- /dev/null
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/e4/CloseAllHandlerTest.java
@@ -0,0 +1,287 @@
+/*******************************************************************************
+* Copyright (c) 2024 Feilim Breatnach 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
+*
+* Contributors: Feilim Breatnach, Pilz Ireland - PR #2360
+*******************************************************************************/
+
+package org.eclipse.ui.tests.e4;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.util.Collections;
+import java.util.List;
+import java.util.Optional;
+
+import org.eclipse.core.commands.Command;
+import org.eclipse.core.commands.ParameterizedCommand;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IStorage;
+import org.eclipse.e4.core.commands.ECommandService;
+import org.eclipse.e4.core.commands.EHandlerService;
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.ui.model.application.MApplication;
+import org.eclipse.e4.ui.model.application.descriptor.basic.MPartDescriptor;
+import org.eclipse.e4.ui.model.application.ui.advanced.MArea;
+import org.eclipse.e4.ui.model.application.ui.basic.MPart;
+import org.eclipse.e4.ui.model.application.ui.basic.MPartSashContainer;
+import org.eclipse.e4.ui.model.application.ui.basic.MPartSashContainerElement;
+import org.eclipse.e4.ui.model.application.ui.basic.MPartStack;
+import org.eclipse.e4.ui.workbench.IWorkbench;
+import org.eclipse.e4.ui.workbench.modeling.EModelService;
+import org.eclipse.e4.ui.workbench.modeling.EPartService;
+import org.eclipse.e4.ui.workbench.modeling.EPartService.PartState;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IFileEditorInput;
+import org.eclipse.ui.IPageLayout;
+import org.eclipse.ui.IPersistableElement;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.internal.CloseAllHandler;
+import org.eclipse.ui.internal.Workbench;
+import org.junit.Before;
+import org.junit.Test;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.FrameworkUtil;
+import org.osgi.framework.ServiceReference;
+
+/**
+ * Tests the enabled when and execution logic within the
+ * {@link CloseAllHandler}.
+ */
+public class CloseAllHandlerTest {
+
+ private IEclipseContext applicationContext;
+ private MApplication application;
+ private EModelService modelService;
+ private EPartService partService;
+
+ private static final String TEST_COMPATIBILITY_LAYER_EDITOR_ID = "org.eclipse.ui.tests.TitleTestEditor"; //$NON-NLS-1$
+ private static final String CLOSE_ALL_EDITORS_COMMAND_ID = "org.eclipse.ui.file.closeAll"; //$NON-NLS-1$
+ private static final String DUMMY_E4_PART_ID = "e4_dummy_part_editor"; //$NON-NLS-1$
+
+ @Before
+ public void setUp() throws Exception {
+ application = getApplicationModel();
+ applicationContext = application.getContext();
+ modelService = applicationContext.get(EModelService.class);
+ partService = application.getContext().get(EPartService.class);
+ }
+
+ private MApplication getApplicationModel() {
+ BundleContext bundleContext = FrameworkUtil.getBundle(IWorkbench.class).getBundleContext();
+ ServiceReference reference = bundleContext.getServiceReference(IWorkbench.class);
+ return bundleContext.getService(reference).getApplication();
+ }
+
+ /**
+ * Tests the enabled when and execution logic within the
+ * {@link CloseAllHandler}.
+ *
+ * Scenario 1: compatibility layer type editor is closed via the handler (and
+ * the enablement of handler is checked).
+ *
+ * Scenario 2: E4 style part contribution which is tagged as representing an
+ * 'editor' is closed via the handler (and the enablement of handler is
+ * checked).
+ *
+ * Scenario 3: a mix of an open compatibility layer type editor *and* an E4
+ * style part contribution which is tagged as representing an 'editor' are both
+ * closed via the handler (and the enablement of handler is checked).
+ */
+ @Test
+ public void testCloseMixedEditorTypes() {
+ EHandlerService handlerService = application.getContext().get(EHandlerService.class);
+ ECommandService commandService = application.getContext().get(ECommandService.class);
+
+ Command closeAllCommand = commandService.getCommand(CLOSE_ALL_EDITORS_COMMAND_ID);
+ final ParameterizedCommand parameterizedCommand = ParameterizedCommand.generateCommand(closeAllCommand,
+ Collections.emptyMap());
+
+ // verify the close all editors handler enabledment is false (no editors are
+ // open yet!)
+ boolean canExecute = handlerService.canExecute(parameterizedCommand);
+ assertFalse(canExecute);
+
+ // scenario 1: open a compatibility layer editor
+ IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
+ assertNotNull("Active workbench window not found.", window);
+
+ IFileEditorInput input = new DummyFileEditorInput();
+ try {
+ window.getActivePage().openEditor(input, TEST_COMPATIBILITY_LAYER_EDITOR_ID);
+ } catch (PartInitException e) {
+ fail("Test Compatibility Editor could not be opened. Further testing cannot complete.");
+ }
+
+ // verify the close all handler is enabled now (since a dummy compatibility
+ // layer editor has been opened)
+ canExecute = handlerService.canExecute(parameterizedCommand);
+ assertTrue(canExecute);
+
+ IEditorPart compatEditor = window.getActivePage().findEditor(input);
+ assertNotNull(compatEditor);
+ handlerService.executeHandler(parameterizedCommand);
+ compatEditor = window.getActivePage().findEditor(input);
+ assertNull(compatEditor);
+
+ // verify the close all handler is *not* enabled now (since compatibility layer
+ // editor has been closed)
+ canExecute = handlerService.canExecute(parameterizedCommand);
+ assertFalse(canExecute);
+
+ // scenario 2: e4 part descriptor contribution
+ MPartDescriptor partDescriptor = createDummyPartDescriptor();
+ application.getDescriptors().add(partDescriptor);
+
+ // open our e4 part which represents an editor
+ MPart dummyPart = createAndOpenE4Part(partDescriptor);
+
+ // verify the close all handler is enabled now (since dummy editor has been
+ // opened)
+ canExecute = handlerService.canExecute(parameterizedCommand);
+ assertTrue(canExecute);
+
+ // close all editors (dummy editor should close!)
+ dummyPart = partService.findPart(DUMMY_E4_PART_ID);
+ assertNotNull(dummyPart);
+ handlerService.executeHandler(parameterizedCommand);
+ dummyPart = partService.findPart(DUMMY_E4_PART_ID);
+ assertNull(dummyPart);
+
+ // verify the close all handler is *not* enabled now (since dummy editor has
+ // been closed)
+ canExecute = handlerService.canExecute(parameterizedCommand);
+ assertFalse(canExecute);
+
+ // scenario 3:
+ // finally: re-open both the compatibility layer editor *and* the dummy e4 part
+ // which represents an editor, and verify they are *both* closed when we invoked
+ // the close all editors handler
+ dummyPart = createAndOpenE4Part(partDescriptor);
+ try {
+ window.getActivePage().openEditor(input, TEST_COMPATIBILITY_LAYER_EDITOR_ID);
+ } catch (PartInitException e) {
+ fail("Test Compatibility Editor could not be opened. Further testing cannot complete.");
+ }
+ compatEditor = window.getActivePage().findEditor(input);
+ assertNotNull(compatEditor);
+ dummyPart = partService.findPart(DUMMY_E4_PART_ID);
+ assertNotNull(dummyPart);
+
+ canExecute = handlerService.canExecute(parameterizedCommand);
+ assertTrue(canExecute);
+
+ // close all editors
+ handlerService.executeHandler(parameterizedCommand);
+ canExecute = handlerService.canExecute(parameterizedCommand);
+ assertFalse(canExecute);
+
+ // verify they are all closed
+ compatEditor = window.getActivePage().findEditor(input);
+ assertNull(compatEditor);
+ dummyPart = partService.findPart(DUMMY_E4_PART_ID);
+ assertNull(dummyPart);
+ }
+
+ private MPart createAndOpenE4Part(MPartDescriptor partDescriptor) {
+ Optional primaryPartStack = findPrimaryConfiguationAreaPartStack(application, modelService);
+
+ if (primaryPartStack.isEmpty()) {
+ fail("Test cannot proceed as the primary part stack could not be found in the application.");
+ }
+
+ MPart dummyPart = partService.createPart(partDescriptor.getElementId());
+ primaryPartStack.get().getChildren().add(dummyPart);
+ partService.showPart(dummyPart.getElementId(), PartState.ACTIVATE);
+ partService.bringToTop(dummyPart);
+
+ return dummyPart;
+ }
+
+ private MPartDescriptor createDummyPartDescriptor() {
+ MPartDescriptor partDescriptor = modelService.createModelElement(MPartDescriptor.class);
+ partDescriptor.setAllowMultiple(true);
+ partDescriptor.setElementId(DUMMY_E4_PART_ID);
+ partDescriptor.setCloseable(true);
+ partDescriptor.setLabel(DUMMY_E4_PART_ID);
+ partDescriptor.getTags().add(Workbench.EDITOR_TAG);
+ partDescriptor.getTags().add(EPartService.REMOVE_ON_HIDE_TAG);
+ partDescriptor.setContributionURI("bundleclass://org.eclipse.ui.tests/org.eclipse.ui.tests.e4.DummyEditor");
+
+ return partDescriptor;
+ }
+
+ private Optional findPrimaryConfiguationAreaPartStack(MApplication application,
+ EModelService modelService) {
+ List areaCandidates = modelService.findElements(application,
+ IPageLayout.ID_EDITOR_AREA, MArea.class, null,
+ EModelService.IN_SHARED_ELEMENTS);
+ if (areaCandidates.size() == 1) {
+ MArea primaryArea = areaCandidates.get(0);
+ for (MPartSashContainerElement element : primaryArea.getChildren()) {
+ if (element instanceof MPartStack partStack) {
+ return Optional.of(partStack);
+ } else if (element instanceof MPartSashContainer sash) {
+ return sash.getChildren().stream().filter(c -> c instanceof MPartStack)
+ .map(c -> (MPartStack) c).findFirst();
+ }
+ }
+ }
+
+ return Optional.empty();
+ }
+
+ private class DummyFileEditorInput implements IFileEditorInput {
+ @Override
+ public boolean exists() {
+ return true;
+ }
+
+ @Override
+ public ImageDescriptor getImageDescriptor() {
+ return null;
+ }
+
+ @Override
+ public String getName() {
+ return "MyInputFile";
+ }
+
+ @Override
+ public IPersistableElement getPersistable() {
+ return null;
+ }
+
+ @Override
+ public String getToolTipText() {
+ return "My Input File";
+ }
+
+ @Override
+ public T getAdapter(Class adapter) {
+ return null;
+ }
+
+ @Override
+ public IFile getFile() {
+ return null;
+ }
+
+ @Override
+ public IStorage getStorage() {
+ return null;
+ }
+ }
+}
\ No newline at end of file
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/e4/DummyEditor.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/e4/DummyEditor.java
new file mode 100644
index 00000000000..63c7db7cff1
--- /dev/null
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/e4/DummyEditor.java
@@ -0,0 +1,17 @@
+/*******************************************************************************
+* Copyright (c) 2024 Feilim Breatnach 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
+*
+* Contributors: Feilim Breatnach, Pilz Ireland - PR #2360
+*******************************************************************************/
+
+package org.eclipse.ui.tests.e4;
+
+public class DummyEditor {
+
+}
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/encoding/EncodingTestCase.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/encoding/EncodingTestCase.java
index 23728a3d3fb..cf4d4ccb005 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/encoding/EncodingTestCase.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/encoding/EncodingTestCase.java
@@ -13,30 +13,21 @@
*******************************************************************************/
package org.eclipse.ui.tests.encoding;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
import java.nio.charset.Charset;
import java.nio.charset.IllegalCharsetNameException;
import java.util.List;
-import org.eclipse.core.runtime.Assert;
import org.eclipse.ui.WorkbenchEncoding;
-import org.eclipse.ui.tests.harness.util.UITestCase;
import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
/**
* The EncodingTestCase is the suite that tests the 3.1
* encoding support.
*/
-@RunWith(JUnit4.class)
-public class EncodingTestCase extends UITestCase {
-
- /**
- * Create a new instance of the receiver.
- */
- public EncodingTestCase() {
- super(EncodingTestCase.class.getSimpleName());
- }
+public class EncodingTestCase {
/**
* Test that the workbench encodings are all valid. The
@@ -48,10 +39,10 @@ public void testWorkbenchEncodings() {
for (String encoding : encodings) {
try {
- Assert.isTrue(Charset.isSupported(encoding), "Unsupported charset " + encoding);
+ assertTrue("Unsupported charset " + encoding, Charset.isSupported(encoding));
} catch (IllegalCharsetNameException e) {
- Assert.isTrue(false, "Unsupported charset " + encoding);
+ fail("Unsupported charset " + encoding);
}
}
}
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/filteredtree/FilteredTreeTests.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/filteredtree/FilteredTreeTests.java
index 4d4f7c468ad..c8975a4d898 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/filteredtree/FilteredTreeTests.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/filteredtree/FilteredTreeTests.java
@@ -28,13 +28,10 @@
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.dialogs.FilteredTree;
import org.eclipse.ui.dialogs.PatternFilter;
-import org.eclipse.ui.tests.harness.util.UITestCase;
+import org.junit.After;
import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
-@RunWith(JUnit4.class)
-public class FilteredTreeTests extends UITestCase {
+public class FilteredTreeTests {
private FilteredTree fTreeViewer;
private TestElement fRootElement;
// create an 8000-item Tree
@@ -76,10 +73,6 @@ protected Control createContents(Composite parent) {
}
- public FilteredTreeTests() {
- super(FilteredTreeTests.class.getSimpleName());
- }
-
@Test
public void testCreateFilteredTree(){
runFilteredTreeTest(SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL
@@ -124,6 +117,12 @@ public void testAddAndRemovePattern() {
applyPattern("0-0-0-0 name-*");
assertNumberOfTopLevelItems(1);
+ applyPattern(" 0-0-0-0 name-*");
+ assertNumberOfTopLevelItems(1);
+
+ applyPattern("0-0-0-0 name-* ");
+ assertNumberOfTopLevelItems(1);
+
applyPattern("0-0-0-0 name unknownWord");
assertNumberOfTopLevelItems(0);
@@ -203,9 +202,8 @@ private void setInput() {
fTreeViewer.getViewer().setInput(fRootElement);
}
- @Override
- protected void doTearDown() throws Exception {
- super.doTearDown();
+ @After
+ public void doTearDown() throws Exception {
fTreeViewer = null;
fRootElement = null;
}
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/filteredtree/TextMatcherTest.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/filteredtree/TextMatcherTest.java
deleted file mode 100644
index 7f817e79951..00000000000
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/filteredtree/TextMatcherTest.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2020 Thomas Wolf 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.ui.tests.filteredtree;
-
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
-import org.eclipse.ui.internal.misc.TextMatcher;
-import org.junit.Test;
-
-/**
- * Tests for {@link TextMatcher}.
- */
-public class TextMatcherTest {
-
- @Test
- public void testEmpty() {
- assertTrue(new TextMatcher("", false, false).match(""));
- assertFalse(new TextMatcher("", false, false).match("foo"));
- assertFalse(new TextMatcher("", false, false).match("foo bar baz"));
- assertTrue(new TextMatcher("", false, true).match(""));
- assertFalse(new TextMatcher("", false, true).match("foo"));
- assertFalse(new TextMatcher("", false, true).match("foo bar baz"));
- }
-
- @Test
- public void testSuffixes() {
- assertFalse(new TextMatcher("fo*ar", false, false).match("foobar_123"));
- assertFalse(new TextMatcher("fo*ar", false, false).match("foobar_baz"));
- }
-
- @Test
- public void testChinese() {
- assertTrue(new TextMatcher("喜欢", false, false).match("我 喜欢 吃 苹果。"));
- // This test would work only if word-splitting used the ICU BreakIterator.
- // "Words" are as shown above.
- // assertTrue(new TextMatcher("喜欢", false, false).match("我喜欢吃苹果。"));
- }
-
- @Test
- public void testSingleWords() {
- assertTrue(new TextMatcher("huhn", false, false).match("hahn henne hühner küken huhn"));
- assertTrue(new TextMatcher("h?hner", false, false).match("hahn henne hühner küken huhn"));
- assertTrue(new TextMatcher("h*hner", false, false).match("hahn henne hühner küken huhn"));
- assertTrue(new TextMatcher("hühner", false, false).match("hahn henne hühner küken huhn"));
- // Full pattern must match word fully
- assertFalse(new TextMatcher("h?hner", false, false).match("hahn henne hühnerhof küken huhn"));
- assertFalse(new TextMatcher("h*hner", false, false).match("hahn henne hühnerhof küken huhn"));
- assertFalse(new TextMatcher("hühner", false, false).match("hahn henne hühnerhof küken huhn"));
-
- assertTrue(new TextMatcher("huhn", false, true).match("hahn henne hühner küken huhn"));
- assertFalse(new TextMatcher("h?hner", false, true).match("hahn henne hühner küken huhn"));
- assertFalse(new TextMatcher("h*hner", false, true).match("hahn henne hühner küken huhn"));
- assertTrue(new TextMatcher("hühner", false, true).match("hahn henne hühner küken huhn"));
- // Full pattern must match word fully
- assertFalse(new TextMatcher("h?hner", false, true).match("hahn henne hühnerhof küken huhn"));
- assertFalse(new TextMatcher("h*hner", false, true).match("hahn henne hühnerhof küken huhn"));
- assertFalse(new TextMatcher("hühner", false, true).match("hahn henne hühnerhof küken huhn"));
-
- // Bug 570390: Pattern starting/ending with whitespace should still match
- assertTrue(new TextMatcher("hahn ", false, false).match("hahn henne hühnerhof küken huhn"));
- assertTrue(new TextMatcher("huhn ", false, false).match("hahn henne hühnerhof küken huhn"));
- assertTrue(new TextMatcher(" hahn", false, false).match("hahn henne hühnerhof küken huhn"));
- assertTrue(new TextMatcher(" huhn", false, false).match("hahn henne hühnerhof küken huhn"));
- }
-
- @Test
- public void testMultipleWords() {
- assertTrue(new TextMatcher("huhn h?hner", false, false).match("hahn henne hühner küken huhn"));
- assertTrue(new TextMatcher("huhn h?hner", false, false).match("hahn henne hühnerhof küken huhn"));
- assertFalse(new TextMatcher("huhn h?hner", false, true).match("hahn henne hühner küken huhn"));
- assertFalse(new TextMatcher("huhn h?hner", false, true).match("hahn henne hühnerhof küken huhn"));
- assertTrue(new TextMatcher("huhn h*hner", false, false).match("hahn henne hühner küken huhn"));
- assertTrue(new TextMatcher("huhn h*hner", false, false).match("hahn henne hühnerhof küken huhn"));
- assertFalse(new TextMatcher("huhn h*hner", false, true).match("hahn henne hühner küken huhn"));
- assertFalse(new TextMatcher("huhn h*hner", false, true).match("hahn henne hühnerhof küken huhn"));
- assertTrue(new TextMatcher("huhn hühner", false, false).match("hahn henne hühner küken huhn"));
- assertTrue(new TextMatcher("huhn hühner", false, false).match("hahn henne hühnerhof küken huhn"));
- assertTrue(new TextMatcher("huhn hühner", false, true).match("hahn henne hühner küken huhn"));
- assertTrue(new TextMatcher("huhn hühner", false, true).match("hahn henne hühnerhof küken huhn"));
-
- // Bug 570390: Pattern starting/ending with whitespace should still match
- assertTrue(new TextMatcher("huhn hahn ", false, false).match("hahn henne hühnerhof küken huhn"));
- assertTrue(new TextMatcher("hahn huhn ", false, false).match("hahn henne hühnerhof küken huhn"));
- assertTrue(new TextMatcher(" huhn hahn", false, false).match("hahn henne hühnerhof küken huhn"));
- assertTrue(new TextMatcher(" hahn huhn", false, false).match("hahn henne hühnerhof küken huhn"));
- }
-
- @Test
- public void testCaseInsensitivity() {
- assertTrue(new TextMatcher("Huhn HÜHNER", true, false).match("hahn henne hühner küken huhn"));
- assertTrue(new TextMatcher("Huhn HÜHNER", true, false).match("hahn henne hühnerhof küken huhn"));
- assertTrue(new TextMatcher("Huhn HÜHNER", true, true).match("hahn henne hühner küken huhn"));
- assertTrue(new TextMatcher("Huhn HÜHNER", true, true).match("hahn henne hühnerhof küken huhn"));
- assertTrue(new TextMatcher("HüHnEr", true, false).match("hahn henne hühner küken huhn"));
- assertFalse(new TextMatcher("HüHnEr", true, false).match("hahn henne hühnerhof küken huhn"));
- assertTrue(new TextMatcher("HüHnEr", true, true).match("hahn henne hühner küken huhn"));
- assertFalse(new TextMatcher("HüHnEr", true, true).match("hahn henne hühnerhof küken huhn"));
- }
-}
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/ide/api/FileEditorInputTest.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/ide/api/FileEditorInputTest.java
index bc0cf55f642..f1a8d87ae69 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/ide/api/FileEditorInputTest.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/ide/api/FileEditorInputTest.java
@@ -13,6 +13,8 @@
*******************************************************************************/
package org.eclipse.ui.tests.ide.api;
+import static org.junit.Assert.assertTrue;
+
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.IStorage;
@@ -24,22 +26,14 @@
import org.eclipse.ui.IFileEditorInput;
import org.eclipse.ui.IPersistableElement;
import org.eclipse.ui.part.FileEditorInput;
-import org.eclipse.ui.tests.harness.util.UITestCase;
import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
/**
* Tests [I]FileEditorInput API.
*
* @since 3.1
*/
-@RunWith(JUnit4.class)
-public class FileEditorInputTest extends UITestCase {
-
- public FileEditorInputTest() {
- super(FileEditorInputTest.class.getSimpleName());
- }
+public class FileEditorInputTest {
/**
* Regression test for bug 72337 - [IDE] FileEditorInput .equals() not implemented against interface
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/ide/api/IDETest.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/ide/api/IDETest.java
index 0db31bf17c6..e117ca501e2 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/ide/api/IDETest.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/ide/api/IDETest.java
@@ -13,6 +13,9 @@
*******************************************************************************/
package org.eclipse.ui.tests.ide.api;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
import java.util.Arrays;
import org.eclipse.core.runtime.content.IContentType;
@@ -21,22 +24,16 @@
import org.eclipse.ui.ide.IDE;
import org.eclipse.ui.ide.IEditorAssociationOverride;
import org.eclipse.ui.internal.registry.EditorDescriptor;
-import org.eclipse.ui.tests.harness.util.UITestCase;
+import org.junit.After;
+import org.junit.Before;
import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
/**
* Tests the IDE API and behaviour.
*
* @since 3.5
*/
-@RunWith(JUnit4.class)
-public class IDETest extends UITestCase {
-
- public IDETest() {
- super(IDETest.class.getSimpleName());
- }
+public class IDETest {
static EditorDescriptor descriptor1 = EditorDescriptor.createForProgram("echo");
static EditorDescriptor descriptor2 = EditorDescriptor.createForProgram("ps");
@@ -73,16 +70,14 @@ void assertArrayContains(Object[] arr, Object... entries) {
}
}
- @Override
- protected void doSetUp() throws Exception {
- super.doSetUp();
+ @Before
+ public void doSetUp() throws Exception {
TestOverride.returnNullEntries = true;
}
- @Override
- protected void doTearDown() throws Exception {
+ @After
+ public void doTearDown() throws Exception {
TestOverride.returnNullEntries = false;
- super.doTearDown();
}
public static class TestOverride implements IEditorAssociationOverride {
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/ide/api/IDETest2.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/ide/api/IDETest2.java
index 449334e911a..2efeee9fead 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/ide/api/IDETest2.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/ide/api/IDETest2.java
@@ -13,6 +13,8 @@
*******************************************************************************/
package org.eclipse.ui.tests.ide.api;
+import static org.junit.Assert.assertEquals;
+
import java.io.IOException;
import java.util.HashSet;
import java.util.Set;
@@ -23,31 +25,23 @@
import org.eclipse.core.tests.harness.FileSystemHelper;
import org.eclipse.ui.IEditorDescriptor;
import org.eclipse.ui.ide.IDE;
-import org.eclipse.ui.tests.harness.util.UITestCase;
+import org.junit.After;
import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
/**
* More tests for the IDE API and behaviour.
*/
-@RunWith(JUnit4.class)
-public class IDETest2 extends UITestCase {
+public class IDETest2 {
private final Set storesToDelete = new HashSet<>();
- @Override
- protected void doTearDown() throws Exception {
+ @After
+ public void doTearDown() throws Exception {
storesToDelete.forEach(file -> {
try {
file.delete(EFS.NONE, null);
} catch (CoreException e) {
}
});
- super.doTearDown();
- }
-
- public IDETest2() {
- super(IDETest2.class.getSimpleName());
}
/**
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/internal/InternalTestSuite.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/internal/InternalTestSuite.java
index d0b5f349c67..fe2b505df10 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/internal/InternalTestSuite.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/internal/InternalTestSuite.java
@@ -25,6 +25,7 @@
import org.eclipse.ui.tests.markers.MarkerSupportRegistryTests;
import org.eclipse.ui.tests.markers.MarkerSupportViewTest;
import org.eclipse.ui.tests.markers.MarkerTesterTest;
+import org.eclipse.ui.tests.markers.MarkerTypeTests;
import org.eclipse.ui.tests.markers.MarkerViewTests;
import org.eclipse.ui.tests.markers.MarkerViewUtilTest;
import org.eclipse.ui.tests.markers.ResourceMappingMarkersTest;
@@ -68,5 +69,6 @@
LargeFileLimitsPreferenceHandlerTest.class,
WorkbookEditorsHandlerTest.class,
ScopeAreaTest.class,
+ MarkerTypeTests.class
})
public class InternalTestSuite {}
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/keys/KeysPreferenceModelTest.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/keys/KeysPreferenceModelTest.java
index b19751b1437..9c99cc07b8f 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/keys/KeysPreferenceModelTest.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/keys/KeysPreferenceModelTest.java
@@ -14,6 +14,13 @@
package org.eclipse.ui.tests.keys;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNotSame;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
@@ -24,6 +31,7 @@
import org.eclipse.jface.bindings.keys.KeyBinding;
import org.eclipse.jface.bindings.keys.KeySequence;
import org.eclipse.jface.util.PropertyChangeEvent;
+import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.contexts.IContextService;
import org.eclipse.ui.internal.keys.model.BindingElement;
import org.eclipse.ui.internal.keys.model.BindingModel;
@@ -36,17 +44,13 @@
import org.eclipse.ui.internal.keys.model.SchemeElement;
import org.eclipse.ui.internal.keys.model.SchemeModel;
import org.eclipse.ui.keys.IBindingService;
-import org.eclipse.ui.tests.harness.util.UITestCase;
import org.junit.Ignore;
import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
/**
* @since 3.4
*/
-@RunWith(JUnit4.class)
-public class KeysPreferenceModelTest extends UITestCase {
+public class KeysPreferenceModelTest {
private static final String ID_QUICK_SWITCH = "org.eclipse.ui.window.openEditorDropDown";
private static final String SCHEME_EMACS_ID = "org.eclipse.ui.emacsAcceleratorConfiguration";
@@ -59,21 +63,15 @@ public class KeysPreferenceModelTest extends UITestCase {
private static final String ID_CMD_CONFLICT4 = "org.eclipse.ui.tests.keyModel.conflict4";
private static final String ID_CMD_EMACS1 = "org.eclipse.ui.tests.keyModel.emacs1";
- public KeysPreferenceModelTest() {
- super(KeysPreferenceModelTest.class.getSimpleName());
- }
-
@Test
public void testDefaults() throws Exception {
KeyController controller = new KeyController();
- controller.init(getWorkbench());
+ controller.init(PlatformUI.getWorkbench());
ContextModel cm = controller.getContextModel();
boolean foundWindow = false;
boolean foundDialog = false;
- Iterator i = cm.getContexts().iterator();
- while (i.hasNext()) {
- ContextElement elem = i.next();
+ for (ContextElement elem : cm.getContexts()) {
if (elem.getId().equals(IContextService.CONTEXT_ID_WINDOW)) {
foundWindow = true;
} else if (elem.getId().equals(IContextService.CONTEXT_ID_DIALOG)) {
@@ -88,9 +86,7 @@ public void testDefaults() throws Exception {
SchemeModel sm = controller.getSchemeModel();
boolean foundDefault = false;
- Iterator i2 = sm.getSchemes().iterator();
- while (i2.hasNext()) {
- SchemeElement e = i2.next();
+ for (SchemeElement e : sm.getSchemes()) {
if (e.getId().equals(
IBindingService.DEFAULT_DEFAULT_ACTIVE_SCHEME_ID)) {
foundDefault = true;
@@ -113,7 +109,7 @@ public void testDefaults() throws Exception {
@Test
public void testContexts() throws Exception {
final KeyController controller = new KeyController();
- controller.init(getWorkbench());
+ controller.init(PlatformUI.getWorkbench());
ContextModel cm = controller.getContextModel();
ContextElement dialog = cm.getContextIdToElement()
@@ -153,7 +149,7 @@ public void testContexts() throws Exception {
@Test
public void testBindings() throws Exception {
final KeyController controller = new KeyController();
- controller.init(getWorkbench());
+ controller.init(PlatformUI.getWorkbench());
ContextModel cm = controller.getContextModel();
BindingModel bm = controller.getBindingModel();
@@ -201,7 +197,7 @@ public void testBindings() throws Exception {
@Test
public void testBasicConflicts() throws Exception {
final KeyController controller = new KeyController();
- controller.init(getWorkbench());
+ controller.init(PlatformUI.getWorkbench());
final ConflictModel cf = controller.getConflictModel();
final BindingModel bm = controller.getBindingModel();
@@ -260,7 +256,7 @@ public void testBasicConflicts() throws Exception {
@Test
public void testConflictSelection() throws Exception {
final KeyController controller = new KeyController();
- controller.init(getWorkbench());
+ controller.init(PlatformUI.getWorkbench());
final ConflictModel cf = controller.getConflictModel();
final BindingModel bm = controller.getBindingModel();
@@ -295,7 +291,7 @@ public void testConflictSelection() throws Exception {
@Test
public void failsOnCocoatestCreateConflict() throws Exception {
final KeyController controller = new KeyController();
- controller.init(getWorkbench());
+ controller.init(PlatformUI.getWorkbench());
final ConflictModel cf = controller.getConflictModel();
final BindingModel bm = controller.getBindingModel();
@@ -332,7 +328,7 @@ public void failsOnCocoatestCreateConflict() throws Exception {
@Test
public void failsOnMacCocoatestConflictRemove() throws Exception {
final KeyController controller = new KeyController();
- controller.init(getWorkbench());
+ controller.init(PlatformUI.getWorkbench());
final ConflictModel cf = controller.getConflictModel();
final BindingModel bm = controller.getBindingModel();
@@ -363,7 +359,7 @@ public void failsOnMacCocoatestConflictRemove() throws Exception {
@Test
public void failsOnMacCocoatestConflictRestore() throws Exception {
final KeyController controller = new KeyController();
- controller.init(getWorkbench());
+ controller.init(PlatformUI.getWorkbench());
final ConflictModel cf = controller.getConflictModel();
final BindingModel bm = controller.getBindingModel();
@@ -397,7 +393,7 @@ public void failsOnMacCocoatestConflictRestore() throws Exception {
@Test
public void testUpdateContext() throws Exception {
final KeyController controller = new KeyController();
- controller.init(getWorkbench());
+ controller.init(PlatformUI.getWorkbench());
final ContextModel cm = controller.getContextModel();
final ContextElement dialog = cm
@@ -443,7 +439,7 @@ public void testUpdateContext() throws Exception {
@Test
public void failsOnWinAndLinuxWith16VMtestUpdateKeySequence() throws Exception {
final KeyController controller = new KeyController();
- controller.init(getWorkbench());
+ controller.init(PlatformUI.getWorkbench());
final ContextModel cm = controller.getContextModel();
final ContextElement dialog = cm
@@ -526,7 +522,7 @@ public void failsOnWinAndLinuxWith16VMtestUpdateKeySequence() throws Exception {
@Test
public void testCreateKeyBinding() throws Exception {
final KeyController controller = new KeyController();
- controller.init(getWorkbench());
+ controller.init(PlatformUI.getWorkbench());
final ContextModel cm = controller.getContextModel();
final ContextElement window = cm
@@ -571,13 +567,11 @@ public void testCreateKeyBinding() throws Exception {
@Test
public void testChangeSchemes() throws Exception {
final KeyController controller = new KeyController();
- controller.init(getWorkbench());
+ controller.init(PlatformUI.getWorkbench());
SchemeModel sm = controller.getSchemeModel();
SchemeElement emacsScheme = null;
- Iterator i = sm.getSchemes().iterator();
- while (i.hasNext()) {
- SchemeElement e = i.next();
+ for (SchemeElement e : sm.getSchemes()) {
if (e.getId().equals(SCHEME_EMACS_ID)) {
emacsScheme = e;
}
@@ -619,14 +613,12 @@ public void testChangeSchemes() throws Exception {
@Test
public void testChangeSchemesTwice() throws Exception {
final KeyController controller = new KeyController();
- controller.init(getWorkbench());
+ controller.init(PlatformUI.getWorkbench());
SchemeModel sm = controller.getSchemeModel();
SchemeElement emacsScheme = null;
SchemeElement defaultScheme = null;
- Iterator i = sm.getSchemes().iterator();
- while (i.hasNext()) {
- SchemeElement e = i.next();
+ for (SchemeElement e : sm.getSchemes()) {
if (e.getId().equals(SCHEME_EMACS_ID)) {
emacsScheme = e;
} else if (e.getId().equals(
@@ -640,9 +632,7 @@ public void testChangeSchemesTwice() throws Exception {
BindingModel bm = controller.getBindingModel();
BindingElement quickSwitch = null;
int quickCount = 0;
- Iterator i2 = bm.getBindings().iterator();
- while (i2.hasNext()) {
- BindingElement e = i2.next();
+ for (BindingElement e : bm.getBindings()) {
if (e.getId().equals(ID_QUICK_SWITCH)) {
quickSwitch = e;
quickCount++;
@@ -653,11 +643,9 @@ public void testChangeSchemesTwice() throws Exception {
sm.setSelectedElement(emacsScheme);
- i2 = bm.getBindings().iterator();
ArrayList quick2 = new ArrayList<>();
boolean foundOriginal = false;
- while (i2.hasNext()) {
- BindingElement e = i2.next();
+ for (BindingElement e : bm.getBindings()) {
if (e.getId().equals(ID_QUICK_SWITCH)) {
quick2.add(e);
if (e == quickSwitch) {
@@ -670,11 +658,9 @@ public void testChangeSchemesTwice() throws Exception {
sm.setSelectedElement(defaultScheme);
- i2 = bm.getBindings().iterator();
quick2.clear();
foundOriginal = false;
- while (i2.hasNext()) {
- BindingElement e = i2.next();
+ for (BindingElement e : bm.getBindings()) {
if (e.getId().equals(ID_QUICK_SWITCH)) {
quick2.add(e);
if (e == quickSwitch) {
@@ -689,14 +675,12 @@ public void testChangeSchemesTwice() throws Exception {
@Test
public void testSchemesWithNoDefaultBinding() throws Exception {
final KeyController controller = new KeyController();
- controller.init(getWorkbench());
+ controller.init(PlatformUI.getWorkbench());
final SchemeModel sm = controller.getSchemeModel();
SchemeElement emacsScheme = null;
SchemeElement defaultScheme = null;
- Iterator i = sm.getSchemes().iterator();
- while (i.hasNext()) {
- SchemeElement e = i.next();
+ for (SchemeElement e : sm.getSchemes()) {
if (e.getId().equals(SCHEME_EMACS_ID)) {
emacsScheme = e;
} else if (e.getId().equals(
@@ -726,14 +710,12 @@ public void testSchemesWithNoDefaultBinding() throws Exception {
@Test
public void testCopyBinding() throws Exception {
final KeyController controller = new KeyController();
- controller.init(getWorkbench());
+ controller.init(PlatformUI.getWorkbench());
BindingModel bm = controller.getBindingModel();
BindingElement activateEditor = null;
ArrayList activates = new ArrayList<>();
- Iterator i = bm.getBindings().iterator();
- while (i.hasNext()) {
- BindingElement be = i.next();
+ for (BindingElement be : bm.getBindings()) {
if (be.getId().equals(ID_ACTIVATE_EDITOR)) {
activates.add(be);
if (be.getModelObject() instanceof KeyBinding) {
@@ -747,9 +729,7 @@ public void testCopyBinding() throws Exception {
bm.setSelectedElement(activateEditor);
bm.copy();
activates.clear();
- i = bm.getBindings().iterator();
- while (i.hasNext()) {
- BindingElement be = i.next();
+ for (BindingElement be : bm.getBindings()) {
if (be.getId().equals(ID_ACTIVATE_EDITOR)) {
activates.add(be);
}
@@ -760,14 +740,12 @@ public void testCopyBinding() throws Exception {
@Test
public void testCopyCommand() throws Exception {
final KeyController controller = new KeyController();
- controller.init(getWorkbench());
+ controller.init(PlatformUI.getWorkbench());
BindingModel bm = controller.getBindingModel();
BindingElement conflict4 = null;
ArrayList activates = new ArrayList<>();
- Iterator i = bm.getBindings().iterator();
- while (i.hasNext()) {
- BindingElement be = i.next();
+ for (BindingElement be : bm.getBindings()) {
if (be.getId().equals(ID_CMD_CONFLICT4)) {
activates.add(be);
if (be.getModelObject() instanceof ParameterizedCommand) {
@@ -781,9 +759,7 @@ public void testCopyCommand() throws Exception {
bm.setSelectedElement(conflict4);
bm.copy();
activates.clear();
- i = bm.getBindings().iterator();
- while (i.hasNext()) {
- BindingElement be = i.next();
+ for (BindingElement be : bm.getBindings()) {
if (be.getId().equals(ID_CMD_CONFLICT4)) {
activates.add(be);
}
@@ -794,7 +770,7 @@ public void testCopyCommand() throws Exception {
@Test
public void testRemoveActiveEditor() throws Exception {
final KeyController controller = new KeyController();
- controller.init(getWorkbench());
+ controller.init(PlatformUI.getWorkbench());
BindingModel bm = controller.getBindingModel();
BindingElement activateEditor = getBindingElement(bm,
@@ -812,7 +788,7 @@ public void testRemoveActiveEditor() throws Exception {
@Test
public void testRestoreBinding() throws Exception {
final KeyController controller = new KeyController();
- controller.init(getWorkbench());
+ controller.init(PlatformUI.getWorkbench());
BindingModel bm = controller.getBindingModel();
BindingElement activateEditor = getBindingElement(bm,
@@ -832,9 +808,7 @@ public void testRestoreBinding() throws Exception {
assertEquals(Integer.valueOf(Binding.USER), activeTwo.getUserDelta());
ArrayList activates = new ArrayList<>();
- Iterator i = bm.getBindings().iterator();
- while (i.hasNext()) {
- BindingElement be = i.next();
+ for (BindingElement be : bm.getBindings()) {
if (be.getId().equals(ID_ACTIVATE_EDITOR)) {
activates.add(be);
}
@@ -844,9 +818,7 @@ public void testRestoreBinding() throws Exception {
bm.restoreBinding(controller.getContextModel());
activates = new ArrayList<>();
- i = bm.getBindings().iterator();
- while (i.hasNext()) {
- BindingElement be = i.next();
+ for (BindingElement be : bm.getBindings()) {
if (be.getId().equals(ID_ACTIVATE_EDITOR)) {
activates.add(be);
activateEditor = be;
@@ -859,7 +831,7 @@ public void testRestoreBinding() throws Exception {
@Test
public void testRestoreCommand() throws Exception {
final KeyController controller = new KeyController();
- controller.init(getWorkbench());
+ controller.init(PlatformUI.getWorkbench());
final ContextModel cm = controller.getContextModel();
final ContextElement window = cm
@@ -890,7 +862,7 @@ public void testRestoreCommand() throws Exception {
@Test
public void testRestoreContext() throws Exception {
final KeyController controller = new KeyController();
- controller.init(getWorkbench());
+ controller.init(PlatformUI.getWorkbench());
final ContextModel cm = controller.getContextModel();
final ContextElement dialog = cm
@@ -930,9 +902,7 @@ private void assertChanges(PropertyChangeEvent[] expected, List i = bm.getBindings().iterator();
- while (i.hasNext()) {
- BindingElement e = i.next();
+ for (BindingElement e : bm.getBindings()) {
if (e.getId().equals(bindingId)) {
quickAccess = e;
}
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/largefile/LargeFileLimitsPreferenceHandlerTest.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/largefile/LargeFileLimitsPreferenceHandlerTest.java
index 5cb580f1685..806f815ad4a 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/largefile/LargeFileLimitsPreferenceHandlerTest.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/largefile/LargeFileLimitsPreferenceHandlerTest.java
@@ -14,7 +14,14 @@
package org.eclipse.ui.tests.largefile;
+import static org.eclipse.ui.PlatformUI.getWorkbench;
import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
import java.io.ByteArrayInputStream;
import java.util.ArrayList;
@@ -44,7 +51,6 @@
import org.eclipse.ui.IEditorRegistry;
import org.eclipse.ui.IPathEditorInput;
import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.dialogs.PreferencesUtil;
import org.eclipse.ui.internal.LargeFileLimitsPreferenceHandler;
import org.eclipse.ui.internal.LargeFileLimitsPreferenceHandler.FileLimit;
@@ -52,17 +58,16 @@
import org.eclipse.ui.internal.LargeFileLimitsPreferenceHandler.PromptForEditor;
import org.eclipse.ui.part.FileEditorInput;
import org.eclipse.ui.tests.harness.util.UITestCase;
+import org.junit.After;
+import org.junit.Before;
import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
/**
* Tests for the large file associations preference added for bug 577289.
*
* @since 3.5
*/
-@RunWith(JUnit4.class)
-public class LargeFileLimitsPreferenceHandlerTest extends UITestCase {
+public class LargeFileLimitsPreferenceHandlerTest {
public static final String TEST_EDITOR_ID1 = "org.eclipse.ui.tests.largefile.testeditor1";
public static final String TEST_EDITOR_ID2 = "org.eclipse.ui.tests.largefile.testeditor2";
@@ -81,13 +86,11 @@ public class LargeFileLimitsPreferenceHandlerTest extends UITestCase {
private TestLogListener logListener;
public LargeFileLimitsPreferenceHandlerTest() {
- super(LargeFileLimitsPreferenceHandlerTest.class.getSimpleName());
monitor = new NullProgressMonitor();
}
- @Override
- protected void doSetUp() throws Exception {
- super.doSetUp();
+ @Before
+ public void doSetUp() throws Exception {
createTestFile();
testPromptForEditor = new TestPromptForEditor();
preferenceHandler = new LargeFileLimitsPreferenceHandler(testPromptForEditor);
@@ -109,18 +112,14 @@ private void createTestFile() throws CoreException {
temporaryFile.create(new ByteArrayInputStream(content.getBytes()), force, monitor);
}
- @Override
- protected void doTearDown() throws Exception {
- try {
- Platform.removeLogListener(logListener);
- setDefaultPreferences();
- preferenceHandler.dispose();
- deleteTestFile();
- boolean save = false;
- closeAllEditors(save);
- } finally {
- super.doTearDown();
- }
+ @After
+ public void doTearDown() throws Exception {
+ Platform.removeLogListener(logListener);
+ setDefaultPreferences();
+ preferenceHandler.dispose();
+ deleteTestFile();
+ boolean save = false;
+ closeAllEditors(save);
}
private void deleteTestFile() throws CoreException {
@@ -462,7 +461,7 @@ private void assertEditorIsChosen(String testEditorId) {
}
private static void waitForJobs() {
- waitForJobs(250, 2_000);
+ UITestCase.waitForJobs(250, 2_000);
}
private static void setDefaultPreferences() {
@@ -483,7 +482,7 @@ private static void assertEmptyArray(String failMessage, String[] configuredExte
}
private static void closeAllEditors(boolean save) {
- PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().closeAllEditors(save);
+ getWorkbench().getActiveWorkbenchWindow().getActivePage().closeAllEditors(save);
}
private static class TestLogListener implements ILogListener {
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/markers/Bug75909Test.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/markers/Bug75909Test.java
index 3dc0c403a7b..d0540fdd73d 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/markers/Bug75909Test.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/markers/Bug75909Test.java
@@ -34,8 +34,6 @@
import org.eclipse.ui.views.markers.internal.ProblemFilter;
import org.junit.Ignore;
import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
/**
* Testing for https://bugs.eclipse.org/bugs/show_bug.cgi?id=75909 .
@@ -48,7 +46,6 @@
*
* @since 3.1
*/
-@RunWith(JUnit4.class)
@Ignore
public class Bug75909Test {
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/markers/DeclarativeFilterActivityTest.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/markers/DeclarativeFilterActivityTest.java
index a09e3524fe2..e0ba3ed28c7 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/markers/DeclarativeFilterActivityTest.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/markers/DeclarativeFilterActivityTest.java
@@ -13,6 +13,10 @@
*******************************************************************************/
package org.eclipse.ui.tests.markers;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
import java.util.HashSet;
import java.util.Set;
@@ -20,21 +24,14 @@
import org.eclipse.ui.activities.IActivity;
import org.eclipse.ui.views.markers.internal.ProblemFilter;
import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
-@RunWith(JUnit4.class)
+/**
+ * The DeclarativeProblemTest is a test of the declarative filters.
+ */
public class DeclarativeFilterActivityTest extends DeclarativeFilterTest {
static final String PROBLEM_FILTER_TEST_ACTIVITY = "problemFilterTestActivity";
- /**
- * The DeclarativeProblemTest is a test of the declarative filters.
- */
- public DeclarativeFilterActivityTest() {
- super(DeclarativeFilterActivityTest.class.getSimpleName());
- }
-
/**
* Check that the activities are enabling as expected.
*/
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/markers/DeclarativeFilterDeclarationTest.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/markers/DeclarativeFilterDeclarationTest.java
index d6a8c2b3a65..399a2255554 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/markers/DeclarativeFilterDeclarationTest.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/markers/DeclarativeFilterDeclarationTest.java
@@ -12,26 +12,22 @@
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.ui.tests.markers;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
import java.util.List;
import org.eclipse.ui.views.markers.internal.MarkerFilter;
import org.eclipse.ui.views.markers.internal.MarkerType;
import org.eclipse.ui.views.markers.internal.ProblemFilter;
import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
-@RunWith(JUnit4.class)
+/**
+ * The DeclarativeFilterActivityTest is a test that the declarative filters are
+ * removed by activities
+ */
public class DeclarativeFilterDeclarationTest extends DeclarativeFilterTest {
- /**
- * The DeclarativeFilterActivityTest is a test that the
- * declarative filters are removed by activities
- */
- public DeclarativeFilterDeclarationTest() {
- super(DeclarativeFilterDeclarationTest.class.getSimpleName());
- }
-
/**
* Test the filter on any error.
*/
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/markers/DeclarativeFilterTest.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/markers/DeclarativeFilterTest.java
index 88ced0d26ae..5d11dbe031b 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/markers/DeclarativeFilterTest.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/markers/DeclarativeFilterTest.java
@@ -13,13 +13,10 @@
*******************************************************************************/
package org.eclipse.ui.tests.markers;
-import java.util.Iterator;
-
-import org.eclipse.ui.tests.harness.util.UITestCase;
import org.eclipse.ui.views.markers.internal.MarkerSupportRegistry;
import org.eclipse.ui.views.markers.internal.ProblemFilter;
-public abstract class DeclarativeFilterTest extends UITestCase {
+public abstract class DeclarativeFilterTest {
public static final String PROBLEM_TEST_ON_PROBLEM = "problemTest.onProblem";
@@ -35,23 +32,14 @@ public abstract class DeclarativeFilterTest extends UITestCase {
protected static final String PROBLEM_TEST_ON_ANY_ERROR = "problemTest.onAnyError";
- /**
- * Create a new instance of the receiver.
- */
- public DeclarativeFilterTest(String testName) {
- super(testName);
- }
-
/**
* Get the filter with id.
*
* @return ProblemFilter
*/
protected ProblemFilter getFilter(String id) {
- Iterator filters = MarkerSupportRegistry.getInstance()
- .getRegisteredFilters().iterator();
- while (filters.hasNext()) {
- ProblemFilter filter = filters.next();
+ for (ProblemFilter filter : MarkerSupportRegistry.getInstance()
+ .getRegisteredFilters()) {
if (filter.getId().equals(id)) {
return filter;
}
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/markers/MarkerSortUtilTest.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/markers/MarkerSortUtilTest.java
index e00293717fd..dedfbc3694c 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/markers/MarkerSortUtilTest.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/markers/MarkerSortUtilTest.java
@@ -14,36 +14,20 @@
package org.eclipse.ui.tests.markers;
+import static org.junit.Assert.fail;
+
import java.util.Arrays;
import java.util.Comparator;
import org.eclipse.ui.internal.views.markers.MarkerSortUtil;
import org.eclipse.ui.internal.views.markers.MockMarkerEntry;
-import org.eclipse.ui.tests.harness.util.UITestCase;
import org.eclipse.ui.views.markers.MarkerItem;
import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
-/**
- * @since 3.5
- */
-@RunWith(JUnit4.class)
-public class MarkerSortUtilTest extends UITestCase {
+public class MarkerSortUtilTest {
private static final int ARRAYSIZE = 100000;
- public MarkerSortUtilTest() {
- super("MarkerSortUtilTest");
- }
-
- @Override
- protected void doSetUp() throws Exception {
- // TODO Auto-generated method stub
- super.doSetUp();
-
- }
-
@Test
public void testPartialSort() {
sortToLimit(ARRAYSIZE,ARRAYSIZE/2);
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/markers/MarkerSupportRegistryTests.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/markers/MarkerSupportRegistryTests.java
index 25d7c61afa0..802179a9932 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/markers/MarkerSupportRegistryTests.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/markers/MarkerSupportRegistryTests.java
@@ -14,26 +14,18 @@
package org.eclipse.ui.tests.markers;
-import org.eclipse.ui.tests.harness.util.UITestCase;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
import org.eclipse.ui.views.markers.internal.MarkerSupportRegistry;
import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
/**
* MarkerSupportTests are tests for the markerSupport extension
* point.
* @since 3.2
*/
-@RunWith(JUnit4.class)
-public class MarkerSupportRegistryTests extends UITestCase {
-
- /**
- * Create an instance of the receiver.
- */
- public MarkerSupportRegistryTests() {
- super(MarkerSupportRegistryTests.class.getSimpleName());
- }
+public class MarkerSupportRegistryTests {
/**
* Test that the marker categories expected are found.
@@ -51,8 +43,8 @@ public void testMarkerCategories() {
private void doTestCategory(String string) {
String category = MarkerSupportRegistry.getInstance().getCategory(
string);
- assertFalse("No Category for" + string, category == null);
- assertTrue("Wrong Category for" + string, category.equals("Test Markers"));
+ assertNotNull("No Category for" + string, category);
+ assertEquals("Wrong Category for" + string, "Test Markers", category);
}
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/markers/MarkerSupportViewTest.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/markers/MarkerSupportViewTest.java
index ada02ad47e2..8faac793ca0 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/markers/MarkerSupportViewTest.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/markers/MarkerSupportViewTest.java
@@ -12,9 +12,16 @@
package org.eclipse.ui.tests.markers;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
import java.lang.reflect.Field;
import java.lang.reflect.Method;
+import java.util.Arrays;
import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
import org.eclipse.jface.viewers.CheckboxTableViewer;
import org.eclipse.swt.widgets.Button;
@@ -24,19 +31,16 @@
import org.eclipse.ui.internal.views.markers.ExtendedMarkersView;
import org.eclipse.ui.internal.views.markers.FiltersConfigurationDialog;
import org.eclipse.ui.internal.views.markers.MarkerContentGenerator;
-import org.eclipse.ui.tests.harness.util.UITestCase;
+import org.eclipse.ui.views.markers.MarkerField;
import org.eclipse.ui.views.markers.MarkerSupportView;
+import org.eclipse.ui.views.markers.internal.ContentGeneratorDescriptor;
+import org.eclipse.ui.views.markers.internal.MarkerGroup;
import org.eclipse.ui.views.markers.internal.MarkerMessages;
+import org.eclipse.ui.views.markers.internal.MarkerSupportRegistry;
+import org.eclipse.ui.views.markers.internal.MarkerType;
import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
-
-@RunWith(JUnit4.class)
-public class MarkerSupportViewTest extends UITestCase {
- public MarkerSupportViewTest() {
- super(MarkerSupportViewTest.class.getSimpleName());
- }
+public class MarkerSupportViewTest {
private static final String PROBLEM_VIEW_ID = "org.eclipse.ui.views.ProblemView";
@@ -125,6 +129,69 @@ public void limitDisabled() throws Exception {
assertFalse(isLimitEnabled);
}
+ @Test
+ public void markerContentGeneratorExtensionLoaded() throws Exception {
+ MarkerSupportView view = (MarkerSupportView) PlatformUI.getWorkbench().getActiveWorkbenchWindow()
+ .getActivePage().showView(PROBLEM_VIEW_ID);
+
+ MarkerContentGenerator generator = getMarkerContentGenerator(view);
+ ContentGeneratorDescriptor descriptor = MarkerSupportRegistry.getInstance()
+ .getContentGenDescriptor(generator.getId());
+
+ assertNotNull(descriptor);
+
+ MarkerField[] allFields = descriptor.getAllFields();
+ List allFieldNames = mapToNames(allFields);
+ String fieldName1 = "Problem Key";
+ String fieldName2 = "Problem Key V2";
+
+ assertTrue(
+ "Expected loading marker field '" + fieldName1
+ + "' from marker content generator extensions, but got only " + allFieldNames,
+ allFieldNames.contains(fieldName1));
+ assertTrue(
+ "Expected recursively loading marker field '" + fieldName2
+ + "' from marker content generator extensions, but got only " + allFieldNames,
+ allFieldNames.contains(fieldName2));
+
+ MarkerField[] initiallyVisibleFields = descriptor.getInitialVisible();
+ List initiallyVisibleFieldNames = mapToNames(initiallyVisibleFields);
+
+ assertTrue("Expected marker field '" + fieldName1
+ + "' from marker content generator extension being visible according to 'visible' attribute in the extension,"
+ + " but only the following marker fields are visible " + initiallyVisibleFieldNames,
+ initiallyVisibleFieldNames.contains(fieldName1));
+ assertFalse("Expected marker field '" + fieldName2
+ + "' from marker content generator extension being not visible according to 'visible' attribute in the extension,"
+ + " but the following marker fields are visible " + initiallyVisibleFieldNames,
+ initiallyVisibleFieldNames.contains(fieldName2));
+
+ String markerTypeId = "org.eclipse.ui.tests.markers.artificial.problem";
+ MarkerType markerTypeFromExtension = descriptor.getType(markerTypeId);
+ List markerTypeIds = descriptor.getMarkerTypes().stream().map(MarkerType::getId).toList();
+
+ assertNotNull("Marker type with id '" + markerTypeId + "' not loaded from marker content generator extension.",
+ markerTypeFromExtension);
+ assertTrue("Expected marker type id '" + markerTypeId + "' being in marker types list, but we have only "
+ + markerTypeIds, markerTypeIds.contains(markerTypeId));
+
+ Collection groups = descriptor.getMarkerGroups();
+ List groupIds = groups.stream().map(MarkerGroup::getId).toList();
+ String groupId = "org.eclipse.ui.tests.test.extended";
+
+ assertTrue("Expected loading group id '" + groupId
+ + "' from marker content generator extension, but got only the following group ids: " + groupIds,
+ groupIds.contains(groupId));
+ }
+
+ private List mapToNames(MarkerField[] markerFields) {
+ if (markerFields == null || markerFields.length == 0) {
+ return Collections.emptyList();
+ }
+
+ return Arrays.stream(markerFields).map(mf -> mf.getName()).toList();
+ }
+
public static MarkerContentGenerator getMarkerContentGenerator(MarkerSupportView view) {
MarkerContentGenerator generator = null;
try {
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/markers/MarkerTesterTest.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/markers/MarkerTesterTest.java
index 4dd070791bd..4b81fe3ba22 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/markers/MarkerTesterTest.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/markers/MarkerTesterTest.java
@@ -14,6 +14,8 @@
package org.eclipse.ui.tests.markers;
+import static org.junit.Assert.assertEquals;
+
import java.util.HashMap;
import java.util.Map;
@@ -25,29 +27,17 @@
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.ui.tests.harness.util.UITestCase;
+import org.junit.After;
+import org.junit.Before;
import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
-/**
- *
- * @since 3.5
- * @author Prakash G.R.
- */
-@RunWith(JUnit4.class)
-public class MarkerTesterTest extends UITestCase {
+public class MarkerTesterTest {
private static final String MARKER_NAMESPACE = "org.eclipse.ui.ide.marker";
private IProject project;
- public MarkerTesterTest() {
- super(MarkerTesterTest.class.getSimpleName());
- }
-
- @Override
- protected void doSetUp() throws Exception {
- super.doSetUp();
+ @Before
+ public void doSetUp() throws Exception {
project = ResourcesPlugin.getWorkspace().getRoot().getProject("tests");
if (!project.exists()) {
project.create(null);
@@ -58,9 +48,8 @@ protected void doSetUp() throws Exception {
}
}
- @Override
- protected void doTearDown() throws Exception {
- super.doTearDown();
+ @After
+ public void doTearDown() throws Exception {
if (project.exists()) {
project.delete(true, null);
}
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/markers/MarkerTypeTests.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/markers/MarkerTypeTests.java
new file mode 100644
index 00000000000..9f03f537bb1
--- /dev/null
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/markers/MarkerTypeTests.java
@@ -0,0 +1,141 @@
+/*******************************************************************************
+ * Copyright (c) 2024 Enda O'Brien 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
+ *
+ * Contributors: Enda O'Brien, Pilz Ireland - PR #144
+ *******************************************************************************/
+package org.eclipse.ui.tests.markers;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import java.lang.reflect.Field;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashSet;
+
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.internal.views.markers.ExtendedMarkersView;
+import org.eclipse.ui.internal.views.markers.MarkerContentGenerator;
+import org.eclipse.ui.tests.NoApplicationAttribTestView;
+import org.eclipse.ui.tests.SubTypeOnlyTestView;
+import org.eclipse.ui.tests.TypeAndSubTypeTestView;
+import org.eclipse.ui.tests.TypeOnlyTestView;
+import org.eclipse.ui.views.markers.MarkerSupportView;
+import org.eclipse.ui.views.markers.internal.ContentGeneratorDescriptor;
+import org.eclipse.ui.views.markers.internal.MarkerType;
+import org.eclipse.ui.views.markers.internal.MarkerTypesModel;
+import org.junit.Test;
+
+public class MarkerTypeTests {
+
+ static final String PROBLEM_MARKER = "org.eclipse.core.resources.problemmarker";
+
+ @Test
+ public void canIncludeTypeOnly() throws Exception {
+ MarkerSupportView view = (MarkerSupportView) PlatformUI.getWorkbench().getActiveWorkbenchWindow()
+ .getActivePage().showView(TypeOnlyTestView.ID);
+
+ MarkerContentGenerator generator = getMarkerContentGenerator(view);
+ Collection filterDialogTypes = getMarkerTypes(generator);
+
+ assertEquals(1, filterDialogTypes.size());
+ assertEquals(PROBLEM_MARKER, filterDialogTypes.stream().map(type -> type.getId()).findFirst().get());
+ }
+
+ @Test
+ public void canIncludeTypeAndSubTypes() throws Exception {
+ MarkerSupportView view = (MarkerSupportView) PlatformUI.getWorkbench().getActiveWorkbenchWindow()
+ .getActivePage().showView(TypeAndSubTypeTestView.ID);
+
+ MarkerContentGenerator generator = getMarkerContentGenerator(view);
+ Collection filterDialogTypes = getMarkerTypes(generator);
+
+ Collection markerTypes = new HashSet<>();
+ markerTypes.add(MarkerTypesModel.getInstance().getType(PROBLEM_MARKER));
+ markerTypes.addAll(Arrays.asList(MarkerTypesModel.getInstance().getType(PROBLEM_MARKER).getAllSubTypes()));
+
+ assertEquals(markerTypes.size(), filterDialogTypes.size());
+ assertEquals(PROBLEM_MARKER, filterDialogTypes.stream().map(type -> type.getId())
+ .filter(s -> s.equals(PROBLEM_MARKER)).findFirst().get());
+
+ for (MarkerType type : markerTypes) {
+ assertTrue(filterDialogTypes.contains(type));
+ }
+ }
+
+ @Test
+ public void canIncludeSubtypesOnly() throws Exception {
+ MarkerSupportView view = (MarkerSupportView) PlatformUI.getWorkbench().getActiveWorkbenchWindow()
+ .getActivePage().showView(SubTypeOnlyTestView.ID);
+
+ MarkerContentGenerator generator = getMarkerContentGenerator(view);
+ Collection filterDialogTypes = getMarkerTypes(generator);
+
+ Collection markerTypes = new HashSet<>();
+ markerTypes.addAll(Arrays.asList(MarkerTypesModel.getInstance().getType(PROBLEM_MARKER).getAllSubTypes()));
+
+ assertEquals(markerTypes.size(), filterDialogTypes.size());
+ assertTrue(PROBLEM_MARKER, filterDialogTypes.stream().map(type -> type.getId())
+ .filter(s -> s.equals(PROBLEM_MARKER)).findFirst().isEmpty());
+ for (MarkerType type : markerTypes) {
+ assertTrue(filterDialogTypes.contains(type));
+ }
+ }
+
+ @Test
+ public void typeAndSubTypesIsDefault() throws Exception {
+ MarkerSupportView view = (MarkerSupportView) PlatformUI.getWorkbench().getActiveWorkbenchWindow()
+ .getActivePage().showView(NoApplicationAttribTestView.ID);
+
+ MarkerContentGenerator generator = getMarkerContentGenerator(view);
+ Collection filterDialogTypes = getMarkerTypes(generator);
+
+ Collection markerTypes = new HashSet<>();
+ markerTypes.add(MarkerTypesModel.getInstance().getType(PROBLEM_MARKER));
+ markerTypes.addAll(Arrays.asList(MarkerTypesModel.getInstance().getType(PROBLEM_MARKER).getAllSubTypes()));
+
+ assertEquals(markerTypes.size(), filterDialogTypes.size());
+ assertEquals(PROBLEM_MARKER, filterDialogTypes.stream().map(type -> type.getId())
+ .filter(s -> s.equals(PROBLEM_MARKER)).findFirst().get());
+
+ for (MarkerType type : markerTypes) {
+ assertTrue(filterDialogTypes.contains(type));
+ }
+ }
+
+ public static MarkerContentGenerator getMarkerContentGenerator(MarkerSupportView view) {
+ MarkerContentGenerator generator = null;
+ try {
+ Field fieldGenerator = ExtendedMarkersView.class.getDeclaredField("generator");
+ fieldGenerator.setAccessible(true);
+ generator = (MarkerContentGenerator) fieldGenerator.get(view);
+ } catch (NoSuchFieldException | SecurityException | IllegalArgumentException | IllegalAccessException e) {
+ }
+ return generator;
+ }
+
+ @SuppressWarnings("unchecked")
+ public static Collection getMarkerTypes(MarkerContentGenerator generator) {
+ Collection selectedTypesCollection = null;
+ try {
+ Field generatorDescriptor = MarkerContentGenerator.class.getDeclaredField("generatorDescriptor");
+ generatorDescriptor.setAccessible(true);
+
+ ContentGeneratorDescriptor contentGeneratorDescriptor = (ContentGeneratorDescriptor) generatorDescriptor
+ .get(generator);
+
+ Field markerTypesField = ContentGeneratorDescriptor.class.getDeclaredField("markerTypes");
+ markerTypesField.setAccessible(true);
+
+ selectedTypesCollection = (Collection) markerTypesField.get(contentGeneratorDescriptor);
+ } catch (NoSuchFieldException | SecurityException | IllegalArgumentException | IllegalAccessException e) {
+ }
+ return selectedTypesCollection;
+ }
+}
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/markers/MarkerViewTests.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/markers/MarkerViewTests.java
index 77782ed8ef4..dcfd5a3db12 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/markers/MarkerViewTests.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/markers/MarkerViewTests.java
@@ -19,40 +19,23 @@
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.tests.harness.util.UITestCase;
import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
/**
* MarkerViewTests are the tests for the marker view.
*
* @since 3.4
*/
-@RunWith(JUnit4.class)
-public class MarkerViewTests extends UITestCase {
-
- /**
- * Create a new instance of the receiver.
- */
- public MarkerViewTests() {
- super(MarkerViewTests.class.getSimpleName());
- }
+public class MarkerViewTests {
@Test
- public void testOpenView() {
- IWorkbenchWindow window = PlatformUI.getWorkbench()
- .getActiveWorkbenchWindow();
+ public void testOpenView() throws PartInitException {
+ IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
IWorkbenchPage page = window.getActivePage();
- try {
- page.showView(IPageLayout.ID_BOOKMARKS);
- page.showView(IPageLayout.ID_PROBLEM_VIEW);
- page.showView(IPageLayout.ID_TASK_LIST);
- } catch (PartInitException e) {
- assertTrue(e.getLocalizedMessage(), false);
- return;
- }
+ page.hideView(page.showView(IPageLayout.ID_BOOKMARKS));
+ page.hideView(page.showView(IPageLayout.ID_PROBLEM_VIEW));
+ page.hideView(page.showView(IPageLayout.ID_TASK_LIST));
}
}
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/markers/MarkerViewUtilTest.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/markers/MarkerViewUtilTest.java
index 599f47e29fe..129b4589fea 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/markers/MarkerViewUtilTest.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/markers/MarkerViewUtilTest.java
@@ -13,6 +13,8 @@
******************************************************************************/
package org.eclipse.ui.tests.markers;
+import static org.junit.Assert.assertEquals;
+
import org.eclipse.core.resources.IMarker;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.ResourcesPlugin;
@@ -22,32 +24,22 @@
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.tests.harness.util.UITestCase;
import org.eclipse.ui.views.markers.MarkerViewUtil;
+import org.junit.After;
+import org.junit.Before;
import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
/**
* MarkerViewUtilTest are the test for the marker view util.
*
* @since 3.13
*/
-@RunWith(JUnit4.class)
-public class MarkerViewUtilTest extends UITestCase {
+public class MarkerViewUtilTest {
private IProject project;
- /**
- * Create a new instance of the receiver.
- */
- public MarkerViewUtilTest() {
- super(MarkerViewUtilTest.class.getSimpleName());
- }
-
- @Override
- protected void doSetUp() throws Exception {
- super.doSetUp();
+ @Before
+ public void doSetUp() throws Exception {
project = ResourcesPlugin.getWorkspace().getRoot().getProject("tests");
if (!project.exists()) {
project.create(null);
@@ -58,12 +50,11 @@ protected void doSetUp() throws Exception {
}
}
- @Override
- protected void doTearDown() throws Exception {
+ @After
+ public void doTearDown() throws Exception {
if (project.exists()) {
project.delete(true, null);
}
- super.doTearDown();
}
@Test
@@ -91,6 +82,7 @@ public void testShowMarkers() throws CoreException {
boolean visible = page.isPartVisible(part);
assertEquals(true, result);
assertEquals(true, visible);
+ page.hideView(part);
result = MarkerViewUtil.showMarkers(page,
new IMarker[] { someBookmarkMarker, someProblemMarker, someTaskMarker }, true);
@@ -98,6 +90,7 @@ public void testShowMarkers() throws CoreException {
visible = page.isPartVisible(part);
assertEquals(true, result);
assertEquals(true, visible);
+ page.hideView(part);
result = MarkerViewUtil.showMarkers(page,
new IMarker[] { someProblemMarker, someTaskMarker, someBookmarkMarker }, true);
@@ -112,5 +105,6 @@ public void testShowMarkers() throws CoreException {
visible = page.isPartVisible(part);
assertEquals(true, result);
assertEquals(true, visible);
+ page.hideView(part);
}
}
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/markers/MarkersViewColumnSizeTest.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/markers/MarkersViewColumnSizeTest.java
index b3c6feddcb2..657632ecd44 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/markers/MarkersViewColumnSizeTest.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/markers/MarkersViewColumnSizeTest.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2008, 2012 IBM Corporation and others.
+ * Copyright (c) 2008, 2024 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -52,11 +52,11 @@ public void testColumnCreate() {
IWorkbenchWindow window = PlatformUI.getWorkbench()
.getActiveWorkbenchWindow();
if (window == null) {
- assertTrue("Could not get a workbench window", false);
+ fail("Could not get a workbench window");
}
IWorkbenchPage page = window.getActivePage();
if (page == null) {
- assertTrue("Could not get a workbench page", false);
+ fail("Could not get a workbench page");
}
MarkersTestMarkersView problemView;
@@ -64,7 +64,7 @@ public void testColumnCreate() {
problemView = (MarkersTestMarkersView) page
.showView("org.eclipse.ui.tests.markerTests");
} catch (PartInitException e) {
- assertTrue(e.getLocalizedMessage(), false);
+ fail(e.getLocalizedMessage());
return;
}
@@ -77,11 +77,11 @@ public void testColumnRestore() {
IWorkbenchWindow window = PlatformUI.getWorkbench()
.getActiveWorkbenchWindow();
if (window == null) {
- assertTrue("Could not get a workbench window", false);
+ fail("Could not get a workbench window");
}
IWorkbenchPage page = window.getActivePage();
if (page == null) {
- assertTrue("Could not get a workbench page", false);
+ fail("Could not get a workbench page");
}
MarkersTestMarkersView problemView;
@@ -89,7 +89,7 @@ public void testColumnRestore() {
problemView = (MarkersTestMarkersView) page
.showView("org.eclipse.ui.tests.markerTests");
} catch (PartInitException e) {
- assertTrue(e.getLocalizedMessage(), false);
+ fail(e.getLocalizedMessage());
return;
}
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/markers/ProblemKeyMarkerField.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/markers/ProblemKeyMarkerField.java
new file mode 100644
index 00000000000..cfdcdba4822
--- /dev/null
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/markers/ProblemKeyMarkerField.java
@@ -0,0 +1,16 @@
+package org.eclipse.ui.tests.markers;
+
+import org.eclipse.ui.views.markers.MarkerField;
+import org.eclipse.ui.views.markers.MarkerItem;
+
+public class ProblemKeyMarkerField extends MarkerField {
+
+ @Override
+ public String getValue(MarkerItem item) {
+ if (item == null) {
+ return "";
+ }
+ return item.getAttributeValue("problemKey", "");
+ }
+
+}
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/markers/ResourceMappingMarkersTest.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/markers/ResourceMappingMarkersTest.java
index bd938b5bf3f..5b985976b4a 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/markers/ResourceMappingMarkersTest.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/markers/ResourceMappingMarkersTest.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2005, 2009 IBM Corporation and others.
+ * Copyright (c) 2005, 2024 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -56,7 +56,7 @@ public void testResourceMappings() {
view = (ResourceMappingTestView) page
.showView("org.eclipse.ui.tests.resourceMappingView");
} catch (PartInitException e) {
- assertTrue(e.getLocalizedMessage(), false);
+ fail(e.getLocalizedMessage());
return;
}
@@ -65,7 +65,7 @@ public void testResourceMappings() {
problemView = (MarkersTestMarkersView) page
.showView("org.eclipse.ui.tests.markerTests");
} catch (PartInitException e) {
- assertTrue(e.getLocalizedMessage(), false);
+ fail(e.getLocalizedMessage());
return;
}
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/multieditor/MultiEditorTest.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/multieditor/MultiEditorTest.java
index 27241794b09..bd2244b36ab 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/multieditor/MultiEditorTest.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/multieditor/MultiEditorTest.java
@@ -13,6 +13,15 @@
*******************************************************************************/
package org.eclipse.ui.tests.multieditor;
+import static org.eclipse.ui.PlatformUI.getWorkbench;
+import static org.eclipse.ui.tests.harness.util.UITestCase.openTestWindow;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
import java.io.IOException;
import java.net.URL;
import java.util.ArrayList;
@@ -52,20 +61,15 @@
import org.eclipse.ui.part.MultiEditorInput;
import org.eclipse.ui.tests.TestPlugin;
import org.eclipse.ui.tests.api.MockEditorPart;
-import org.eclipse.ui.tests.harness.util.UITestCase;
+import org.junit.Before;
import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
-
-import junit.framework.TestSuite;
/**
* Test MultiEditor behaviour to highlight some of the broken functionality.
*
* @since 3.1
*/
-@RunWith(JUnit4.class)
-public class MultiEditorTest extends UITestCase {
+public class MultiEditorTest {
private static final String ACTION_TOOLTIP = "MultiEditorActionThing";
private static final String PROJECT_NAME = "TiledEditorProject";
@@ -108,19 +112,11 @@ public class MultiEditorTest extends UITestCase {
"updateGradient", "updateGradient", "updateGradient",
"widgetsDisposed", "dispose" };
- public static TestSuite suite() {
- return new TestSuite(MultiEditorTest.class);
- }
-
/**
* Can catch a MultiEditor unexpect Exception on init.
*/
private EditorErrorListener fErrorListener;
- public MultiEditorTest() {
- super(MultiEditorTest.class.getSimpleName());
- }
-
/**
* Test that the test tiled editor can be opened with a basic
* MultiEditorInput with the same type of files.
@@ -532,7 +528,7 @@ private MultiEditorInput generateEditorInput(String[] simpleFiles,
IProject testProject) throws CoreException, IOException {
String[] ids = new String[simpleFiles.length];
IEditorInput[] inputs = new IEditorInput[simpleFiles.length];
- IEditorRegistry registry = fWorkbench.getEditorRegistry();
+ IEditorRegistry registry = getWorkbench().getEditorRegistry();
for (int f = 0; f < simpleFiles.length; ++f) {
IFile f1 = createFile(testProject, simpleFiles[f]);
@@ -556,10 +552,9 @@ private IFile createFile(IProject testProject, String simpleFile) throws CoreExc
/**
* Close any editors at the beginner of a test, so the test can be clean.
*/
- @Override
- protected void doSetUp() throws Exception {
- super.doSetUp();
- IWorkbenchPage page = fWorkbench.getActiveWorkbenchWindow()
+ @Before
+ public void doSetUp() throws Exception {
+ IWorkbenchPage page = getWorkbench().getActiveWorkbenchWindow()
.getActivePage();
page.closeAllEditors(false);
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/operations/MultiThreadedOperationsTests.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/operations/MultiThreadedOperationsTests.java
index b4846554c02..eed71146c7a 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/operations/MultiThreadedOperationsTests.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/operations/MultiThreadedOperationsTests.java
@@ -18,10 +18,7 @@
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.ui.tests.harness.util.UITestCase;
import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
import junit.framework.TestResult;
import junit.framework.TestSuite;
@@ -32,12 +29,7 @@
*
* @since 3.1
*/
-@RunWith(JUnit4.class)
-public class MultiThreadedOperationsTests extends UITestCase {
-
- public MultiThreadedOperationsTests() {
- super(MultiThreadedOperationsTests.class.getSimpleName());
- }
+public class MultiThreadedOperationsTests {
@Test
public void testOperationsAPIinThreads() {
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/operations/OperationsAPITest.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/operations/OperationsAPITest.java
index 24126bf87c4..e8ea646c995 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/operations/OperationsAPITest.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/operations/OperationsAPITest.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
+ * Copyright (c) 2005, 2024 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -20,6 +20,7 @@
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.core.commands.operations.AbstractOperation;
@@ -65,10 +66,6 @@ public class OperationsAPITest {
int preExec, postExec, preUndo, postUndo, preRedo, postRedo, add, remove, notOK, changed = 0;
IOperationHistoryListener listener;
- public OperationsAPITest() {
- super();
- }
-
@Before
public void setUp() throws Exception {
history = new DefaultOperationHistory();
@@ -279,7 +276,7 @@ public IStatus redo(IProgressMonitor monitor, IAdaptable uiInfo) {
history.openOperation(new TriggeredOperations(op3, history), IOperationHistory.EXECUTE);
history.closeOperation(true, true, IOperationHistory.EXECUTE);
} catch (IllegalStateException e) {
- assertTrue("IllegalStateException - trying to open an operation before a close", false);
+ fail("IllegalStateException - trying to open an operation before a close");
}
}
@@ -836,7 +833,7 @@ public IStatus proceedRedoing(IUndoableOperation op, IOperationHistory history,
history.undoOperation(op5, null, null);
assertTrue("Operation approver should run only once for direct undo", approvalCount[0]== 1);
history.redoOperation(op5, null, null);
- assertTrue("Operation approver should run only once for direct redo", approvalCount[0]== 0);
+ assertTrue("Operation approver should run only once for direct redo", approvalCount[0] == 0);
// cleanup
history.removeOperationApprover(approver);
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/operations/WorkbenchOperationHistoryTests.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/operations/WorkbenchOperationHistoryTests.java
index 23f53f78000..af9db84f4b9 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/operations/WorkbenchOperationHistoryTests.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/operations/WorkbenchOperationHistoryTests.java
@@ -14,37 +14,34 @@
package org.eclipse.ui.tests.operations;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
import org.eclipse.core.commands.operations.IOperationHistory;
import org.eclipse.core.commands.operations.IUndoContext;
import org.eclipse.core.commands.operations.IUndoableOperation;
import org.eclipse.core.commands.operations.ObjectUndoContext;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.tests.harness.util.UITestCase;
+import org.junit.After;
+import org.junit.Before;
import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
/**
* Tests the Operations Framework API.
*
* @since 3.1
*/
-@RunWith(JUnit4.class)
-public class WorkbenchOperationHistoryTests extends UITestCase {
+public class WorkbenchOperationHistoryTests {
IUndoContext context, contextA, contextB;
IOperationHistory history;
IUndoableOperation op1, op2, op3, op4, op5, op6;
- public WorkbenchOperationHistoryTests() {
- super(WorkbenchOperationHistoryTests.class.getSimpleName());
- }
- @Override
- protected void doSetUp() throws Exception {
- super.doSetUp();
+ @Before
+ public void doSetUp() throws Exception {
history = PlatformUI.getWorkbench().getOperationSupport().getOperationHistory();
context = PlatformUI.getWorkbench().getOperationSupport().getUndoContext();
contextA = new ObjectUndoContext("A");
@@ -72,10 +69,9 @@ protected void doSetUp() throws Exception {
}
- @Override
- protected void doTearDown() throws Exception {
+ @After
+ public void doTearDown() throws Exception {
history.dispose(IOperationHistory.GLOBAL_UNDO_CONTEXT, true, true, true);
- super.doTearDown();
}
@Test
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/operations/WorkspaceOperationsTests.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/operations/WorkspaceOperationsTests.java
index 179c9c2a0ce..fdd32659bc7 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/operations/WorkspaceOperationsTests.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/operations/WorkspaceOperationsTests.java
@@ -16,6 +16,13 @@
package org.eclipse.ui.tests.operations;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.IOException;
@@ -64,10 +71,9 @@
import org.eclipse.ui.ide.undo.MoveResourcesOperation;
import org.eclipse.ui.ide.undo.UpdateMarkersOperation;
import org.eclipse.ui.internal.operations.AdvancedValidationUserApprover;
-import org.eclipse.ui.tests.harness.util.UITestCase;
+import org.junit.After;
+import org.junit.Before;
import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
/**
* Tests the undo of various workspace operations. Uses the following workspace
@@ -88,8 +94,7 @@
*
* @since 3.3
*/
-@RunWith(JUnit4.class)
-public class WorkspaceOperationsTests extends UITestCase {
+public class WorkspaceOperationsTests {
IProject testProject, targetProject;
@@ -353,13 +358,8 @@ IWorkspaceRoot getWorkspaceRoot() {
}
}
- public WorkspaceOperationsTests() {
- super(WorkspaceOperationsTests.class.getSimpleName());
- }
-
- @Override
- protected void doSetUp() throws Exception {
- super.doSetUp();
+ @Before
+ public void doSetUp() throws Exception {
// Suppress validation UI
AdvancedValidationUserApprover.AUTOMATED_MODE = true;
// Project
@@ -421,8 +421,8 @@ protected void doSetUp() throws Exception {
}
- @Override
- protected void doTearDown() throws Exception {
+ @After
+ public void doTearDown() throws Exception {
testProject = (IProject) getWorkspaceRoot().findMember(
TEST_PROJECT_NAME);
if (testProject != null) {
@@ -459,8 +459,6 @@ protected void doTearDown() throws Exception {
testLinkedFile = null;
testFileInSubFolder = null;
testFileInProject = null;
-
- super.doTearDown();
}
private IWorkspace getWorkspace() {
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/preferences/FontPreferenceTestCase.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/preferences/FontPreferenceTestCase.java
index f266e813550..679ecccc80f 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/preferences/FontPreferenceTestCase.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/preferences/FontPreferenceTestCase.java
@@ -13,6 +13,11 @@
*******************************************************************************/
package org.eclipse.ui.tests.preferences;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
@@ -28,19 +33,15 @@
import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.internal.WorkbenchPlugin;
import org.eclipse.ui.plugin.AbstractUIPlugin;
-import org.eclipse.ui.tests.harness.util.UITestCase;
+import org.junit.Before;
import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
/**
* The FontPreferenceTestCase tests adding fonts to
* the preference store and what occurs if the values
* are bogus
*/
-
-@RunWith(JUnit4.class)
-public class FontPreferenceTestCase extends UITestCase {
+public class FontPreferenceTestCase {
public String BAD_FONT_DEFINITION = "BadFont-regular-10";
@@ -50,16 +51,8 @@ public class FontPreferenceTestCase extends UITestCase {
private IPreferenceStore preferenceStore;
- /**
- * Constructor for FontPreferenceTestCase.
- */
- public FontPreferenceTestCase() {
- super(FontPreferenceTestCase.class.getSimpleName());
- }
-
- @Override
- protected void doSetUp() throws Exception {
- super.doSetUp();
+ @Before
+ public void doSetUp() throws Exception {
AbstractUIPlugin plugin = WorkbenchPlugin.getDefault();
preferenceStore = plugin.getPreferenceStore();
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/preferences/ListenerRemovalTestCase.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/preferences/ListenerRemovalTestCase.java
index bed1fb149c1..a784e306f17 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/preferences/ListenerRemovalTestCase.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/preferences/ListenerRemovalTestCase.java
@@ -14,20 +14,19 @@
package org.eclipse.ui.tests.preferences;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.util.IPropertyChangeListener;
import org.eclipse.jface.util.PropertyChangeEvent;
import org.eclipse.ui.tests.TestPlugin;
-import org.eclipse.ui.tests.harness.util.UITestCase;
import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
/**
* @since 3.3
*/
-@RunWith(JUnit4.class)
-public class ListenerRemovalTestCase extends UITestCase {
+public class ListenerRemovalTestCase {
static class TestPropertyListener implements IPropertyChangeListener {
boolean listened = false;
@@ -42,10 +41,6 @@ public void propertyChange(PropertyChangeEvent event) {
}
}
- public ListenerRemovalTestCase() {
- super(ListenerRemovalTestCase.class.getSimpleName());
- }
-
@Test
public void testRemoveLastListener() {
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/preferences/ScopedPreferenceStoreTestCase.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/preferences/ScopedPreferenceStoreTestCase.java
index a992dd91d2f..1019f5c3afa 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/preferences/ScopedPreferenceStoreTestCase.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/preferences/ScopedPreferenceStoreTestCase.java
@@ -13,6 +13,10 @@
*******************************************************************************/
package org.eclipse.ui.tests.preferences;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
import java.io.IOException;
import org.eclipse.core.runtime.preferences.IEclipsePreferences;
@@ -20,22 +24,14 @@
import org.eclipse.core.runtime.preferences.InstanceScope;
import org.eclipse.jface.util.IPropertyChangeListener;
import org.eclipse.ui.preferences.ScopedPreferenceStore;
-import org.eclipse.ui.tests.harness.util.UITestCase;
import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
-@RunWith(JUnit4.class)
-public class ScopedPreferenceStoreTestCase extends UITestCase {
+public class ScopedPreferenceStoreTestCase {
final String DEFAULT_DEFAULT_STRING = "";
- public ScopedPreferenceStoreTestCase() {
- super(ScopedPreferenceStoreTestCase.class.getSimpleName());
- }
-
@Test
- public void testNeedsSaving() {
+ public void testNeedsSaving() throws IOException {
IScopeContext context = InstanceScope.INSTANCE;
String qualifier = "org.eclipse.ui.tests.preferences";
ScopedPreferenceStore store = new ScopedPreferenceStore(context,
@@ -55,11 +51,7 @@ public void testNeedsSaving() {
assertEquals("1.2", value, store.getString(key));
// flush
- try {
- store.save();
- } catch (IOException e) {
- fail("2.99", e);
- }
+ store.save();
// do the test
assertFalse("3.0", store.needsSaving());
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/preferences/WorkingCopyPreferencesTestCase.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/preferences/WorkingCopyPreferencesTestCase.java
index 399e41a03d8..5f9a9902be5 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/preferences/WorkingCopyPreferencesTestCase.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/preferences/WorkingCopyPreferencesTestCase.java
@@ -13,27 +13,22 @@
*******************************************************************************/
package org.eclipse.ui.tests.preferences;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+
import org.eclipse.core.runtime.preferences.IEclipsePreferences;
import org.eclipse.core.runtime.preferences.InstanceScope;
import org.eclipse.ui.preferences.WorkingCopyManager;
-import org.eclipse.ui.tests.harness.util.UITestCase;
import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
import org.osgi.service.prefs.BackingStoreException;
-@RunWith(JUnit4.class)
-public class WorkingCopyPreferencesTestCase extends UITestCase {
-
- public WorkingCopyPreferencesTestCase() {
- super(WorkingCopyPreferencesTestCase.class.getSimpleName());
- }
+public class WorkingCopyPreferencesTestCase {
/*
* See bug 94926 - WorkingCopyPreferences.remove(key) not working
*/
@Test
- public void testRemoveKey() {
+ public void testRemoveKey() throws BackingStoreException {
// set the value in the real node
String key = "key";
@@ -48,18 +43,14 @@ public void testRemoveKey() {
prefs.remove(key);
// apply the changes
- try {
- manager.applyChanges();
- } catch (BackingStoreException e) {
- fail("2.99", e);
- }
+ manager.applyChanges();
// see if our change was applied
assertNull("3.0", eNode.get(key, null));
}
@Test
- public void testRemoveNode() {
+ public void testRemoveNode() throws BackingStoreException {
// set the value in the real node
String key = "key";
String value = "value";
@@ -72,17 +63,9 @@ public void testRemoveNode() {
IEclipsePreferences prefs = manager.getWorkingCopy(eNode);
// remove the node
- try {
- prefs.removeNode();
- } catch (BackingStoreException e) {
- fail("2.99", e);
- }
+ prefs.removeNode();
// apply the changes
- try {
- manager.applyChanges();
- } catch (BackingStoreException e) {
- fail("3.99", e);
- }
+ manager.applyChanges();
}
}
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/progress/ProgressContantsTest.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/progress/ProgressContantsTest.java
index 53444f47202..b2dfd7b485d 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/progress/ProgressContantsTest.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/progress/ProgressContantsTest.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2009, 2017 IBM Corporation and others.
+ * Copyright (c) 2009, 2024 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -15,6 +15,14 @@
package org.eclipse.ui.tests.progress;
+import static org.eclipse.ui.tests.harness.util.UITestCase.processEvents;
+import static org.eclipse.ui.tests.harness.util.UITestCase.processEventsUntil;
+import static org.eclipse.ui.tests.harness.util.UITestCase.waitForJobs;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;
@@ -38,14 +46,7 @@
import org.eclipse.ui.progress.IProgressConstants2;
import org.eclipse.ui.tests.TestPlugin;
import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
-
-/**
- * @since 3.6
- * @author Prakash G.R. (grprakash@in.ibm.com)
- */
-@RunWith(JUnit4.class)
+
public class ProgressContantsTest extends ProgressTestCase {
/**
@@ -68,10 +69,6 @@ public boolean belongsTo(Object family) {
}
}
- public ProgressContantsTest() {
- super(ProgressContantsTest.class.getSimpleName());
- }
-
@Test
public void testCommandProperty() throws Exception {
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/progress/ProgressTestCase.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/progress/ProgressTestCase.java
index 7ddda9cbe89..925efee4939 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/progress/ProgressTestCase.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/progress/ProgressTestCase.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2009, 2019 IBM Corporation and others.
+ * Copyright (c) 2009, 2024 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -14,6 +14,9 @@
package org.eclipse.ui.tests.progress;
+import static org.eclipse.ui.tests.harness.util.UITestCase.processEvents;
+import static org.junit.Assert.assertNotNull;
+
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
@@ -25,33 +28,31 @@
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.internal.progress.FinishedJobs;
import org.eclipse.ui.internal.progress.ProgressView;
+import org.eclipse.ui.tests.harness.util.CloseTestWindowsRule;
import org.eclipse.ui.tests.harness.util.UITestCase;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Rule;
-/**
- * @since 3.6
- */
-public abstract class ProgressTestCase extends UITestCase {
+public abstract class ProgressTestCase {
protected ProgressView progressView;
protected IWorkbenchWindow window;
- public ProgressTestCase(String testName) {
- super(testName);
- }
+ @Rule
+ public final CloseTestWindowsRule closeTestWindows = new CloseTestWindowsRule();
- @Override
- protected void doSetUp() throws Exception {
- super.doSetUp();
- window = openTestWindow("org.eclipse.ui.resourcePerspective");
+ @Before
+ public void doSetUp() throws Exception {
+ window = UITestCase.openTestWindow("org.eclipse.ui.resourcePerspective");
// Remove progress info items before running the tests to prevent random
// failings
FinishedJobs.getInstance().clearAll();
}
- @Override
- protected void doTearDown() throws Exception {
- super.doTearDown();
+ @After
+ public void doTearDown() throws Exception {
// Remove progress info items
FinishedJobs.getInstance().clearAll();
}
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/progress/ProgressViewTests.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/progress/ProgressViewTests.java
index cd21a3e70f8..78128f0e126 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/progress/ProgressViewTests.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/progress/ProgressViewTests.java
@@ -14,7 +14,11 @@
package org.eclipse.ui.tests.progress;
+import static org.eclipse.ui.tests.harness.util.UITestCase.processEvents;
+import static org.eclipse.ui.tests.harness.util.UITestCase.processEventsUntil;
import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
import java.util.ArrayList;
import java.util.Arrays;
@@ -33,29 +37,22 @@
import org.eclipse.ui.internal.progress.TaskInfo;
import org.eclipse.ui.progress.IProgressConstants;
import org.eclipse.ui.tests.TestPlugin;
+import org.junit.After;
+import org.junit.Before;
import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
-
-/**
- * @since 3.6
- * @author Prakash G.R.
- */
-@RunWith(JUnit4.class)
-public class ProgressViewTests extends ProgressTestCase {
- public ProgressViewTests() {
- super(ProgressViewTests.class.getSimpleName());
- }
+public class ProgressViewTests extends ProgressTestCase {
@Override
- protected void doSetUp() throws Exception {
+ @Before
+ public void doSetUp() throws Exception {
super.doSetUp();
FinishedJobs.getInstance().clearAll();
}
@Override
- protected void doTearDown() throws Exception {
+ @After
+ public void doTearDown() throws Exception {
FinishedJobs.getInstance().clearAll();
super.doTearDown();
}
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/propertyPages/PropertyPageEnablementTest.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/propertyPages/PropertyPageEnablementTest.java
index 463b40db109..a790d408c3e 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/propertyPages/PropertyPageEnablementTest.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/propertyPages/PropertyPageEnablementTest.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2006, 2017 IBM Corporation and others.
+ * Copyright (c) 2006, 2024 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -56,7 +56,7 @@ public void testAndPage() {
return;
}
}
- assertTrue("And property page for file not found", false);
+ fail("And property page for file not found");
contributors = PropertyPageContributorManager.getManager().getApplicableContributors(testFolder);
for (RegistryPageContributor element : contributors) {
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/quickaccess/QuickAccessDialogTest.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/quickaccess/QuickAccessDialogTest.java
index e81eef00666..267f411e0ba 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/quickaccess/QuickAccessDialogTest.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/quickaccess/QuickAccessDialogTest.java
@@ -52,14 +52,11 @@
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
/**
* Tests the quick access UI
* @since 3.4
*/
-@RunWith(JUnit4.class)
public class QuickAccessDialogTest {
private class TestQuickAccessDialog extends QuickAccessDialog {
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/quickaccess/QuickAccessProvidersTest.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/quickaccess/QuickAccessProvidersTest.java
index a94ea8ceebd..74a43960411 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/quickaccess/QuickAccessProvidersTest.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/quickaccess/QuickAccessProvidersTest.java
@@ -29,13 +29,10 @@
import org.eclipse.ui.internal.quickaccess.providers.CommandProvider;
import org.eclipse.ui.quickaccess.QuickAccessElement;
import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
/**
* Tests the quick access providers.
*/
-@RunWith(JUnit4.class)
public class QuickAccessProvidersTest {
private static final String ACTIVITY_ID = "org.eclipse.ui.tests.activitySupportTest.issue1832";
private final String COMMAND_ID = "org.eclipse.ui.tests.activitySupportTest.commands.issue1832";
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/statushandlers/SupportTrayTest.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/statushandlers/SupportTrayTest.java
index f9aae67eaa2..813f2ebe636 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/statushandlers/SupportTrayTest.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/statushandlers/SupportTrayTest.java
@@ -37,11 +37,16 @@
import org.eclipse.ui.internal.statushandlers.StackTraceSupportArea;
import org.eclipse.ui.internal.statushandlers.SupportTray;
import org.eclipse.ui.statushandlers.StatusAdapter;
+import org.eclipse.ui.tests.SwtLeakTestWatcher;
import org.junit.After;
+import org.junit.Rule;
import org.junit.Test;
+import org.junit.rules.TestWatcher;
public class SupportTrayTest {
+ @Rule
+ public TestWatcher swtLeakTestWatcher = new SwtLeakTestWatcher();
@After
public void tearDown() throws Exception {
@@ -100,9 +105,10 @@ public Control createSupportArea(Composite parent, IStatus status) {
assertNotNull(st.providesSupport(sa));
+ Shell shell = new Shell();
TrayDialog td = null;
try {
- td = new TrayDialog(new Shell()) {
+ td = new TrayDialog(shell) {
};
td.setBlockOnOpen(false);
td.open();
@@ -111,6 +117,7 @@ public Control createSupportArea(Composite parent, IStatus status) {
if (td != null) {
td.close();
}
+ shell.close();
}
assertEquals(Status.OK_STATUS, _status[0]);
@@ -138,8 +145,9 @@ public void testJFacePolicyOverDefaultPreference() {
@Test
public void testSelfClosure(){
final TrayDialog td[] = new TrayDialog[] { null };
+ Shell shell = new Shell();
try {
- td[0] = new TrayDialog(new Shell()) {
+ td[0] = new TrayDialog(shell) {
};
Map dialogState = new HashMap<>();
dialogState.put(IStatusDialogConstants.CURRENT_STATUS_ADAPTER, new StatusAdapter(Status.OK_STATUS));
@@ -151,6 +159,7 @@ public void testSelfClosure(){
if (td != null) {
td[0].close();
}
+ shell.close();
}
}
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/statushandlers/WizardsStatusHandlingTestCase.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/statushandlers/WizardsStatusHandlingTestCase.java
index 197718edc90..b47e031a358 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/statushandlers/WizardsStatusHandlingTestCase.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/statushandlers/WizardsStatusHandlingTestCase.java
@@ -35,10 +35,12 @@
import org.eclipse.ui.internal.dialogs.ExportWizard;
import org.eclipse.ui.statushandlers.StatusAdapter;
import org.eclipse.ui.statushandlers.StatusManager;
-import org.eclipse.ui.tests.harness.util.DialogCheck;
+import org.eclipse.ui.tests.SwtLeakTestWatcher;
import org.eclipse.ui.tests.harness.util.UITestCase;
import org.junit.After;
+import org.junit.Rule;
import org.junit.Test;
+import org.junit.rules.TestWatcher;
/**
* Tests whether the errors in wizards are handled properly
@@ -46,6 +48,8 @@
* @since 3.3
*/
public class WizardsStatusHandlingTestCase {
+ @Rule
+ public TestWatcher swtLeakTestWatcher = new SwtLeakTestWatcher();
private static int SEVERITY = IStatus.ERROR;
@@ -75,7 +79,7 @@ public void tearDown() throws Exception {
}
private Shell getShell() {
- return DialogCheck.getShell();
+ return PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
}
private IWorkbench getWorkbench() {
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/stress/OpenCloseTest.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/stress/OpenCloseTest.java
index ac26a6f0627..f02f18bb09b 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/stress/OpenCloseTest.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/stress/OpenCloseTest.java
@@ -40,18 +40,17 @@
import org.eclipse.ui.handlers.IHandlerService;
import org.eclipse.ui.intro.IIntroPart;
import org.eclipse.ui.part.FileEditorInput;
+import org.eclipse.ui.tests.harness.util.CloseTestWindowsRule;
import org.eclipse.ui.tests.harness.util.FileUtil;
import org.junit.Before;
+import org.junit.Rule;
import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
/**
* Test opening and closing of items.
*/
-@RunWith(JUnit4.class)
public class OpenCloseTest {
- private static final String ORG_ECLIPSE_JDT_UI_JAVA_PERSPECTIVE = "org.eclipse.jdt.ui.JavaPerspective";
+ private static final String ORG_ECLIPSE_RESOURCE_PERSPECTIVE = "org.eclipse.ui.resourcePerspective";
private static final int numIterations = 10;
@@ -59,6 +58,8 @@ public class OpenCloseTest {
private IWorkbench workbench;
private IWorkbenchPage page;
+ @Rule
+ public CloseTestWindowsRule closeTestWindows = new CloseTestWindowsRule();
@Before
public void setup() {
@@ -70,7 +71,7 @@ public void setup() {
}
try {
- PlatformUI.getWorkbench().showPerspective(ORG_ECLIPSE_JDT_UI_JAVA_PERSPECTIVE, workbenchWindow);
+ PlatformUI.getWorkbench().showPerspective(ORG_ECLIPSE_RESOURCE_PERSPECTIVE, workbenchWindow);
} catch (WorkbenchException e) {
e.printStackTrace();
}
@@ -104,7 +105,7 @@ public void testOpenCloseFile() throws CoreException {
*/
@Test
public void testOpenCloseWorkbenchWindow() throws WorkbenchException {
- IWorkbenchWindow secondWorkbenchWindow = null;
+ IWorkbenchWindow secondWorkbenchWindow;
for (int index = 0; index < numIterations; index++) {
secondWorkbenchWindow = PlatformUI.getWorkbench()
.openWorkbenchWindow(ResourcesPlugin.getWorkspace().getRoot());
@@ -122,7 +123,7 @@ public void testOpenClosePerspective() {
HashMap parameters = new HashMap<>();
parameters.put(IWorkbenchCommandConstants.WINDOW_CLOSE_PERSPECTIVE_PARM_ID,
- ORG_ECLIPSE_JDT_UI_JAVA_PERSPECTIVE);
+ ORG_ECLIPSE_RESOURCE_PERSPECTIVE);
ParameterizedCommand pCommand = ParameterizedCommand.generateCommand(command, parameters);
@@ -130,7 +131,7 @@ public void testOpenClosePerspective() {
for (int index = 0; index < numIterations; index++) {
try {
- PlatformUI.getWorkbench().showPerspective(ORG_ECLIPSE_JDT_UI_JAVA_PERSPECTIVE, workbenchWindow);
+ PlatformUI.getWorkbench().showPerspective(ORG_ECLIPSE_RESOURCE_PERSPECTIVE, workbenchWindow);
try {
handlerService.executeCommand(pCommand, null);
} catch (ExecutionException | NotDefinedException | NotEnabledException | NotHandledException e1) {
@@ -146,8 +147,8 @@ public void testOpenClosePerspective() {
*/
@Test
public void testOpenCloseView() throws WorkbenchException {
- IViewPart consoleView = null;
- IWorkbenchPage page = PlatformUI.getWorkbench().showPerspective(ORG_ECLIPSE_JDT_UI_JAVA_PERSPECTIVE,
+ IViewPart consoleView;
+ IWorkbenchPage page = PlatformUI.getWorkbench().showPerspective(ORG_ECLIPSE_RESOURCE_PERSPECTIVE,
workbenchWindow);
for (int index = 0; index < numIterations; index++) {
consoleView = page.showView(IPageLayout.ID_MINIMAP_VIEW);
@@ -160,7 +161,7 @@ public void testOpenCloseView() throws WorkbenchException {
*/
@Test
public void testOpenCloseIntro() {
- IIntroPart introPart = null;
+ IIntroPart introPart;
for (int index = 0; index < numIterations; index++) {
introPart = PlatformUI.getWorkbench().getIntroManager().showIntro(workbenchWindow, false);
PlatformUI.getWorkbench().getIntroManager().closeIntro(introPart);
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/systeminplaceeditor/OpenSystemInPlaceEditorTest.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/systeminplaceeditor/OpenSystemInPlaceEditorTest.java
index f77cd31e4e1..357f637a1a2 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/systeminplaceeditor/OpenSystemInPlaceEditorTest.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/systeminplaceeditor/OpenSystemInPlaceEditorTest.java
@@ -13,6 +13,10 @@
******************************************************************************/
package org.eclipse.ui.tests.systeminplaceeditor;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.fail;
+
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.InputStream;
@@ -28,10 +32,7 @@
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.WorkbenchException;
import org.eclipse.ui.ide.IDE;
-import org.eclipse.ui.tests.harness.util.UITestCase;
import org.junit.Ignore;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
/**
@@ -45,16 +46,8 @@
*
* @since 3.4
*/
-@RunWith(JUnit4.class)
@Ignore
-public class OpenSystemInPlaceEditorTest extends UITestCase {
-
- /**
- * Creates the test object.
- */
- public OpenSystemInPlaceEditorTest() {
- super(OpenSystemInPlaceEditorTest.class.getSimpleName());
- }
+public class OpenSystemInPlaceEditorTest {
public void testWorkspaceFile() throws Exception {
if (!PlatformUI.getWorkbench().getEditorRegistry().isSystemInPlaceEditorAvailable("test.doc")) {
@@ -102,10 +95,10 @@ public void testExternalFile() throws Exception {
private IWorkbenchPage getWorkbenchPage() {
IWorkbenchWindow window;
try {
- if (getWorkbench().getWorkbenchWindowCount() == 0) {
- window = getWorkbench().openWorkbenchWindow(null);
+ if (PlatformUI.getWorkbench().getWorkbenchWindowCount() == 0) {
+ window = PlatformUI.getWorkbench().openWorkbenchWindow(null);
} else {
- window = getWorkbench().getWorkbenchWindows()[0];
+ window = PlatformUI.getWorkbench().getWorkbenchWindows()[0];
}
IWorkbenchPage[] pages = window.getPages();
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/zoom/ZoomTestCase.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/zoom/ZoomTestCase.java
index cad49341c78..4a5acf5539d 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/zoom/ZoomTestCase.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/zoom/ZoomTestCase.java
@@ -69,9 +69,6 @@ protected void doSetUp() throws Exception {
page = (WorkbenchPage) window.getActivePage();
IPreferenceStore apiStore = PrefUtil.getAPIPreferenceStore();
- // Disable animations since they occur concurrently and can interferre
- // with locating drop targets
- setPreference(apiStore, IWorkbenchPreferenceConstants.ENABLE_ANIMATIONS, false);
// These tests are hard-wired to the pre-3.3 zoom behaviour
// Run them anyway to ensure that we preserve the 3.0 mechanism
diff --git a/tests/org.eclipse.ui.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.ui.tests/META-INF/MANIFEST.MF
index d1081e4f6d3..ab9288a267d 100644
--- a/tests/org.eclipse.ui.tests/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.ui.tests/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Eclipse UI Tests
Bundle-SymbolicName: org.eclipse.ui.tests; singleton:=true
-Bundle-Version: 3.15.1800.qualifier
+Bundle-Version: 3.15.1900.qualifier
Eclipse-BundleShape: dir
Bundle-Activator: org.eclipse.ui.tests.TestPlugin
Bundle-Vendor: Eclipse.org
@@ -40,9 +40,9 @@ Require-Bundle: org.eclipse.core.resources;bundle-version="3.14.0",
org.eclipse.e4.ui.workbench.renderers.swt;bundle-version="0.10.0",
org.mockito.mockito-core;bundle-version="2.13.0",
org.eclipse.ui.views.log;bundle-version="1.2.1300",
- org.eclipse.jdt.ui,
org.eclipse.ui.navigator;bundle-version="3.12.100",
org.eclipse.search,
+ org.eclipse.debug.ui,
org.eclipse.emf.ecore
Import-Package: jakarta.annotation,
jakarta.inject,
diff --git a/tests/org.eclipse.ui.tests/forceQualifierUpdate.txt b/tests/org.eclipse.ui.tests/forceQualifierUpdate.txt
index 9dd71c82c92..a3fb3011487 100644
--- a/tests/org.eclipse.ui.tests/forceQualifierUpdate.txt
+++ b/tests/org.eclipse.ui.tests/forceQualifierUpdate.txt
@@ -13,4 +13,5 @@ https://github.com/eclipse-platform/eclipse.platform.releng.aggregator/issues/14
https://github.com/eclipse-platform/eclipse.platform.releng.aggregator/issues/1659
https://github.com/eclipse-platform/eclipse.platform.releng.aggregator/issues/1781
https://github.com/eclipse-platform/eclipse.platform.releng.aggregator/issues/1923
-https://github.com/eclipse-platform/eclipse.platform.releng.aggregator/issues/2044
\ No newline at end of file
+https://github.com/eclipse-platform/eclipse.platform.releng.aggregator/issues/2044
+https://github.com/eclipse-platform/eclipse.platform.releng.aggregator/issues/2595
\ No newline at end of file
diff --git a/tests/org.eclipse.ui.tests/plugin.xml b/tests/org.eclipse.ui.tests/plugin.xml
index 3c15b5d245a..2e16cdb6ef3 100644
--- a/tests/org.eclipse.ui.tests/plugin.xml
+++ b/tests/org.eclipse.ui.tests/plugin.xml
@@ -190,7 +190,26 @@
class="org.eclipse.ui.tests.api.workbenchpart.ViewWithCreateControlsException"
id="org.eclipse.ui.tests.api.workbenchpart.ViewWithCreateControlsException">
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/org.eclipse.ui.workbench.texteditor.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.ui.workbench.texteditor.tests/META-INF/MANIFEST.MF
index 1a6ef95d92a..05ec3b30864 100644
--- a/tests/org.eclipse.ui.workbench.texteditor.tests/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.ui.workbench.texteditor.tests/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %Plugin.name
Bundle-SymbolicName: org.eclipse.ui.workbench.texteditor.tests
-Bundle-Version: 3.14.600.qualifier
+Bundle-Version: 3.14.700.qualifier
Bundle-Vendor: %Plugin.providerName
Bundle-Localization: plugin
Export-Package:
diff --git a/tests/org.eclipse.ui.workbench.texteditor.tests/src/org/eclipse/ui/internal/findandreplace/FindReplaceLogicTest.java b/tests/org.eclipse.ui.workbench.texteditor.tests/src/org/eclipse/ui/internal/findandreplace/FindReplaceLogicTest.java
index fd8c772c839..992b4aefb8a 100644
--- a/tests/org.eclipse.ui.workbench.texteditor.tests/src/org/eclipse/ui/internal/findandreplace/FindReplaceLogicTest.java
+++ b/tests/org.eclipse.ui.workbench.texteditor.tests/src/org/eclipse/ui/internal/findandreplace/FindReplaceLogicTest.java
@@ -348,25 +348,71 @@ public void testPerformSelectAndReplaceBackward() {
}
@Test
- public void testPerformReplaceAndFind() {
+ public void testPerformReplaceAndFind_caseInsensitive() {
TextViewer textViewer= setupTextViewer("HelloWorld!");
IFindReplaceLogic findReplaceLogic= setupFindReplaceLogicObject(textViewer);
findReplaceLogic.activate(SearchOptions.FORWARD);
+ setFindAndReplaceString(findReplaceLogic, "", " ");
+
+ boolean status= findReplaceLogic.performReplaceAndFind();
+ assertTrue("replace should have been performed", status);
+ assertThat(textViewer.getDocument().get(), equalTo("Hello World!"));
+ assertThat(findReplaceLogic.getTarget().getSelectionText(), equalTo(""));
+ expectStatusEmpty(findReplaceLogic);
+
setFindAndReplaceString(findReplaceLogic, "", " ");
+ status= findReplaceLogic.performReplaceAndFind();
+ assertTrue("replace should have been performed", status);
+ assertThat(textViewer.getDocument().get(), equalTo("Hello World !"));
+ expectStatusIsCode(findReplaceLogic, FindStatus.StatusCode.NO_MATCH);
+
+ status= findReplaceLogic.performReplaceAndFind();
+ assertFalse("replace should not have been performed", status);
+ assertEquals("Text shouldn't have been changed", "Hello World !", textViewer.getDocument().get());
+ expectStatusIsCode(findReplaceLogic, FindStatus.StatusCode.NO_MATCH);
+ }
+
+ @Test
+ public void testPerformReplaceAndFind_caseSensitive() {
+ TextViewer textViewer= setupTextViewer("HelloWorld!");
+ IFindReplaceLogic findReplaceLogic= setupFindReplaceLogicObject(textViewer);
+ findReplaceLogic.activate(SearchOptions.FORWARD);
+ findReplaceLogic.activate(SearchOptions.CASE_SENSITIVE);
+ setFindAndReplaceString(findReplaceLogic, "", " ");
+
+ boolean status= findReplaceLogic.performReplaceAndFind();
+ assertTrue("replace should have been performed", status);
+ assertThat(textViewer.getDocument().get(), equalTo("HelloWorld !"));
+ assertThat(findReplaceLogic.getTarget().getSelectionText(), equalTo(" "));
+
+ status= findReplaceLogic.performReplaceAndFind();
+ assertFalse("replace should not have been performed", status);
+ assertThat(textViewer.getDocument().get(), equalTo("HelloWorld !"));
+ assertThat(findReplaceLogic.getTarget().getSelectionText(), equalTo(" "));
+ }
+
+ @Test
+ public void testPerformReplaceAndFind_caseSensitiveAndIncremental() {
+ TextViewer textViewer= setupTextViewer("HelloWorld!");
+ IFindReplaceLogic findReplaceLogic= setupFindReplaceLogicObject(textViewer);
+ findReplaceLogic.activate(SearchOptions.FORWARD);
+ findReplaceLogic.activate(SearchOptions.INCREMENTAL);
+ setFindAndReplaceString(findReplaceLogic, "", " ");
boolean status= findReplaceLogic.performReplaceAndFind();
- assertThat(status, is(true));
+ assertTrue("replace should have been performed", status);
assertThat(textViewer.getDocument().get(), equalTo("Hello World!"));
assertThat(findReplaceLogic.getTarget().getSelectionText(), equalTo(""));
expectStatusEmpty(findReplaceLogic);
+ setFindAndReplaceString(findReplaceLogic, "", " ");
status= findReplaceLogic.performReplaceAndFind();
- assertThat(status, is(true));
+ assertTrue("replace should have been performed", status);
assertThat(textViewer.getDocument().get(), equalTo("Hello World !"));
expectStatusIsCode(findReplaceLogic, FindStatus.StatusCode.NO_MATCH);
status= findReplaceLogic.performReplaceAndFind();
- assertEquals("Status wasn't correctly returned", false, status);
+ assertFalse("replace should not have been performed", status);
assertEquals("Text shouldn't have been changed", "Hello World !", textViewer.getDocument().get());
expectStatusIsCode(findReplaceLogic, FindStatus.StatusCode.NO_MATCH);
}
@@ -392,6 +438,29 @@ public void testPerformReplaceAndFindRegEx_incrementalActive() {
executeReplaceAndFindRegExTest(textViewer, findReplaceLogic);
}
+ @Test
+ public void testPerformReplaceAndFindRegEx_withInvalidEscapeInReplace() {
+ TextViewer textViewer= setupTextViewer("Hello");
+ IFindReplaceLogic findReplaceLogic= setupFindReplaceLogicObject(textViewer);
+ findReplaceLogic.activate(SearchOptions.FORWARD);
+ findReplaceLogic.activate(SearchOptions.REGEX);
+
+ setFindAndReplaceString(findReplaceLogic, "Hello", "Hello\\");
+ boolean status= findReplaceLogic.performReplaceAndFind();
+ assertFalse(status);
+ assertThat(textViewer.getDocument().get(), equalTo("Hello"));
+ assertThat(findReplaceLogic.getTarget().getSelectionText(), equalTo("Hello"));
+ assertThat(findReplaceLogic.getStatus(), instanceOf(InvalidRegExStatus.class));
+
+ setFindAndReplaceString(findReplaceLogic, "Hello", "Hello" + System.lineSeparator());
+
+ status= findReplaceLogic.performReplaceAndFind();
+ assertTrue(status);
+ assertThat(textViewer.getDocument().get(), equalTo("Hello" + System.lineSeparator()));
+ assertThat(findReplaceLogic.getTarget().getSelectionText(), equalTo("Hello" + System.lineSeparator()));
+ expectStatusIsCode(findReplaceLogic, FindStatus.StatusCode.NO_MATCH);
+ }
+
private void executeReplaceAndFindRegExTest(TextViewer textViewer, IFindReplaceLogic findReplaceLogic) {
setFindAndReplaceString(findReplaceLogic, "<(\\w*)>", " ");
diff --git a/tests/org.eclipse.ui.workbench.texteditor.tests/src/org/eclipse/ui/internal/findandreplace/FindReplaceTestUtil.java b/tests/org.eclipse.ui.workbench.texteditor.tests/src/org/eclipse/ui/internal/findandreplace/FindReplaceTestUtil.java
index 77c515c1c0f..945d2ccfb3a 100644
--- a/tests/org.eclipse.ui.workbench.texteditor.tests/src/org/eclipse/ui/internal/findandreplace/FindReplaceTestUtil.java
+++ b/tests/org.eclipse.ui.workbench.texteditor.tests/src/org/eclipse/ui/internal/findandreplace/FindReplaceTestUtil.java
@@ -13,10 +13,16 @@
*******************************************************************************/
package org.eclipse.ui.internal.findandreplace;
+import static org.junit.Assert.fail;
+
+import java.util.function.Supplier;
+
import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.workbench.texteditor.tests.ScreenshotTest;
+
public final class FindReplaceTestUtil {
private FindReplaceTestUtil() {
@@ -36,4 +42,22 @@ public static void runEventQueue() {
}
}
+ public static void waitForFocus(Supplier hasFocusValidator, String testName) {
+ int focusAttempts= 0;
+ while (!hasFocusValidator.get() && focusAttempts < 10) {
+ focusAttempts++;
+ PlatformUI.getWorkbench().getDisplay().readAndDispatch();
+ if (!hasFocusValidator.get()) {
+ try {
+ Thread.sleep(50);
+ } catch (InterruptedException e) {
+ }
+ }
+ }
+ if (!hasFocusValidator.get()) {
+ String screenshotPath= ScreenshotTest.takeScreenshot(FindReplaceUITest.class, testName, System.out);
+ fail("The find/replace UI did not receive focus. Screenshot: " + screenshotPath);
+ }
+ }
+
}
diff --git a/tests/org.eclipse.ui.workbench.texteditor.tests/src/org/eclipse/ui/internal/findandreplace/FindReplaceUITest.java b/tests/org.eclipse.ui.workbench.texteditor.tests/src/org/eclipse/ui/internal/findandreplace/FindReplaceUITest.java
index 6b3a0a4127a..aaff1aa04d5 100644
--- a/tests/org.eclipse.ui.workbench.texteditor.tests/src/org/eclipse/ui/internal/findandreplace/FindReplaceUITest.java
+++ b/tests/org.eclipse.ui.workbench.texteditor.tests/src/org/eclipse/ui/internal/findandreplace/FindReplaceUITest.java
@@ -13,23 +13,20 @@
*******************************************************************************/
package org.eclipse.ui.internal.findandreplace;
-import static org.eclipse.ui.internal.findandreplace.FindReplaceTestUtil.runEventQueue;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.is;
import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.fail;
import java.util.ResourceBundle;
import org.junit.After;
+import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TestName;
import org.eclipse.swt.SWT;
-import org.eclipse.jface.util.Util;
-
import org.eclipse.jface.text.Document;
import org.eclipse.jface.text.IFindReplaceTarget;
import org.eclipse.jface.text.TextSelection;
@@ -37,8 +34,6 @@
import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.workbench.texteditor.tests.ScreenshotTest;
-
import org.eclipse.ui.texteditor.FindReplaceAction;
public abstract class FindReplaceUITest {
@@ -51,6 +46,11 @@ public abstract class FindReplaceUITest
private AccessType dialog;
+ @Before
+ public final void ensureWorkbenchWindowIsActive() {
+ PlatformUI.getWorkbench().getWorkbenchWindows()[0].getShell().forceActive();
+ }
+
protected FindReplaceAction getFindReplaceAction() {
return findReplaceAction;
}
@@ -78,16 +78,6 @@ protected void reopenFindReplaceUIForTextViewer() {
dialog= openUIFromTextViewer(fTextViewer);
}
- protected final void ensureHasFocusOnGTK() {
- if (Util.isGtk()) {
- runEventQueue();
- if (!dialog.hasFocus()) {
- String screenshotPath= ScreenshotTest.takeScreenshot(FindReplaceUITest.class, testName.getMethodName(), System.out);
- fail("this test does not work on GTK unless the runtime workbench has focus. Screenshot: " + screenshotPath);
- }
- }
- }
-
protected abstract AccessType openUIFromTextViewer(TextViewer viewer);
@After
@@ -159,7 +149,6 @@ public void testShiftEnterReversesSearchDirection() {
dialog.select(SearchOptions.INCREMENTAL);
dialog.setFindText("line");
- ensureHasFocusOnGTK();
IFindReplaceTarget target= getFindReplaceTarget();
assertEquals(0, (target.getSelection()).x);
@@ -223,17 +212,25 @@ public void testFindWithWholeWordEnabledWithMultipleWords() {
@Test
public void testRegExSearch() {
initializeTextViewerWithFindReplaceUI("abc");
- dialog.select(SearchOptions.REGEX);
+ dialog.select(SearchOptions.INCREMENTAL);
dialog.setFindText("(a|bc)");
+ dialog.select(SearchOptions.REGEX);
IFindReplaceTarget target= getFindReplaceTarget();
- dialog.simulateKeyboardInteractionInFindInputField(SWT.CR, false);
assertEquals(0, (target.getSelection()).x);
assertEquals(1, (target.getSelection()).y);
dialog.simulateKeyboardInteractionInFindInputField(SWT.CR, false);
assertEquals(1, (target.getSelection()).x);
assertEquals(2, (target.getSelection()).y);
+
+ dialog.simulateKeyboardInteractionInFindInputField(SWT.CR, false);
+ assertEquals(0, (target.getSelection()).x);
+ assertEquals(1, (target.getSelection()).y);
+
+ dialog.setFindText("b|c");
+ assertEquals(1, (target.getSelection()).x);
+ assertEquals(1, (target.getSelection()).y);
}
@Test
diff --git a/tests/org.eclipse.ui.workbench.texteditor.tests/src/org/eclipse/ui/internal/findandreplace/WidgetExtractor.java b/tests/org.eclipse.ui.workbench.texteditor.tests/src/org/eclipse/ui/internal/findandreplace/WidgetExtractor.java
new file mode 100644
index 00000000000..81b7f64aa77
--- /dev/null
+++ b/tests/org.eclipse.ui.workbench.texteditor.tests/src/org/eclipse/ui/internal/findandreplace/WidgetExtractor.java
@@ -0,0 +1,83 @@
+/*******************************************************************************
+ * Copyright (c) 2024 Vector Informatik GmbH 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
+ *
+ * Contributors:
+ * Vector Informatik GmbH - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.ui.internal.findandreplace;
+
+import static org.junit.Assert.assertFalse;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.ToolBar;
+import org.eclipse.swt.widgets.ToolItem;
+import org.eclipse.swt.widgets.Widget;
+
+import org.eclipse.ui.internal.findandreplace.overlay.HistoryTextWrapper;
+
+public final class WidgetExtractor {
+
+ private final Composite rootContainer;
+
+ private final String idDataKey;
+
+ public WidgetExtractor(String idDataKey, Composite container) {
+ this.idDataKey= idDataKey;
+ this.rootContainer= container;
+ }
+
+ public HistoryTextWrapper findHistoryTextWrapper(String id) {
+ return findWidget(rootContainer, HistoryTextWrapper.class, id);
+ }
+
+ public Combo findCombo(String id) {
+ return findWidget(rootContainer, Combo.class, id);
+ }
+
+ public Button findButton(String id) {
+ return findWidget(rootContainer, Button.class, id);
+ }
+
+ public ToolItem findToolItem(String id) {
+ return findWidget(rootContainer, ToolItem.class, id);
+ }
+
+ private T findWidget(Composite container, Class type, String id) {
+ List widgets= findWidgets(container, type, id);
+ assertFalse("more than one matching widget found for id '" + id + "':" + widgets, widgets.size() > 1);
+ return widgets.isEmpty() ? null : widgets.get(0);
+ }
+
+ private List findWidgets(Composite container, Class type, String id) {
+ List children= new ArrayList<>();
+ children.addAll(List.of(container.getChildren()));
+ if (container instanceof ToolBar toolbar) {
+ children.addAll(List.of(toolbar.getItems()));
+ }
+ List result= new ArrayList<>();
+ for (Widget child : children) {
+ if (type.isInstance(child)) {
+ if (id.equals(child.getData(idDataKey))) {
+ result.add(type.cast(child));
+ }
+ }
+ if (child instanceof Composite compositeChild) {
+ result.addAll(findWidgets(compositeChild, type, id));
+ }
+ }
+ return result;
+ }
+
+}
diff --git a/tests/org.eclipse.ui.workbench.texteditor.tests/src/org/eclipse/ui/internal/findandreplace/overlay/FindReplaceOverlayTest.java b/tests/org.eclipse.ui.workbench.texteditor.tests/src/org/eclipse/ui/internal/findandreplace/overlay/FindReplaceOverlayTest.java
index 58e7afc72d8..7e80fc64a10 100644
--- a/tests/org.eclipse.ui.workbench.texteditor.tests/src/org/eclipse/ui/internal/findandreplace/overlay/FindReplaceOverlayTest.java
+++ b/tests/org.eclipse.ui.workbench.texteditor.tests/src/org/eclipse/ui/internal/findandreplace/overlay/FindReplaceOverlayTest.java
@@ -13,6 +13,7 @@
*******************************************************************************/
package org.eclipse.ui.internal.findandreplace.overlay;
+import static org.eclipse.ui.internal.findandreplace.FindReplaceTestUtil.waitForFocus;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.is;
import static org.junit.Assert.assertEquals;
@@ -45,8 +46,10 @@ public class FindReplaceOverlayTest extends FindReplaceUITest {
public OverlayAccess openUIFromTextViewer(TextViewer viewer) {
Accessor actionAccessor= new Accessor(getFindReplaceAction(), FindReplaceAction.class);
actionAccessor.invoke("showOverlayInEditor", null);
- Accessor overlayAccessor= new Accessor(actionAccessor.get("overlay"), "org.eclipse.ui.internal.findandreplace.overlay.FindReplaceOverlay", getClass().getClassLoader());
- return new OverlayAccess(getFindReplaceTarget(), overlayAccessor);
+ FindReplaceOverlay overlay= (FindReplaceOverlay) actionAccessor.get("overlay");
+ OverlayAccess uiAccess= new OverlayAccess(getFindReplaceTarget(), overlay);
+ waitForFocus(uiAccess::hasFocus, testName.getMethodName());
+ return uiAccess;
}
@Test
@@ -157,8 +160,7 @@ public void testSearchBackwardsWithRegEx() {
OverlayAccess dialog= getDialog();
dialog.select(SearchOptions.REGEX);
- dialog.setFindText("text"); // with RegEx enabled, there is no incremental search!
- dialog.pressSearch(true);
+ dialog.setFindText("text");
assertThat(target.getSelection().y, is(4));
dialog.pressSearch(true);
assertThat(target.getSelection().x, is("text ".length()));
diff --git a/tests/org.eclipse.ui.workbench.texteditor.tests/src/org/eclipse/ui/internal/findandreplace/overlay/OverlayAccess.java b/tests/org.eclipse.ui.workbench.texteditor.tests/src/org/eclipse/ui/internal/findandreplace/overlay/OverlayAccess.java
index ae961a3e0da..ae07a9643ec 100644
--- a/tests/org.eclipse.ui.workbench.texteditor.tests/src/org/eclipse/ui/internal/findandreplace/overlay/OverlayAccess.java
+++ b/tests/org.eclipse.ui.workbench.texteditor.tests/src/org/eclipse/ui/internal/findandreplace/overlay/OverlayAccess.java
@@ -21,23 +21,20 @@
import java.util.Objects;
import java.util.Set;
import java.util.function.Predicate;
-import java.util.function.Supplier;
import java.util.stream.Collectors;
import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.ToolItem;
-import org.eclipse.text.tests.Accessor;
-
import org.eclipse.jface.text.IFindReplaceTarget;
import org.eclipse.jface.text.IFindReplaceTargetExtension;
import org.eclipse.ui.internal.findandreplace.IFindReplaceUIAccess;
import org.eclipse.ui.internal.findandreplace.SearchOptions;
+import org.eclipse.ui.internal.findandreplace.WidgetExtractor;
class OverlayAccess implements IFindReplaceUIAccess {
private final IFindReplaceTarget findReplaceTarget;
@@ -56,7 +53,7 @@ class OverlayAccess implements IFindReplaceUIAccess {
private final ToolItem searchBackward;
- private final Button openReplaceDialog;
+ private final ToolItem openReplaceDialog;
private HistoryTextWrapper replace;
@@ -64,28 +61,34 @@ class OverlayAccess implements IFindReplaceUIAccess {
private ToolItem replaceAllButton;
- private final Runnable closeOperation;
+ private final FindReplaceOverlay overlay;
- private final Accessor dialogAccessor;
+ OverlayAccess(IFindReplaceTarget findReplaceTarget, FindReplaceOverlay findReplaceOverlay) {
+ this.findReplaceTarget= findReplaceTarget;
+ overlay= findReplaceOverlay;
+ WidgetExtractor widgetExtractor= new WidgetExtractor(FindReplaceOverlay.ID_DATA_KEY, findReplaceOverlay.getContainerControl());
+ find= widgetExtractor.findHistoryTextWrapper("searchInput");
+ caseSensitive= widgetExtractor.findToolItem("caseSensitiveSearch");
+ wholeWord= widgetExtractor.findToolItem("wholeWordSearch");
+ regEx= widgetExtractor.findToolItem("regExSearch");
+ inSelection= widgetExtractor.findToolItem("searchInSelection");
+ searchForward= widgetExtractor.findToolItem("searchForward");
+ searchBackward= widgetExtractor.findToolItem("searchBackward");
+ openReplaceDialog= widgetExtractor.findToolItem("replaceToggle");
+ extractReplaceWidgets();
+ }
- private final Supplier shellRetriever;
+ private void extractReplaceWidgets() {
+ if (!isReplaceDialogOpen() && Objects.nonNull(openReplaceDialog)) {
+ WidgetExtractor widgetExtractor= new WidgetExtractor(FindReplaceOverlay.ID_DATA_KEY, getContainerControl());
+ replace= widgetExtractor.findHistoryTextWrapper("replaceInput");
+ replaceButton= widgetExtractor.findToolItem("replaceOne");
+ replaceAllButton= widgetExtractor.findToolItem("replaceAll");
+ }
+ }
- OverlayAccess(IFindReplaceTarget findReplaceTarget, Accessor findReplaceOverlayAccessor) {
- this.findReplaceTarget= findReplaceTarget;
- dialogAccessor= findReplaceOverlayAccessor;
- find= (HistoryTextWrapper) findReplaceOverlayAccessor.get("searchBar");
- replace= (HistoryTextWrapper) findReplaceOverlayAccessor.get("replaceBar");
- caseSensitive= (ToolItem) findReplaceOverlayAccessor.get("caseSensitiveSearchButton");
- wholeWord= (ToolItem) findReplaceOverlayAccessor.get("wholeWordSearchButton");
- regEx= (ToolItem) findReplaceOverlayAccessor.get("regexSearchButton");
- searchForward= (ToolItem) findReplaceOverlayAccessor.get("searchDownButton");
- searchBackward= (ToolItem) findReplaceOverlayAccessor.get("searchUpButton");
- closeOperation= () -> findReplaceOverlayAccessor.invoke("close", null);
- openReplaceDialog= (Button) findReplaceOverlayAccessor.get("replaceToggle");
- replaceButton= (ToolItem) findReplaceOverlayAccessor.get("replaceButton");
- replaceAllButton= (ToolItem) findReplaceOverlayAccessor.get("replaceAllButton");
- inSelection= (ToolItem) findReplaceOverlayAccessor.get("searchInSelectionButton");
- shellRetriever= () -> ((Shell) findReplaceOverlayAccessor.invoke("getShell", null));
+ private Composite getContainerControl() {
+ return overlay.getContainerControl();
}
private void restoreInitialConfiguration() {
@@ -100,12 +103,12 @@ private void restoreInitialConfiguration() {
public void closeAndRestore() {
restoreInitialConfiguration();
assertInitialConfiguration();
- closeOperation.run();
+ close();
}
@Override
public void close() {
- closeOperation.run();
+ overlay.close();
}
@Override
@@ -234,15 +237,13 @@ public void performReplace() {
}
public boolean isReplaceDialogOpen() {
- return dialogAccessor.getBoolean("replaceBarOpen");
+ return replace != null;
}
public void openReplaceDialog() {
if (!isReplaceDialogOpen() && Objects.nonNull(openReplaceDialog)) {
openReplaceDialog.notifyListeners(SWT.Selection, null);
- replace= (HistoryTextWrapper) dialogAccessor.get("replaceBar");
- replaceButton= (ToolItem) dialogAccessor.get("replaceButton");
- replaceAllButton= (ToolItem) dialogAccessor.get("replaceAllButton");
+ extractReplaceWidgets();
}
}
@@ -309,15 +310,19 @@ public void assertEnabled(SearchOptions option) {
@Override
public boolean isShown() {
- return shellRetriever.get() != null && shellRetriever.get().isVisible();
+ return getContainerControl().isVisible();
}
@Override
public boolean hasFocus() {
- Shell overlayShell= shellRetriever.get();
- Control focusControl= overlayShell.getDisplay().getFocusControl();
- Shell focusControlShell= focusControl != null ? focusControl.getShell() : null;
- return focusControlShell == overlayShell;
+ Control focusControl= getContainerControl().getDisplay().getFocusControl();
+ while (focusControl != null) {
+ if (getContainerControl() == focusControl) {
+ return true;
+ }
+ focusControl= focusControl.getParent();
+ }
+ return false;
}
}
diff --git a/tests/org.eclipse.ui.workbench.texteditor.tests/src/org/eclipse/ui/workbench/texteditor/tests/DialogAccess.java b/tests/org.eclipse.ui.workbench.texteditor.tests/src/org/eclipse/ui/workbench/texteditor/tests/DialogAccess.java
index 453e1f84317..4a4a75ed5d5 100644
--- a/tests/org.eclipse.ui.workbench.texteditor.tests/src/org/eclipse/ui/workbench/texteditor/tests/DialogAccess.java
+++ b/tests/org.eclipse.ui.workbench.texteditor.tests/src/org/eclipse/ui/workbench/texteditor/tests/DialogAccess.java
@@ -18,81 +18,77 @@
import java.util.Arrays;
import java.util.Set;
-import java.util.function.Supplier;
import java.util.stream.Collectors;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Shell;
-import org.eclipse.text.tests.Accessor;
+import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.text.IFindReplaceTarget;
import org.eclipse.jface.text.IFindReplaceTargetExtension;
import org.eclipse.ui.internal.findandreplace.IFindReplaceUIAccess;
import org.eclipse.ui.internal.findandreplace.SearchOptions;
+import org.eclipse.ui.internal.findandreplace.WidgetExtractor;
class DialogAccess implements IFindReplaceUIAccess {
- private final IFindReplaceTarget findReplaceTarget;
-
- Combo findCombo;
+ private static final String DATA_ID = "org.eclipse.ui.texteditor.FindReplaceDialog.id";
- Combo replaceCombo;
-
- Button forwardRadioButton;
+ private final IFindReplaceTarget findReplaceTarget;
- Button globalRadioButton;
+ private final Dialog findReplaceDialog;
- Button searchInRangeRadioButton;
+ private final Combo findCombo;
- Button caseCheckBox;
+ private final Combo replaceCombo;
- Button wrapCheckBox;
+ private final Button forwardRadioButton;
- Button wholeWordCheckBox;
+ private final Button globalRadioButton;
- Button incrementalCheckBox;
+ private final Button searchInRangeRadioButton;
- Button regExCheckBox;
+ private final Button caseCheckBox;
- Button findButton;
+ private final Button wrapCheckBox;
- Button replaceButton;
+ private final Button wholeWordCheckBox;
- Button replaceFindButton;
+ private final Button incrementalCheckBox;
- Button replaceAllButton;
+ private final Button regExCheckBox;
- private Supplier shellRetriever;
+ private final Button replaceButton;
- private Runnable closeOperation;
+ private final Button replaceFindButton;
- Accessor dialogAccessor;
+ private final Button replaceAllButton;
- DialogAccess(IFindReplaceTarget findReplaceTarget, Accessor findReplaceDialogAccessor) {
+ DialogAccess(IFindReplaceTarget findReplaceTarget, Dialog findReplaceDialog) {
this.findReplaceTarget= findReplaceTarget;
- dialogAccessor= findReplaceDialogAccessor;
- findCombo= (Combo) findReplaceDialogAccessor.get("fFindField");
- replaceCombo= (Combo) findReplaceDialogAccessor.get("fReplaceField");
- forwardRadioButton= (Button) findReplaceDialogAccessor.get("fForwardRadioButton");
- globalRadioButton= (Button) findReplaceDialogAccessor.get("fGlobalRadioButton");
- searchInRangeRadioButton= (Button) findReplaceDialogAccessor.get("fSelectedRangeRadioButton");
- caseCheckBox= (Button) findReplaceDialogAccessor.get("fCaseCheckBox");
- wrapCheckBox= (Button) findReplaceDialogAccessor.get("fWrapCheckBox");
- wholeWordCheckBox= (Button) findReplaceDialogAccessor.get("fWholeWordCheckBox");
- incrementalCheckBox= (Button) findReplaceDialogAccessor.get("fIncrementalCheckBox");
- regExCheckBox= (Button) findReplaceDialogAccessor.get("fIsRegExCheckBox");
- shellRetriever= () -> ((Shell) findReplaceDialogAccessor.get("fActiveShell"));
- closeOperation= () -> findReplaceDialogAccessor.invoke("close", null);
- findButton= (Button) findReplaceDialogAccessor.get("fFindNextButton");
- replaceButton= (Button) findReplaceDialogAccessor.get("fReplaceSelectionButton");
- replaceFindButton= (Button) findReplaceDialogAccessor.get("fReplaceFindButton");
- replaceAllButton= (Button) findReplaceDialogAccessor.get("fReplaceAllButton");
+ this.findReplaceDialog= findReplaceDialog;
+ WidgetExtractor widgetExtractor= new WidgetExtractor(DATA_ID, findReplaceDialog.getShell());
+ findCombo= widgetExtractor.findCombo("searchInput");
+ replaceCombo= widgetExtractor.findCombo("replaceInput");
+ forwardRadioButton= widgetExtractor.findButton("searchForward");
+ globalRadioButton= widgetExtractor.findButton("globalSearch");
+ searchInRangeRadioButton= widgetExtractor.findButton("searchInSelection");
+ caseCheckBox= widgetExtractor.findButton("caseSensitiveSearch");
+ wrapCheckBox= widgetExtractor.findButton("wrappedSearch");
+ wholeWordCheckBox= widgetExtractor.findButton("wholeWordSearch");
+ incrementalCheckBox= widgetExtractor.findButton("incrementalSearch");
+ regExCheckBox= widgetExtractor.findButton("regExSearch");
+
+ replaceButton= widgetExtractor.findButton("replaceOne");
+ replaceFindButton= widgetExtractor.findButton("replaceFindOne");
+ replaceAllButton= widgetExtractor.findButton("replaceAll");
}
void restoreInitialConfiguration() {
@@ -153,17 +149,19 @@ public void unselect(SearchOptions option) {
public void closeAndRestore() {
restoreInitialConfiguration();
assertInitialConfiguration();
- closeOperation.run();
+ findReplaceDialog.close();
}
@Override
public void close() {
- closeOperation.run();
+ findReplaceDialog.close();
}
@Override
public boolean hasFocus() {
- return shellRetriever.get() != null;
+ Control focusControl= findReplaceDialog.getShell().getDisplay().getFocusControl();
+ Shell focusControlShell= focusControl != null ? focusControl.getShell() : null;
+ return focusControlShell == findReplaceDialog.getShell();
}
@Override
@@ -296,7 +294,7 @@ private Set getSelectedOptions() {
@Override
public boolean isShown() {
- return shellRetriever.get() != null;
+ return findReplaceDialog.getShell().isVisible();
}
}
diff --git a/tests/org.eclipse.ui.workbench.texteditor.tests/src/org/eclipse/ui/workbench/texteditor/tests/FindReplaceDialogTest.java b/tests/org.eclipse.ui.workbench.texteditor.tests/src/org/eclipse/ui/workbench/texteditor/tests/FindReplaceDialogTest.java
index f6a992264e7..e802945dee6 100644
--- a/tests/org.eclipse.ui.workbench.texteditor.tests/src/org/eclipse/ui/workbench/texteditor/tests/FindReplaceDialogTest.java
+++ b/tests/org.eclipse.ui.workbench.texteditor.tests/src/org/eclipse/ui/workbench/texteditor/tests/FindReplaceDialogTest.java
@@ -14,6 +14,7 @@
package org.eclipse.ui.workbench.texteditor.tests;
import static org.eclipse.ui.internal.findandreplace.FindReplaceTestUtil.runEventQueue;
+import static org.eclipse.ui.internal.findandreplace.FindReplaceTestUtil.waitForFocus;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.is;
import static org.junit.Assert.assertEquals;
@@ -28,6 +29,7 @@
import org.eclipse.text.tests.Accessor;
+import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.util.Util;
import org.eclipse.jface.text.IFindReplaceTarget;
@@ -50,8 +52,10 @@ public DialogAccess openUIFromTextViewer(TextViewer viewer) {
}
Accessor fFindReplaceDialogStubAccessor= new Accessor(fFindReplaceDialogStub, "org.eclipse.ui.texteditor.FindReplaceAction$FindReplaceDialogStub", getClass().getClassLoader());
- Accessor dialogAccessor= new Accessor(fFindReplaceDialogStubAccessor.invoke("getDialog", null), "org.eclipse.ui.texteditor.FindReplaceDialog", getClass().getClassLoader());
- return new DialogAccess(getFindReplaceTarget(), dialogAccessor);
+ Dialog dialog= (Dialog) fFindReplaceDialogStubAccessor.invoke("getDialog", null);
+ DialogAccess uiAccess= new DialogAccess(getFindReplaceTarget(), dialog);
+ waitForFocus(uiAccess::hasFocus, testName.getMethodName());
+ return uiAccess;
}
@Test
@@ -61,11 +65,9 @@ public void testFocusNotChangedWhenEnterPressed() {
initializeTextViewerWithFindReplaceUI("line\nline\nline");
DialogAccess dialog= getDialog();
- dialog.findCombo.setFocus();
+ dialog.getFindCombo().setFocus();
dialog.setFindText("line");
dialog.simulateKeyboardInteractionInFindInputField(SWT.CR, false);
- ensureHasFocusOnGTK();
-
assertTrue(dialog.getFindCombo().isFocusControl());
Button wrapCheckBox= dialog.getButtonForSearchOption(SearchOptions.WRAP);
@@ -85,9 +87,8 @@ public void testFocusNotChangedWhenButtonMnemonicPressed() {
initializeTextViewerWithFindReplaceUI("");
DialogAccess dialog= getDialog();
-
dialog.setFindText("line");
- ensureHasFocusOnGTK();
+ runEventQueue();
Button wrapCheckBox= dialog.getButtonForSearchOption(SearchOptions.WRAP);
wrapCheckBox.setFocus();
@@ -121,7 +122,6 @@ public void testShiftEnterReversesSearchDirectionDialogSpecific() {
DialogAccess dialog= getDialog();
dialog.setFindText("line");
- ensureHasFocusOnGTK();
IFindReplaceTarget target= getFindReplaceTarget();
dialog.simulateKeyboardInteractionInFindInputField(SWT.CR, false);
@@ -163,18 +163,6 @@ public void testReplaceAndFindAfterInitializingFindWithSelectedString() {
assertEquals(4, (target.getSelection()).y);
}
- @Test
- public void testIncrementalSearchOnlyEnabledWhenAllowed() {
- initializeTextViewerWithFindReplaceUI("text text text");
- DialogAccess dialog= getDialog();
-
- dialog.select(SearchOptions.INCREMENTAL);
- dialog.select(SearchOptions.REGEX);
-
- dialog.assertSelected(SearchOptions.INCREMENTAL);
- dialog.assertDisabled(SearchOptions.INCREMENTAL);
- }
-
/*
* Test for https://github.com/eclipse-platform/eclipse.platform.ui/pull/1805#pullrequestreview-1993772378
*/
@@ -191,15 +179,6 @@ public void testIncrementalSearchOptionRecoveredCorrectly() {
dialog= getDialog();
dialog.assertSelected(SearchOptions.INCREMENTAL);
dialog.assertEnabled(SearchOptions.INCREMENTAL);
-
- dialog.select(SearchOptions.REGEX);
- dialog.assertSelected(SearchOptions.INCREMENTAL);
- dialog.assertDisabled(SearchOptions.INCREMENTAL);
-
- reopenFindReplaceUIForTextViewer();
- dialog= getDialog();
- dialog.assertSelected(SearchOptions.INCREMENTAL);
- dialog.assertDisabled(SearchOptions.INCREMENTAL);
}
@Test
@@ -225,4 +204,22 @@ public void testFindWithWholeWordEnabledWithMultipleWordsNotIncremental() {
assertEquals(0, (target.getSelection()).x);
assertEquals(dialog.getFindText().length(), (target.getSelection()).y);
}
+
+ @Test
+ public void testRegExSearch_nonIncremental() {
+ initializeTextViewerWithFindReplaceUI("abc");
+ DialogAccess dialog= getDialog();
+ dialog.setFindText("(a|bc)");
+ dialog.select(SearchOptions.REGEX);
+
+ IFindReplaceTarget target= getFindReplaceTarget();
+ dialog.simulateKeyboardInteractionInFindInputField(SWT.CR, false);
+ assertEquals(0, (target.getSelection()).x);
+ assertEquals(1, (target.getSelection()).y);
+
+ dialog.simulateKeyboardInteractionInFindInputField(SWT.CR, false);
+ assertEquals(1, (target.getSelection()).x);
+ assertEquals(2, (target.getSelection()).y);
+ }
+
}
diff --git a/tests/org.eclipse.ui.workbench.texteditor.tests/src/org/eclipse/ui/workbench/texteditor/tests/HippieCompletionTest.java b/tests/org.eclipse.ui.workbench.texteditor.tests/src/org/eclipse/ui/workbench/texteditor/tests/HippieCompletionTest.java
index 2a122a41631..30b5059e2c7 100644
--- a/tests/org.eclipse.ui.workbench.texteditor.tests/src/org/eclipse/ui/workbench/texteditor/tests/HippieCompletionTest.java
+++ b/tests/org.eclipse.ui.workbench.texteditor.tests/src/org/eclipse/ui/workbench/texteditor/tests/HippieCompletionTest.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2015 IBM Corporation and others.
+ * Copyright (c) 2000, 2024 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -50,69 +50,72 @@ public class HippieCompletionTest {
@Before
public void setUp() throws Exception {
documents= new IDocument[5];
- documents[0]= new Document("package ui.TestPackage;\n" +
- "\n" +
- "/**\n" +
- " * This is a testing class that tests the hippie completion engine.\n" +
- " * it has a simple main with a print method\n" +
- " */\n" +
- "public class TestClass1 {\n" +
- "\n" +
- " public static void main(String[] args) {\n" +
- " System.out.println(\"I will be printing Hello world!\");\n" +
- " }\n" +
- "}");
+ documents[0]= new Document("""
+ package ui.TestPackage;
+
+ /**
+ * This is a testing class that tests the hippie completion engine.
+ * it has a simple main with a print method
+ */
+ public class TestClass1 {
+
+ public static void main(String[] args) {
+ System.out.println("I will be printing Hello world!");
+ }
+ }""");
documents[1]= new Document("This is a simple text file\n" +
"with some testssome test that is also used in the completion engine tests");
- documents[2]= new Document("\n" +
- "\n" +
- "\n" +
- " \n" +
- " \n" +
- " \n" +
- " \n" +
- " \n" +
- " \n" +
- " \n" +
- " \n" +
- " \n" +
- " \n" +
- " \n" +
- " \n" +
- " \n" +
- " \n" +
- " \n" +
- "\n" +
- "");
-
- documents[3]= new Document("###############################################################################\n" +
- "# Copyright (c) 2000, 2004 IBM Corporation and others.\n" +
- "\\n"+
- "# This program and the accompanying materials \n" +
- "# are made available under the terms of the Eclipse Public License 2.0\n" +
- "# which accompanies this distribution, and is available at\n" +
- "# https://www.eclipse.org/legal/epl-2.0/"+
- "# \n"+
- "# SPDX-License-Identifier: EPL-2.0\n" +
- "# \n" +
- "# Contributors:\n" +
- "# IBM Corporation - initial API and implementation\n" +
- "###############################################################################\n" +
- "bin.includes= plugin.xml,\\\n" +
- " plugin.properties,\\\n" +
- " test.xml,\\\n" +
- " about.html,\\\n" +
- " *.jar\n" +
- "\n" +
- "src.includes= about.html\n" +
- " \n" +
- "source.workbenchtexteditortests.jar= src/\n" +
- "");
+ documents[2]= new Document("""
+
+
+
+
+
+
+
+
+ \s
+
+
+
+
+
+
+
+
+ \s
+
+ """);
+
+ documents[3]= new Document("""
+ ###############################################################################
+ # Copyright (c) 2000, 2004 IBM Corporation and others.
+ \\n\
+ # This program and the accompanying materials\s
+ # 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/\
+ #\s
+ # SPDX-License-Identifier: EPL-2.0
+ #\s
+ # Contributors:
+ # IBM Corporation - initial API and implementation
+ ###############################################################################
+ bin.includes= plugin.xml,\\
+ plugin.properties,\\
+ test.xml,\\
+ about.html,\\
+ *.jar
+
+ src.includes= about.html
+ \s
+ source.workbenchtexteditortests.jar= src/
+ """);
documents[4]= new Document("/**\n" +
" * This class tests the hippie completion functionality.\n" +
" * \u05D4\u05DE\u05D7\u05DC\u05E7\u05D4 \u05D4\u05D6\u05D5 \u05D1\u05D5\u05D3\u05E7\u05EA \u05D0\u05EA \u05DE\u05E0\u05D2\u05E0\u05D5\u05DF \u05D4\u05D4\u05E9\u05DC\u05DE\u05D5\u05EA\n" +
@@ -143,74 +146,62 @@ public void setUp() throws Exception {
}
@Test
- public void testSearchBackwards1() {
- try {
- List list= fEngine.getCompletionsBackwards(documents[0],
- "pri", documents[0].get().indexOf("println") + 10);
- assertEquals(list.size(), 2);
- assertEquals(list.get(0), "ntln");
- assertEquals(list.get(1), "nt");
-
- list= fEngine.getCompletionsBackwards(documents[0],
- "pri", documents[0].getLength());
- assertEquals(list.size(), 3);
- assertEquals(list.get(0), "nting");
- assertEquals(list.get(1), "ntln");
- assertEquals(list.get(2), "nt");
-
- list= fEngine.getCompletionsBackwards(documents[0],
- "pri", documents[0].get().indexOf("println") + 1);
- assertEquals(list.size(), 1);
- assertEquals(list.get(0), "nt");
-
- list= fEngine.getCompletionsBackwards(documents[0],
- "pa", 2);
- assertEquals(list.size(), 0);
-
- } catch (BadLocationException e) {
- assertTrue("Got out of document bounds", false);
- }
+ public void testSearchBackwards1() throws BadLocationException {
+ List list= fEngine.getCompletionsBackwards(documents[0],
+ "pri", documents[0].get().indexOf("println") + 10);
+ assertEquals(list.size(), 2);
+ assertEquals(list.get(0), "ntln");
+ assertEquals(list.get(1), "nt");
+
+ list= fEngine.getCompletionsBackwards(documents[0],
+ "pri", documents[0].getLength());
+ assertEquals(list.size(), 3);
+ assertEquals(list.get(0), "nting");
+ assertEquals(list.get(1), "ntln");
+ assertEquals(list.get(2), "nt");
+
+ list= fEngine.getCompletionsBackwards(documents[0],
+ "pri", documents[0].get().indexOf("println") + 1);
+ assertEquals(list.size(), 1);
+ assertEquals(list.get(0), "nt");
+
+ list= fEngine.getCompletionsBackwards(documents[0],
+ "pa", 2);
+ assertEquals(list.size(), 0);
+
}
@Test
- public void testSearchBackwards2() {
- try {
- List list= fEngine.getCompletionsBackwards(documents[2],
- "plugi", documents[2].getLength());
- assertEquals(8, list.size());
- list= fEngine.makeUnique(list);
- assertEquals(1, list.size());
- assertEquals("n", list.get(0));
-
- list= fEngine.getCompletionsBackwards(documents[2],
- "plugin", documents[2].getLength());
- assertEquals(0, list.size()); // empty completions discarded
-
- } catch (BadLocationException e) {
- assertTrue("Got out of document bounds", false);
- }
+ public void testSearchBackwards2() throws BadLocationException {
+ List list= fEngine.getCompletionsBackwards(documents[2],
+ "plugi", documents[2].getLength());
+ assertEquals(8, list.size());
+ list= fEngine.makeUnique(list);
+ assertEquals(1, list.size());
+ assertEquals("n", list.get(0));
+
+ list= fEngine.getCompletionsBackwards(documents[2],
+ "plugin", documents[2].getLength());
+ assertEquals(0, list.size()); // empty completions discarded
+
}
@Test
- public void testSearchBackwards3() {
- try {
- List list= fEngine.getCompletionsBackwards(documents[1],
- "test", documents[1].getLength());
- assertEquals("Number of backwards suggestions does not match", 2, list.size());
- list= fEngine.getCompletionsBackwards(documents[1],
- "tests", documents[1].getLength());
- assertEquals("Number of backwards suggestions does not match", 1, list.size());
-
- list= fEngine.getCompletionsBackwards(documents[1],
- "test", documents[1].getLength() - 1);
- assertEquals("Number of backwards suggestions does not match", 1, list.size());
- } catch (BadLocationException e) {
- assertTrue("Got out of document bounds", false);
- }
+ public void testSearchBackwards3() throws BadLocationException {
+ List list= fEngine.getCompletionsBackwards(documents[1],
+ "test", documents[1].getLength());
+ assertEquals("Number of backwards suggestions does not match", 2, list.size());
+ list= fEngine.getCompletionsBackwards(documents[1],
+ "tests", documents[1].getLength());
+ assertEquals("Number of backwards suggestions does not match", 1, list.size());
+
+ list= fEngine.getCompletionsBackwards(documents[1],
+ "test", documents[1].getLength() - 1);
+ assertEquals("Number of backwards suggestions does not match", 1, list.size());
}
@Test
- public void testSearch() {
+ public void testSearch() throws BadLocationException {
ArrayList docsList= new ArrayList<>(Arrays.asList(this.documents));
List result= createSuggestions("te", docsList);
assertEquals("Number of completions does not match", 15, result.size());
@@ -237,7 +228,7 @@ public void testSearch() {
}
@Test
- public void testSearch2() {
+ public void testSearch2() throws BadLocationException {
ArrayList docsList= new ArrayList<>(Arrays.asList(this.documents));
List result= createSuggestions("printe", docsList);
assertEquals("Number of completions does not match", 0, result.size());
@@ -250,116 +241,102 @@ public void testSearch2() {
}
@Test
- public void testForwardSearch() {
- try {
- List result= fEngine.getCompletionsForward(documents[0],
- "cl", documents[0].get().indexOf("cl"), true);
- assertEquals(2, result.size());
-
- result= fEngine.getCompletionsForward(documents[0],
- "cl", documents[0].get().indexOf("cl") + 1, true);
- assertEquals(1, result.size());
-
- result= fEngine.getCompletionsForward(documents[1],
- "Thi", 0, true);
- assertEquals(1, result.size());
-
- result= fEngine.getCompletionsForward(documents[1],
- "Thi", 1, true);
- assertEquals(0, result.size());
- } catch (BadLocationException e) {
- assertTrue("Got out of document bounds", false);
- }
+ public void testForwardSearch() throws BadLocationException {
+ List result= fEngine.getCompletionsForward(documents[0],
+ "cl", documents[0].get().indexOf("cl"), true);
+ assertEquals(2, result.size());
+
+ result= fEngine.getCompletionsForward(documents[0],
+ "cl", documents[0].get().indexOf("cl") + 1, true);
+ assertEquals(1, result.size());
+
+ result= fEngine.getCompletionsForward(documents[1],
+ "Thi", 0, true);
+ assertEquals(1, result.size());
+
+ result= fEngine.getCompletionsForward(documents[1],
+ "Thi", 1, true);
+ assertEquals(0, result.size());
}
@Test
- public void testForwardSearchInternational() {
- List result;
- try {
- result= fEngine.getCompletionsForward(documents[4],
- "$", documents[4].get().indexOf('$'), true);
- assertEquals(2, result.size());
- assertEquals("arabic\u20AAWord", result.get(0));
- assertEquals("arabic\u20ACDigits", result.get(1));
-
- result= fEngine.getCompletionsForward(documents[4],
- "$", documents[4].get().indexOf('$'), false);
- assertEquals(2, result.size());
- assertEquals("arabic\u20ACDigits", result.get(0));
- assertEquals("arabic\u20AAWord", result.get(1));
-
- result= fEngine.getCompletionsForward(documents[4],
- "$", documents[4].get().indexOf('$') + 1, true);
- assertEquals(1, result.size());
- assertEquals("arabic\u20AAWord", result.get(0));
- } catch (BadLocationException e) {
- assertTrue("Got out of document bounds", false);
- }
+ public void testForwardSearchInternational() throws BadLocationException {
+ List result= fEngine.getCompletionsForward(documents[4],
+ "$", documents[4].get().indexOf('$'), true);
+ assertEquals(2, result.size());
+ assertEquals("arabic\u20AAWord", result.get(0));
+ assertEquals("arabic\u20ACDigits", result.get(1));
+
+ result= fEngine.getCompletionsForward(documents[4],
+ "$", documents[4].get().indexOf('$'), false);
+ assertEquals(2, result.size());
+ assertEquals("arabic\u20ACDigits", result.get(0));
+ assertEquals("arabic\u20AAWord", result.get(1));
+
+ result= fEngine.getCompletionsForward(documents[4],
+ "$", documents[4].get().indexOf('$') + 1, true);
+ assertEquals(1, result.size());
+ assertEquals("arabic\u20AAWord", result.get(0));
}
@Test
- public void testPrefix() {
- try {
- String prefix= fEngine.getPrefixString(documents[0],
- documents[0].get().indexOf("testing") + 3);
- assertEquals(prefix, "tes");
-
- prefix= fEngine.getPrefixString(documents[0],
- documents[0].get().indexOf("public") + 4);
- assertEquals(prefix, "publ");
+ public void testPrefix() throws BadLocationException {
+ String prefix= fEngine.getPrefixString(documents[0],
+ documents[0].get().indexOf("testing") + 3);
+ assertEquals(prefix, "tes");
- prefix= fEngine.getPrefixString(documents[0],
- documents[0].get().indexOf("println") + 7);
- assertEquals(prefix, "println");
+ prefix= fEngine.getPrefixString(documents[0],
+ documents[0].get().indexOf("public") + 4);
+ assertEquals(prefix, "publ");
- prefix= fEngine.getPrefixString(documents[0],
- documents[0].get().indexOf("println") + 8);
- assertEquals(prefix, null);
+ prefix= fEngine.getPrefixString(documents[0],
+ documents[0].get().indexOf("println") + 7);
+ assertEquals(prefix, "println");
- prefix= fEngine.getPrefixString(documents[1], 3);
- assertEquals(prefix, "Thi");
+ prefix= fEngine.getPrefixString(documents[0],
+ documents[0].get().indexOf("println") + 8);
+ assertEquals(prefix, null);
- prefix= fEngine.getPrefixString(documents[1], 0);
- assertEquals(prefix, null);
+ prefix= fEngine.getPrefixString(documents[1], 3);
+ assertEquals(prefix, "Thi");
- prefix= fEngine.getPrefixString(documents[1], documents[1].getLength());
- assertEquals(prefix, "tests");
+ prefix= fEngine.getPrefixString(documents[1], 0);
+ assertEquals(prefix, null);
- prefix= fEngine.getPrefixString(documents[3],
- documents[3].get().indexOf("Copyright") - 2);
- assertEquals(prefix, null);
+ prefix= fEngine.getPrefixString(documents[1], documents[1].getLength());
+ assertEquals(prefix, "tests");
- prefix= fEngine.getPrefixString(documents[4],
- documents[4].get().indexOf("IDE") + 2);
- assertEquals(prefix, "ID");
+ prefix= fEngine.getPrefixString(documents[3],
+ documents[3].get().indexOf("Copyright") - 2);
+ assertEquals(prefix, null);
- prefix= fEngine.getPrefixString(documents[4],
- documents[4].get().indexOf("$arabic\u20ACDigits") + 8);
- assertEquals(prefix, "$arabic\u20AC");
+ prefix= fEngine.getPrefixString(documents[4],
+ documents[4].get().indexOf("IDE") + 2);
+ assertEquals(prefix, "ID");
- prefix= fEngine.getPrefixString(documents[4],
- documents[4].get().indexOf("$arabic\u20AAWord") + 8);
- assertEquals(prefix, "$arabic\u20AA");
+ prefix= fEngine.getPrefixString(documents[4],
+ documents[4].get().indexOf("$arabic\u20ACDigits") + 8);
+ assertEquals(prefix, "$arabic\u20AC");
- prefix= fEngine.getPrefixString(documents[4],
- documents[4].get().indexOf("\u00A3\u0661\u0662\u0663") + 3);
- assertEquals(prefix, "\u00A3\u0661\u0662");
+ prefix= fEngine.getPrefixString(documents[4],
+ documents[4].get().indexOf("$arabic\u20AAWord") + 8);
+ assertEquals(prefix, "$arabic\u20AA");
- prefix= fEngine.getPrefixString(documents[4],
- documents[4].get().indexOf("a\u0300\u0301b") + 3);
- assertEquals(prefix, "a\u0300\u0301");
+ prefix= fEngine.getPrefixString(documents[4],
+ documents[4].get().indexOf("\u00A3\u0661\u0662\u0663") + 3);
+ assertEquals(prefix, "\u00A3\u0661\u0662");
- prefix= fEngine.getPrefixString(documents[4],
- documents[4].get().indexOf("\u0667\u0668\u0669\u0660") + 2);
- assertEquals(prefix, "\u0667\u0668");
+ prefix= fEngine.getPrefixString(documents[4],
+ documents[4].get().indexOf("a\u0300\u0301b") + 3);
+ assertEquals(prefix, "a\u0300\u0301");
- } catch (BadLocationException e) {
- assertTrue("Got out of document bounds", false);
- }
+ prefix= fEngine.getPrefixString(documents[4],
+ documents[4].get().indexOf("\u0667\u0668\u0669\u0660") + 2);
+ assertEquals(prefix, "\u0667\u0668");
}
@Test
- public void testInternational() {
+ public void testInternational() throws BadLocationException {
IDocument intlDoc= documents[4];
List result= createSuggestions("\u05D4", intlDoc); // hebrew letter heh
@@ -426,33 +403,29 @@ public void testInternational() {
}
@Test
- public void testInternationalBackwards() {
+ public void testInternationalBackwards() throws BadLocationException {
IDocument intlDoc= documents[4];
- try {
- List list= fEngine.getCompletionsBackwards(intlDoc,
- "\u043B\u0443", intlDoc.get().indexOf("129"));
- assertEquals(2, list.size());
- assertEquals(list.get(0), "\u0447\u0448");
- assertEquals(list.get(1), "\u0447\u0448\u0438\u0439");
-
- list= fEngine.getCompletionsBackwards(intlDoc,
- "\u05DE", intlDoc.get().lastIndexOf('+'));
- assertEquals(2, list.size());
- assertEquals(list.get(0), "\u05D7");
- assertEquals(list.get(1), "\u05E0\u05D2\u05E0\u05D5\u05DF");
-
- list= fEngine.getCompletionsBackwards(intlDoc,
- "\u0667", intlDoc.get().indexOf("\u2021\u0667") + 1);
- assertEquals(0, list.size());
-
- list= fEngine.getCompletionsBackwards(intlDoc,
- "\u0628", intlDoc.get().lastIndexOf("\u0628"));
- assertEquals(1, list.size());
- assertEquals(list.get(0), "\u064E\u0627\u0628\u0650");
-
- } catch (BadLocationException e) {
- assertTrue("Got out of document bounds", false);
- }
+ List list= fEngine.getCompletionsBackwards(intlDoc,
+ "\u043B\u0443", intlDoc.get().indexOf("129"));
+ assertEquals(2, list.size());
+ assertEquals(list.get(0), "\u0447\u0448");
+ assertEquals(list.get(1), "\u0447\u0448\u0438\u0439");
+
+ list= fEngine.getCompletionsBackwards(intlDoc,
+ "\u05DE", intlDoc.get().lastIndexOf('+'));
+ assertEquals(2, list.size());
+ assertEquals(list.get(0), "\u05D7");
+ assertEquals(list.get(1), "\u05E0\u05D2\u05E0\u05D5\u05DF");
+
+ list= fEngine.getCompletionsBackwards(intlDoc,
+ "\u0667", intlDoc.get().indexOf("\u2021\u0667") + 1);
+ assertEquals(0, list.size());
+
+ list= fEngine.getCompletionsBackwards(intlDoc,
+ "\u0628", intlDoc.get().lastIndexOf("\u0628"));
+ assertEquals(1, list.size());
+ assertEquals(list.get(0), "\u064E\u0627\u0628\u0650");
+
}
private Accessor createAccessor(Iterator suggestions, int startOffset) {
@@ -593,18 +566,14 @@ public void testIteration() throws Exception {
}
- private List createSuggestions(String prefix, IDocument doc) {
+ private List createSuggestions(String prefix, IDocument doc) throws BadLocationException {
return createSuggestions(prefix, Arrays.asList(new IDocument[]{doc}));
}
- private List createSuggestions(String prefix, List docsList) {
+ private List createSuggestions(String prefix, List docsList) throws BadLocationException {
ArrayList results= new ArrayList<>();
for (IDocument doc : docsList) {
- try {
- results.addAll(fEngine.getCompletionsForward(doc, prefix, 0, false));
- } catch (BadLocationException e) {
- assertTrue("No exception should be thrown here", false);
- }
+ results.addAll(fEngine.getCompletionsForward(doc, prefix, 0, false));
}
return results;
}