From f9b743fff17d7663b3a2287827fe25bb1b128214 Mon Sep 17 00:00:00 2001 From: Lars Vogel Date: Tue, 18 Apr 2023 10:18:43 +0200 Subject: [PATCH 001/232] StackRendererTest should restet the model after each test StackRendererTest should remove the used window before each test Before this change the the model elements were not removed after a test. --- .../ui/workbench/renderers/swt/StackRendererTest.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) 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..53250ebbb77 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 @@ -59,6 +59,7 @@ import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Widget; +import org.junit.After; import org.junit.Before; import org.junit.Rule; import org.junit.Test; @@ -86,11 +87,16 @@ public class StackRendererTest { @Before public void setUp() throws Exception { window = ems.createModelElement(MWindow.class); + partStack = ems.createModelElement(MPartStack.class); + window.getChildren().add(partStack); application.getChildren().add(window); application.setSelectedElement(window); + } - partStack = ems.createModelElement(MPartStack.class); - window.getChildren().add(partStack); + @After + public void cleanUp() throws Exception { + ems.deleteModelElement(partStack); + ems.deleteModelElement(window); } @Test From e97cfd0526c97c537daa9ed0d93239210067de0d Mon Sep 17 00:00:00 2001 From: Tobias Melcher Date: Thu, 5 Sep 2024 17:50:40 +0200 Subject: [PATCH 002/232] increase version numbers for next release --- examples/org.eclipse.jface.text.examples/META-INF/MANIFEST.MF | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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, From 9b21618ea5fe63c7de1bbb80ac988e95ae5a5bbb Mon Sep 17 00:00:00 2001 From: Tobias Melcher Date: Mon, 30 Sep 2024 11:34:25 +0200 Subject: [PATCH 003/232] additional constructor param afterPosition in LineContentCodeMining which allows to render a code mining where the cursor selection does not include the code mining at the given source position. --- .../META-INF/MANIFEST.MF | 2 +- .../CodeMiningLineContentAnnotation.java | 21 ++++++++ .../text/codemining/CodeMiningManager.java | 10 +++- .../text/WhitespaceCharacterPainter.java | 45 ++++++++++++---- .../codemining/LineContentCodeMining.java | 42 +++++++++++++++ .../InlinedAnnotationDrawingStrategy.java | 38 ++++++++++++-- .../inlined/InlinedAnnotationSupport.java | 11 +++- .../source/inlined/LineContentAnnotation.java | 7 ++- .../examples/codemining/CodeMiningDemo.java | 18 +++++-- ...ontentCodeMiningAfterPositionProvider.java | 52 +++++++++++++++++++ .../tests/TestWhitespaceCharacterPainter.java | 36 +++++++++++-- .../source/inlined/AnnotationOnTabTest.java | 5 +- 12 files changed, 257 insertions(+), 30 deletions(-) create mode 100644 examples/org.eclipse.jface.text.examples/src/org/eclipse/jface/text/examples/codemining/LineContentCodeMiningAfterPositionProvider.java diff --git a/bundles/org.eclipse.jface.text/META-INF/MANIFEST.MF b/bundles/org.eclipse.jface.text/META-INF/MANIFEST.MF index 29a2defc9e4..f0f37e01f5e 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.26.0.qualifier Bundle-Vendor: %providerName Bundle-Localization: plugin Export-Package: 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/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/text/WhitespaceCharacterPainter.java b/bundles/org.eclipse.jface.text/src/org/eclipse/jface/text/WhitespaceCharacterPainter.java index 24a6526f064..43c6e53e7c5 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,10 @@ 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--; + break; + } visibleChar.append(CARRIAGE_RETURN_SIGN); } if (textOffset >= endOffsetInLine - 1 || lineText.charAt(textOffset + 1) != '\n') { @@ -414,6 +418,10 @@ 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--; + break; + } visibleChar.append(LINE_FEED_SIGN); } eol= true; @@ -439,7 +447,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 +500,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 +508,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/inlined/InlinedAnnotationDrawingStrategy.java b/bundles/org.eclipse.jface.text/src/org/eclipse/jface/text/source/inlined/InlinedAnnotationDrawingStrategy.java index 09464aef653..39641a3c02c 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,6 +24,8 @@ import org.eclipse.swt.graphics.Point; import org.eclipse.swt.graphics.Rectangle; +import org.eclipse.jface.internal.text.codemining.CodeMiningLineContentAnnotation; + import org.eclipse.jface.text.ITextViewer; import org.eclipse.jface.text.source.Annotation; import org.eclipse.jface.text.source.AnnotationPainter.IDrawingStrategy; @@ -202,6 +204,12 @@ 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()) { + drawAsLeftOf1stCharacter(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)) { @@ -254,9 +262,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 +292,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 +349,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 { @@ -365,7 +393,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; 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..79e301468f6 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; + } } /** 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/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/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/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..9a1d57a3e34 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 @@ -19,6 +19,9 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; +import java.util.Arrays; +import java.util.List; + import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -62,15 +65,30 @@ public void after() { @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("first \nsecond \nthird \n")); + 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); - 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 +105,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 { @@ -102,7 +130,7 @@ public FontMetrics answer(InvocationOnMock invocation) throws Throwable { ev.width= 100; ev.height= 100; whitespaceCharPainter.paintControl(ev); - verify(ev.gc, times(5)).drawString(anyString(), anyInt(), anyInt(), anyBoolean()); + verify(ev.gc, times(times)).drawString(anyString(), anyInt(), anyInt(), anyBoolean()); } private StyleRange createStyleRangeWithMetrics(int start) { 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); } } From 70a2d11ea14846b2efb6876903afc291a58a86e5 Mon Sep 17 00:00:00 2001 From: Heiko Klare Date: Mon, 9 Sep 2024 13:31:47 +0200 Subject: [PATCH 004/232] Remove reflective access from find/replace tests #2060 The tests for the FindReplaceDialog and FindReplaceOverlay currently use reflection to access specific UI elements. This ties the test implementations to implementation details of the production classes (i.e., specific hidden field to be present) and particularly requires the production code to contain (hidden) fields even if they would not be required just to provide according tests. This change replaces the reflective access with widget extraction functionality based on explicit IDs assigned to the UI elements of interest. Fixes https://github.com/eclipse-platform/eclipse.platform.ui/issues/2060 --- .../overlay/FindReplaceOverlay.java | 43 +++++++--- .../ui/texteditor/FindReplaceDialog.java | 22 +++++ .../findandreplace/WidgetExtractor.java | 83 ++++++++++++++++++ .../overlay/FindReplaceOverlayTest.java | 4 +- .../findandreplace/overlay/OverlayAccess.java | 64 +++++++------- .../texteditor/tests/DialogAccess.java | 86 +++++++++---------- .../tests/FindReplaceDialogTest.java | 7 +- 7 files changed, 218 insertions(+), 91 deletions(-) create mode 100644 tests/org.eclipse.ui.workbench.texteditor.tests/src/org/eclipse/ui/internal/findandreplace/WidgetExtractor.java 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..1ba6878127b 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 @@ -104,6 +104,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; @@ -130,9 +132,9 @@ 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; @@ -370,6 +372,7 @@ public int open() { } overlayOpen = true; applyOverlayColors(backgroundToUse, true); + assignIDs(); updateFromTargetSelection(); searchBar.forceFocus(); @@ -391,6 +394,25 @@ private void restoreOverlaySettings() { } } + @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 applyOverlayColors(Color color, boolean tryToColorReplaceBar) { closeTools.setBackground(color); closeButton.setBackground(color); @@ -400,9 +422,9 @@ private void applyOverlayColors(Color color, boolean tryToColorReplaceBar) { wholeWordSearchButton.setBackground(color); regexSearchButton.setBackground(color); caseSensitiveSearchButton.setBackground(color); - searchAllButton.setBackground(color); - searchUpButton.setBackground(color); - searchDownButton.setBackground(color); + selectAllButton.setBackground(color); + searchBackwardButton.setBackground(color); + searchForwardButton.setBackground(color); searchBarContainer.setBackground(color); searchBar.setBackground(color); @@ -511,20 +533,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(); @@ -759,6 +781,7 @@ private void createReplaceDialog() { updatePlacementAndVisibility(); applyOverlayColors(backgroundToUse, true); + assignIDs(); replaceBar.forceFocus(); } 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..2ab91df8d15 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 @@ -79,6 +79,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; @@ -275,6 +277,7 @@ public void create() { shell.setText(FindReplaceMessages.FindReplace_Dialog_Title); updateButtonState(); + assignIDs(); } /** @@ -1353,4 +1356,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/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..f9dda34774d 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 @@ -45,8 +45,8 @@ 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"); + return new OverlayAccess(getFindReplaceTarget(), overlay); } @Test 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..e81a1f47b56 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,7 +21,6 @@ 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; @@ -31,13 +30,12 @@ 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; @@ -64,28 +62,33 @@ class OverlayAccess implements IFindReplaceUIAccess { private ToolItem replaceAllButton; - private final Runnable closeOperation; - - private final Accessor dialogAccessor; + private final FindReplaceOverlay overlay; - private final Supplier shellRetriever; + private final Shell shell; - OverlayAccess(IFindReplaceTarget findReplaceTarget, Accessor findReplaceOverlayAccessor) { + OverlayAccess(IFindReplaceTarget findReplaceTarget, FindReplaceOverlay findReplaceOverlay) { 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)); + overlay= findReplaceOverlay; + shell= overlay.getShell(); + WidgetExtractor widgetExtractor= new WidgetExtractor(FindReplaceOverlay.ID_DATA_KEY, shell); + 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.findButton("replaceToggle"); + extractReplaceWidgets(); + } + + private void extractReplaceWidgets() { + if (!isReplaceDialogOpen() && Objects.nonNull(openReplaceDialog)) { + WidgetExtractor widgetExtractor= new WidgetExtractor(FindReplaceOverlay.ID_DATA_KEY, shell); + replace= widgetExtractor.findHistoryTextWrapper("replaceInput"); + replaceButton= widgetExtractor.findToolItem("replaceOne"); + replaceAllButton= widgetExtractor.findToolItem("replaceAll"); + } } private void restoreInitialConfiguration() { @@ -100,12 +103,12 @@ private void restoreInitialConfiguration() { public void closeAndRestore() { restoreInitialConfiguration(); assertInitialConfiguration(); - closeOperation.run(); + overlay.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,14 @@ public void assertEnabled(SearchOptions option) { @Override public boolean isShown() { - return shellRetriever.get() != null && shellRetriever.get().isVisible(); + return !shell.isDisposed() && shell.isVisible(); } @Override public boolean hasFocus() { - Shell overlayShell= shellRetriever.get(); - Control focusControl= overlayShell.getDisplay().getFocusControl(); + Control focusControl= shell.getDisplay().getFocusControl(); Shell focusControlShell= focusControl != null ? focusControl.getShell() : null; - return focusControlShell == overlayShell; + return focusControlShell == shell; } } 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..2fa0fb63b03 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 @@ -28,6 +28,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 +51,8 @@ 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); + return new DialogAccess(getFindReplaceTarget(), dialog); } @Test @@ -61,7 +62,7 @@ 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(); From c9b34e44a6fa6d6619916e31f2c1fd0439cb5d71 Mon Sep 17 00:00:00 2001 From: raghucssit Date: Mon, 9 Sep 2024 16:19:14 +0200 Subject: [PATCH 005/232] Improve 'Replace All' performance. For Large Java file 'Replace All' takes long time and freezes the UI. One of the reason is Projection Model tries to iterate over all the Projection Annotations to expand/collapse status. We can improve this situation by using Region specific iterator. This returns annotations which are enclosed by given offset. This improves the performance by 25% at least. See https://github.com/eclipse-platform/eclipse.platform.ui/issues/2257 --- .../jface/text/source/projection/ProjectionAnnotationModel.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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..892d917d301 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 @@ -149,7 +149,7 @@ protected boolean expandAll(int offset, int length, boolean fireModelChanged) { boolean expanding= false; - Iterator iterator= getAnnotationIterator(); + Iterator iterator= getAnnotationIterator(offset, length, true, true); while (iterator.hasNext()) { ProjectionAnnotation annotation= (ProjectionAnnotation) iterator.next(); if (annotation.isCollapsed()) { From 175f65eb9d7ad952c2e0d2837323808a27e39e1d Mon Sep 17 00:00:00 2001 From: Lars Vogel Date: Tue, 1 Oct 2024 13:37:49 +0200 Subject: [PATCH 006/232] Revert "StackRendererTest should restet the model after each test" This reverts commit f9b743fff17d7663b3a2287827fe25bb1b128214. --- .../ui/workbench/renderers/swt/StackRendererTest.java | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) 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 53250ebbb77..6cc804ce8eb 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 @@ -59,7 +59,6 @@ import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Widget; -import org.junit.After; import org.junit.Before; import org.junit.Rule; import org.junit.Test; @@ -87,16 +86,11 @@ public class StackRendererTest { @Before public void setUp() throws Exception { window = ems.createModelElement(MWindow.class); - partStack = ems.createModelElement(MPartStack.class); - window.getChildren().add(partStack); application.getChildren().add(window); application.setSelectedElement(window); - } - @After - public void cleanUp() throws Exception { - ems.deleteModelElement(partStack); - ems.deleteModelElement(window); + partStack = ems.createModelElement(MPartStack.class); + window.getChildren().add(partStack); } @Test From 419bb6166b281bd3ff6f4cb3a9689109c62b145a Mon Sep 17 00:00:00 2001 From: Heiko Klare Date: Sat, 28 Sep 2024 11:00:07 +0200 Subject: [PATCH 007/232] Find/replace overlay: improve replace toggle button appearance The button to toggle whether the replace bar in a find/replace overlay is shown currently appears to be a rather heavyweight button with a border. With this change, the button is replace with a lightweight toolbar item like used for all other buttons in the overlay. This improves the appearance as well as the implementation as the same implementation patterns can now be applied to all buttons in the overlay. --- .../overlay/AccessibleToolItem.java | 2 ++ .../overlay/FindReplaceOverlay.java | 36 +++++++++---------- .../findandreplace/overlay/OverlayAccess.java | 5 ++- 3 files changed, 21 insertions(+), 22 deletions(-) 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 1ba6878127b..2abad115952 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,8 +13,6 @@ *******************************************************************************/ package org.eclipse.ui.internal.findandreplace.overlay; -import static org.eclipse.ui.internal.findandreplace.overlay.FindReplaceShortcutUtil.registerActionShortcutsAtControl; - import java.util.List; import java.util.function.Consumer; @@ -28,7 +26,7 @@ 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.MouseListener; import org.eclipse.swt.events.ShellAdapter; import org.eclipse.swt.events.ShellEvent; import org.eclipse.swt.graphics.Color; @@ -37,7 +35,6 @@ 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.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Display; @@ -119,8 +116,8 @@ private final class KeyboardShortcuts { private boolean replaceBarOpen; private Composite container; - private Button replaceToggle; - private FindReplaceOverlayAction replaceToggleShortcut; + private AccessibleToolBar replaceToggleTools; + private ToolItem replaceToggle; private Composite contentGroup; @@ -496,7 +493,7 @@ private Control createDialog(final Composite parent) { private void initializeSearchShortcutHandlers() { searchTools.registerActionShortcutsAtControl(searchBar); closeTools.registerActionShortcutsAtControl(searchBar); - registerActionShortcutsAtControl(replaceToggleShortcut, searchBar); + replaceToggleTools.registerActionShortcutsAtControl(searchBar); } /** @@ -734,15 +731,16 @@ private void createMainContainer(final Composite parent) { } 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())); + replaceToggleTools = new AccessibleToolBar(container); + GridDataFactory.fillDefaults().grab(false, true).align(GridData.FILL, GridData.FILL) + .applyTo(replaceToggleTools); + replaceToggleTools.addMouseListener(MouseListener.mouseDownAdapter(__ -> toggleReplace())); + + replaceToggle = new AccessibleToolItemBuilder(replaceToggleTools) + .withShortcuts(KeyboardShortcuts.TOGGLE_REPLACE) + .withImage(FindReplaceOverlayImages.get(FindReplaceOverlayImages.KEY_OPEN_REPLACE_AREA)) + .withToolTipText(FindReplaceMessages.FindReplaceOverlay_replaceToggle_toolTip) + .withOperation(this::toggleReplace).build(); } private void toggleReplace() { @@ -788,7 +786,7 @@ private void createReplaceDialog() { private void initializeReplaceShortcutHandlers() { replaceTools.registerActionShortcutsAtControl(replaceBar); closeTools.registerActionShortcutsAtControl(replaceBar); - registerActionShortcutsAtControl(replaceToggleShortcut, replaceBar); + replaceToggleTools.registerActionShortcutsAtControl(replaceBar); } private void enableSearchTools(boolean enable) { @@ -801,8 +799,8 @@ private void enableReplaceToggle(boolean enable) { return; } boolean visible = enable && findReplaceLogic.getTarget().isEditable(); - ((GridData) replaceToggle.getLayoutData()).exclude = !visible; - replaceToggle.setVisible(visible); + ((GridData) replaceToggleTools.getLayoutData()).exclude = !visible; + replaceToggleTools.setVisible(visible); } private void enableReplaceTools(boolean enable) { 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 e81a1f47b56..51450754661 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 @@ -24,7 +24,6 @@ import java.util.stream.Collectors; import org.eclipse.swt.SWT; -import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Shell; @@ -54,7 +53,7 @@ class OverlayAccess implements IFindReplaceUIAccess { private final ToolItem searchBackward; - private final Button openReplaceDialog; + private final ToolItem openReplaceDialog; private HistoryTextWrapper replace; @@ -78,7 +77,7 @@ class OverlayAccess implements IFindReplaceUIAccess { inSelection= widgetExtractor.findToolItem("searchInSelection"); searchForward= widgetExtractor.findToolItem("searchForward"); searchBackward= widgetExtractor.findToolItem("searchBackward"); - openReplaceDialog= widgetExtractor.findButton("replaceToggle"); + openReplaceDialog= widgetExtractor.findToolItem("replaceToggle"); extractReplaceWidgets(); } From 04dc50b8b643a72416cb1779741827e36e9d2066 Mon Sep 17 00:00:00 2001 From: Feilim Breatnach Date: Tue, 1 Oct 2024 15:25:35 +0100 Subject: [PATCH 008/232] Modify the 'Close Editor' handler and enabled when evaluation to support for Compatibility parts and new Parts which represent an Editor and are contributed via eg. PartDescriptors in a Model Fragment. Associated with Issue#2176. --- .../ui/internal/CloseEditorHandler.java | 87 +++++++++++-------- .../PartTaggedAsEditorPropertyTester.java | 47 ++++++++++ bundles/org.eclipse.ui/plugin.xml | 17 ++-- 3 files changed, 110 insertions(+), 41 deletions(-) create mode 100644 bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PartTaggedAsEditorPropertyTester.java 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 index b3acfd81940..11894454d03 100644 --- 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 @@ -14,16 +14,21 @@ 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.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.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.ISources; +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. @@ -33,43 +38,53 @@ * * @since 3.3 */ -public class CloseEditorHandler extends AbstractEvaluationHandler { - - private Expression enabledWhen; - - public CloseEditorHandler() { - registerEnablement(); - } +public class CloseEditorHandler extends AbstractHandler { @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; + 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 EvaluationResult.FALSE; } - - @Override - public void collectExpressionInfo(ExpressionInfo info) { - info.addVariableNameAccess(ISources.ACTIVE_EDITOR_NAME); - } - }; + } } - return enabledWhen; + + 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/PartTaggedAsEditorPropertyTester.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PartTaggedAsEditorPropertyTester.java new file mode 100644 index 00000000000..78acda39cae --- /dev/null +++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/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/plugin.xml b/bundles/org.eclipse.ui/plugin.xml index f4523fefbd8..d7c0c6f8e16 100644 --- a/bundles/org.eclipse.ui/plugin.xml +++ b/bundles/org.eclipse.ui/plugin.xml @@ -2149,6 +2149,13 @@ properties="isPerspectiveOpen" type="org.eclipse.ui.IWorkbenchWindow"> + + @@ -2207,11 +2214,11 @@ class="org.eclipse.ui.internal.CloseEditorHandler" commandId="org.eclipse.ui.file.close"> - - - + + + + + From 5e20de94ba2def0aac083d5f89bded7bd732bdcb Mon Sep 17 00:00:00 2001 From: Hannes Wellmann Date: Tue, 1 Oct 2024 23:08:01 +0200 Subject: [PATCH 009/232] Remove unnecessary specific entries in build.properties --- tests/org.eclipse.e4.ui.bindings.tests/build.properties | 1 - tests/org.eclipse.e4.ui.tests.css.core/build.properties | 1 - tests/org.eclipse.e4.ui.tests.css.swt/build.properties | 1 - tests/org.eclipse.jface.tests/build.properties | 1 - 4 files changed, 4 deletions(-) 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/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/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.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 From 2cab7ac6993b02ccd5ec3ef0e48cc23aa774772a Mon Sep 17 00:00:00 2001 From: Eclipse Platform Bot Date: Tue, 1 Oct 2024 21:13:38 +0000 Subject: [PATCH 010/232] Version bump(s) for 4.34 stream --- tests/org.eclipse.e4.ui.bindings.tests/META-INF/MANIFEST.MF | 2 +- tests/org.eclipse.e4.ui.tests.css.core/META-INF/MANIFEST.MF | 2 +- tests/org.eclipse.e4.ui.tests.css.swt/META-INF/MANIFEST.MF | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) 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.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.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", From 901a83e4792fc4fd2dafa4bc344187947e8dba3e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Kubitz?= Date: Wed, 2 Oct 2024 11:45:17 +0200 Subject: [PATCH 011/232] IWorkbenchPageTest: delete project after shutdown To avoid error messages about missing file after testOpenEditors3() --- .../org/eclipse/ui/tests/api/IWorkbenchPageTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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(); } /** From 1b2426fb86ef9b34d28327cbc5f9d19e476c1bd4 Mon Sep 17 00:00:00 2001 From: Heiko Klare Date: Wed, 2 Oct 2024 13:14:24 +0200 Subject: [PATCH 012/232] Find/replace logic: proper replace for case-insensitive matches When using find/replace (via overlay or dialog) in incremental mode, if the currently found element is only a case-insensitive match with the current search string, a replace operation will perform an unnecessary additional search and thus replace the next matching element. The reason is a comparison for whether the currently found string exactly matches the search string, not ignoring the casing. This change adapts the behavior to properly consider case-sensitivity when performing replace operations. It also adds according regression tests. --- .../findandreplace/FindReplaceLogic.java | 5 +- .../findandreplace/FindReplaceLogicTest.java | 54 +++++++++++++++++-- 2 files changed, 54 insertions(+), 5 deletions(-) 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..a6a69c6c3b4 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 @@ -568,7 +568,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/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..df6d786d9a8 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(); - assertThat(status, is(true)); + 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(); + 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); } From cc2462147fc92fe2cf6da1f07a297abb695bff2f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Kubitz?= Date: Wed, 2 Oct 2024 14:15:39 +0200 Subject: [PATCH 013/232] ResourceInitialSelectionTest: fix deleting resources #294 Concurrent "Decoration Calculation" sometimes prevented Project from deleting on Windows OS. https://github.com/eclipse-platform/eclipse.platform.ui/issues/294 --- .../ui/tests/dialogs/ResourceInitialSelectionTest.java | 4 ++++ 1 file changed, 4 insertions(+) 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..9dc75c3a025 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 @@ -31,12 +31,14 @@ 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.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.Test; @@ -381,6 +383,8 @@ protected void doTearDown() throws Exception { } 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 From ef8188ec72a6b92d79043c86f71ed97eac804f4f Mon Sep 17 00:00:00 2001 From: Hannes Wellmann Date: Tue, 1 Oct 2024 23:07:25 +0200 Subject: [PATCH 014/232] Simplify DirtyFileSearchParticipantServiceTracker --- ...tyFileSearchParticipantServiceTracker.java | 49 ++++++------------- 1 file changed, 15 insertions(+), 34 deletions(-) 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; } } From e37086d25ca8ad46f85dae63ba5ef6268ba42a26 Mon Sep 17 00:00:00 2001 From: Heiko Klare Date: Thu, 3 Oct 2024 13:30:22 +0200 Subject: [PATCH 015/232] Find/replace overlay: avoid attempt to set focus while disposing overlay When closing a find/replace overlay, the SWT dispose operations try to set focus to some remaining widget. The HistoryTextWrapper tries to pass this operation to the contained Text widget without validating it for already being disposed (which is the case when closing the overlay), thus potentially leading to exception. This change ensures that before trying to set focus on the Text widget of a HistoryTextWrapper that widget is validated for not being disposed. --- .../internal/findandreplace/overlay/HistoryTextWrapper.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) 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..afd66ac03c0 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 From c777660e94fd2b4331cf9775ce75bba549b9c17b Mon Sep 17 00:00:00 2001 From: Heiko Klare Date: Thu, 3 Oct 2024 09:17:03 +0200 Subject: [PATCH 016/232] Find/replace UI tests: unify focus validation The find/replace UI tests currently validate for proper focus only in specific situations, usually restricted to when running on GTK. On the one hand, this makes debugging more difficult in case the focus was not properly set in the beginning, e.g., because the workbench window was not active when the test started. On the other hand, it makes the test execution more prone to be indeterministic and platform-specific, as GTK-specific code is involved. This change provides three improvements to mitigate these issues: - It ensures that the workbench window is active when test execution starts - It validates that the find/replace UI (overlay/dialog) has focus every time it is opened during test execution - It gets rid of GTK-specific focus validation --- .../findandreplace/FindReplaceTestUtil.java | 24 +++++++++++++++++++ .../findandreplace/FindReplaceUITest.java | 23 +++++------------- .../overlay/FindReplaceOverlayTest.java | 5 +++- .../findandreplace/overlay/OverlayAccess.java | 2 +- .../tests/FindReplaceDialogTest.java | 11 ++++----- 5 files changed, 40 insertions(+), 25 deletions(-) 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..f943211d545 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); 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 f9dda34774d..c19210ac315 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; @@ -46,7 +47,9 @@ public OverlayAccess openUIFromTextViewer(TextViewer viewer) { Accessor actionAccessor= new Accessor(getFindReplaceAction(), FindReplaceAction.class); actionAccessor.invoke("showOverlayInEditor", null); FindReplaceOverlay overlay= (FindReplaceOverlay) actionAccessor.get("overlay"); - return new OverlayAccess(getFindReplaceTarget(), overlay); + OverlayAccess uiAccess= new OverlayAccess(getFindReplaceTarget(), overlay); + waitForFocus(uiAccess::hasFocus, testName.getMethodName()); + return uiAccess; } @Test 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 51450754661..342087b7cb3 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 @@ -102,7 +102,7 @@ private void restoreInitialConfiguration() { public void closeAndRestore() { restoreInitialConfiguration(); assertInitialConfiguration(); - overlay.close(); + close(); } @Override 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 2fa0fb63b03..5e846f760de 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; @@ -52,7 +53,9 @@ public DialogAccess openUIFromTextViewer(TextViewer viewer) { Accessor fFindReplaceDialogStubAccessor= new Accessor(fFindReplaceDialogStub, "org.eclipse.ui.texteditor.FindReplaceAction$FindReplaceDialogStub", getClass().getClassLoader()); Dialog dialog= (Dialog) fFindReplaceDialogStubAccessor.invoke("getDialog", null); - return new DialogAccess(getFindReplaceTarget(), dialog); + DialogAccess uiAccess= new DialogAccess(getFindReplaceTarget(), dialog); + waitForFocus(uiAccess::hasFocus, testName.getMethodName()); + return uiAccess; } @Test @@ -65,8 +68,6 @@ public void testFocusNotChangedWhenEnterPressed() { dialog.getFindCombo().setFocus(); dialog.setFindText("line"); dialog.simulateKeyboardInteractionInFindInputField(SWT.CR, false); - ensureHasFocusOnGTK(); - assertTrue(dialog.getFindCombo().isFocusControl()); Button wrapCheckBox= dialog.getButtonForSearchOption(SearchOptions.WRAP); @@ -86,9 +87,8 @@ public void testFocusNotChangedWhenButtonMnemonicPressed() { initializeTextViewerWithFindReplaceUI(""); DialogAccess dialog= getDialog(); - dialog.setFindText("line"); - ensureHasFocusOnGTK(); + runEventQueue(); Button wrapCheckBox= dialog.getButtonForSearchOption(SearchOptions.WRAP); wrapCheckBox.setFocus(); @@ -122,7 +122,6 @@ public void testShiftEnterReversesSearchDirectionDialogSpecific() { DialogAccess dialog= getDialog(); dialog.setFindText("line"); - ensureHasFocusOnGTK(); IFindReplaceTarget target= getFindReplaceTarget(); dialog.simulateKeyboardInteractionInFindInputField(SWT.CR, false); From bcd1e38156f53a6022f015127d0ba3bdfd580525 Mon Sep 17 00:00:00 2001 From: Heiko Klare Date: Sat, 7 Sep 2024 10:38:29 +0200 Subject: [PATCH 017/232] Correct contract of Window#getShell() Currently, Window#getShell() only states to return null if the shell has not been created yet. It will, however, also return null if the Window has been closed. The contract of Window#close() only states that the shell will be disposed, but not that #getShell() will return null afterwards as well. This change improves the explicit contract with this information. It has been part of the implicit contract anyway, since it is the behavior ever since the class and method exist. --- .../src/org/eclipse/jface/window/Window.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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() { From 73b531480a210eb24f454497d931d07ca87c7ffa Mon Sep 17 00:00:00 2001 From: Heiko Klare Date: Sat, 7 Sep 2024 11:19:34 +0200 Subject: [PATCH 018/232] Bump version of org.eclipse.jface for 4.34 stream --- bundles/org.eclipse.jface/META-INF/MANIFEST.MF | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bundles/org.eclipse.jface/META-INF/MANIFEST.MF b/bundles/org.eclipse.jface/META-INF/MANIFEST.MF index 8191e53d6e7..de20b5090a8 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.35.100.qualifier Bundle-Vendor: %providerName Bundle-Localization: plugin Export-Package: org.eclipse.jface, From ebbc32d9c0408a0f5aa7bc6ab0372a807d9d39cd Mon Sep 17 00:00:00 2001 From: Ed Merks Date: Fri, 4 Oct 2024 11:28:54 +0200 Subject: [PATCH 019/232] ProjectionAnnotationModel.expandAll should tolerate the empty selection - ITextSelection.emptySelection has offset and length -1 so those values need to be tolerated downstream, included in the recent-optimized ProjectionAnnotationModel.expandAll method. https://github.com/eclipse-platform/eclipse.platform.ui/issues/2257 --- .../text/source/projection/ProjectionAnnotationModel.java | 4 ++++ 1 file changed, 4 insertions(+) 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 892d917d301..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,6 +147,10 @@ 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(offset, length, true, true); From 7b0f77639c0177bcc380d315b0f79cc00e150053 Mon Sep 17 00:00:00 2001 From: Matthias Becker Date: Fri, 20 Sep 2024 14:02:25 +0200 Subject: [PATCH 020/232] Don't run the automatic registration during test execution If the IDE is running because we are executing automated tests it doesn't make sense to run this registration job. Fixes : https://github.com/eclipse-platform/eclipse.platform.ui/issues/2245 --- .../ide/application/IDEWorkbenchAdvisor.java | 2 +- .../ide/application/JUnitTestUtil.java | 59 +++++++++++++++++++ 2 files changed, 60 insertions(+), 1 deletion(-) create mode 100644 bundles/org.eclipse.ui.ide.application/src/org/eclipse/ui/internal/ide/application/JUnitTestUtil.java 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 From 2a523839813b20be41480d42e43e4ba42bd87bae Mon Sep 17 00:00:00 2001 From: Hannes Wellmann Date: Mon, 7 Oct 2024 00:29:13 +0200 Subject: [PATCH 021/232] [Oomph-Setup] Add eclipse.platform.ui configuration setup Additionally add a styled and drag&drop-able Oomph Configuration button and clean-up the build instructions. Part of https://github.com/eclipse-platform/eclipse.platform.releng.aggregator/issues/2430 --- README.md | 10 ++- releng/org.eclipse.ui.releng/.project | 2 +- .../platformUIConfiguration.setup | 86 +++++++++++++++++++ releng/org.eclipse.ui.releng/platformUi.setup | 5 ++ 4 files changed, 99 insertions(+), 4 deletions(-) create mode 100644 releng/org.eclipse.ui.releng/platformUIConfiguration.setup 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. + +[![Create Eclipse Development Environment for Eclipse Platform UI](https://download.eclipse.org/oomph/www/setups/svg/Eclipse_Platform_UI.svg)]( +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/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"> + + + Date: Mon, 7 Oct 2024 20:30:25 +0200 Subject: [PATCH 022/232] [Build] Remove build.properties for not built 'releng' folder --- releng/build.properties | 1 - 1 file changed, 1 deletion(-) delete mode 100644 releng/build.properties 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 From cc770ec69b1d6b26c91f001ab7dbf9ac1e8d53ee Mon Sep 17 00:00:00 2001 From: Andrey Loskutov Date: Tue, 1 Oct 2024 14:38:23 +0200 Subject: [PATCH 023/232] Removed bash editor, added javax.inject --- releng/org.eclipse.ui.releng/platformUiTools.p2f | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/releng/org.eclipse.ui.releng/platformUiTools.p2f b/releng/org.eclipse.ui.releng/platformUiTools.p2f index d5290928074..f1c81eb9e1c 100644 --- a/releng/org.eclipse.ui.releng/platformUiTools.p2f +++ b/releng/org.eclipse.ui.releng/platformUiTools.p2f @@ -22,6 +22,11 @@ + + + + + @@ -97,11 +102,6 @@ - - - - - From c3eba42437be71b5be2bbf793bcc9dca90337e0d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Kubitz?= Date: Tue, 8 Oct 2024 12:49:33 +0200 Subject: [PATCH 024/232] ContributedPartRenderer$1.setFocus: prevent NPE #2367 during PartRenderingEngineTests https://github.com/eclipse-platform/eclipse.platform.ui/issues/2367 --- .../ui/workbench/renderers/swt/ContributedPartRenderer.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) 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 { From 7d29a593fa1c5eb9cc1568dcf73fb59798bc0ddc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Kubitz?= Date: Tue, 8 Oct 2024 12:59:42 +0200 Subject: [PATCH 025/232] [tests] log a TestException instead of RuntimeException nightly logfile is flooded with intentional RuntimeException that are hard to distinguish from unintentional exceptions. --- .../e4/ui/tests/application/ClientEditor.java | 3 ++- .../tests/application/EPartServiceTest.java | 11 ++++---- .../tests/model/test/util/TestException.java | 25 +++++++++++++++++++ .../e4/ui/tests/workbench/SampleView.java | 5 ++-- 4 files changed, 36 insertions(+), 8 deletions(-) create mode 100644 tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/tests/model/test/util/TestException.java 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/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(); } } From 6f8d42607df60eb32cd8ca18c02260b18924d455 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Kubitz?= Date: Wed, 9 Oct 2024 14:55:07 +0200 Subject: [PATCH 026/232] WorkingSetActionProvider: fix "Widget is disposed" as logged during LabelProviderTest asyncExec can happen when viewer is already disposed --- .../navigator/resources/actions/WorkingSetActionProvider.java | 3 +++ 1 file changed, 3 insertions(+) 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 From b85d17ee53c2ff0a6df7586db73b5082715dcbb3 Mon Sep 17 00:00:00 2001 From: Eclipse Platform Bot Date: Wed, 9 Oct 2024 13:00:31 +0000 Subject: [PATCH 027/232] Version bump(s) for 4.34 stream --- bundles/org.eclipse.ui.navigator.resources/META-INF/MANIFEST.MF | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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..5e9f968e313 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.500.qualifier Bundle-Activator: org.eclipse.ui.internal.navigator.resources.plugin.WorkbenchNavigatorPlugin Bundle-Vendor: %Plugin.providerName Bundle-Localization: plugin From 72ec5a41cd65447384505d67729fcefed1c51170 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Kubitz?= Date: Wed, 9 Oct 2024 14:51:58 +0200 Subject: [PATCH 028/232] [test] TestLabelProvider: reduce font not disposed warnings to a single "SWT Resource was not properly disposed" during LabelProviderTest (and fixed the font to be not bold) --- .../org/eclipse/ui/tests/navigator/NavigatorTestBase.java | 2 +- .../ui/tests/navigator/extension/TestLabelProvider.java | 7 +++---- .../tests/navigator/extension/TestLabelProviderBlank.java | 2 -- .../tests/navigator/extension/TestLabelProviderBlue.java | 2 -- .../tests/navigator/extension/TestLabelProviderCyan.java | 2 -- .../navigator/extension/TestLabelProviderPlainGreen.java | 2 -- .../navigator/extension/TestLabelProviderPlainRed.java | 2 -- .../navigator/extension/TestLabelProviderStyledGreen.java | 2 -- .../navigator/extension/TestLabelProviderStyledRed.java | 2 -- 9 files changed, 4 insertions(+), 19 deletions(-) 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/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; From 1e895cc6a63e8ff8098ecd2976c6b5e0212c7557 Mon Sep 17 00:00:00 2001 From: Eclipse Platform Bot Date: Wed, 9 Oct 2024 12:57:57 +0000 Subject: [PATCH 029/232] Version bump(s) for 4.34 stream --- tests/org.eclipse.ui.tests.navigator/META-INF/MANIFEST.MF | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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..30b05fff0f3 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.600.qualifier Bundle-Localization: plugin Require-Bundle: org.eclipse.core.resources, org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)", From 11631040334f663cab56b2de9e516ce349a97447 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Kubitz?= Date: Wed, 9 Oct 2024 15:45:02 +0200 Subject: [PATCH 030/232] UITestCase.fail(String, Throwable): append the throwable as cause --- .../src/org/eclipse/ui/tests/harness/util/UITestCase.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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..4ebc7ed06f2 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 @@ -115,7 +115,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) { From b945db18aa8d977db4c16ce119f9b725bc76b857 Mon Sep 17 00:00:00 2001 From: Eclipse Platform Bot Date: Wed, 9 Oct 2024 13:49:46 +0000 Subject: [PATCH 031/232] Version bump(s) for 4.34 stream --- tests/org.eclipse.ui.tests.harness/META-INF/MANIFEST.MF | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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, From d5815f367b626162880500ed936005a67a1b9684 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Kubitz?= Date: Wed, 9 Oct 2024 16:32:27 +0200 Subject: [PATCH 032/232] [ui.tests] log a TestException instead of RuntimeException Nightly org.eclipse.ui.tests.UiTestSuite.txt contains intentional RuntimeException that are hard to distinguish from unintentional exceptions. --- .../ui/tests/api/BadElementFactory.java | 4 +-- .../ui/tests/api/IWorkingSetManagerTest.java | 2 +- .../eclipse/ui/tests/api/TestException.java | 25 +++++++++++++++++++ 3 files changed, 28 insertions(+), 3 deletions(-) create mode 100644 tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/api/TestException.java 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/IWorkingSetManagerTest.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/api/IWorkingSetManagerTest.java index e251eaf394a..230472282f1 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 @@ -419,7 +419,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/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."); + } + +} From a431d71a5081b9c486a23d5718c5b58e6bdcfc8b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Kubitz?= Date: Wed, 9 Oct 2024 16:18:42 +0200 Subject: [PATCH 033/232] PerspectiveSwitcher.ignoreEvent: fix NPE perspSwitcherToolbar is null before createWidget() called --- .../addons/perspectiveswitcher/PerspectiveSwitcher.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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/Eclipse UI/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/Eclipse UI/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; } From 7c018efcc78804005e2779ed20e8dd8d852355ac Mon Sep 17 00:00:00 2001 From: Matthias Becker Date: Tue, 8 Oct 2024 11:12:37 +0200 Subject: [PATCH 034/232] Fix failing StackRendererTest Test Calling notifyListeners is not necessary any more. Fixes: https://github.com/eclipse-platform/eclipse.platform.swt/issues/1515 --- .../e4/ui/workbench/renderers/swt/StackRendererTest.java | 4 ---- 1 file changed, 4 deletions(-) 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()); } From d50e66d0458c2359cda0bde574fb3cfa91f64e04 Mon Sep 17 00:00:00 2001 From: Enda O Brien Date: Thu, 10 Oct 2024 11:04:55 +0100 Subject: [PATCH 035/232] Squashed commit of the following: commit f67c61a8757768bfb724ef802ec1a69251ec1a15 Author: Enda O Brien Date: Tue Sep 24 14:40:50 2024 +0100 579498 filter dialog types #144 Squashed commit of the following: commit 24db6db5a6b31ad65d6f3a0f92b53e6cd709621d Author: Enda O Brien Date: Fri Sep 20 13:19:55 2024 +0100 579498 filter dialog types #144 Squashed commit of the following: commit 94f352d0a8a1154c9781beb5c8de3e5199c1f1e3 Author: Enda O Brien Date: Thu Apr 4 17:07:02 2024 +0100 Fixed a couple of warnings in test code commit 49a195d9a2f882d65ef67a3784cc653b3f1bcbe4 Author: Enda O Brien Date: Wed Aug 24 15:54:38 2022 +0100 put add and addAll back in previous order commit 7dd8032edbd80b8cc0e5887f66800b497d2bd9b5 Author: Enda O Brien Date: Wed Aug 24 15:11:23 2022 +0100 Moved copyright to be first lines in files commit 87763b5ed2ee0b382a8d67d2d5acd0d71b76a1a1 Author: Enda O Brien Date: Wed Aug 24 14:41:46 2022 +0100 Modified copyright message in test code to include my name commit 1b08d4a240da3ceb00bed57fc3a8a61395529af5 Author: Enda O Brien Date: Wed Aug 24 14:09:12 2022 +0100 updated documentation of markerSupport.exsd commit 579fca05713788e3b11e7c071d64bbc639aae612 Author: Enda O Brien Date: Wed Aug 24 12:04:44 2022 +0100 Added copyright notice to test code commit 1271c95c57fafe27fca715d2cd2afa81e271a552 Author: Enda O Brien Date: Wed Aug 24 11:49:13 2022 +0100 Fixed whitespace differences commit 36e50cd1c5de661421665bd4cb1c2a10a7cd119b Author: Enda O Brien Date: Thu Jun 9 14:16:44 2022 +0100 Test code for application attribute on marker type reference commit 01940b2a4d97603cd04e129aa8435afe62e12618 Author: Enda O Brien Date: Thu Jun 9 10:57:55 2022 +0100 Added application attribute to type reference in marker content generator --- .../schema/markerSupport.exsd | 20 +++ .../MarkerSupportInternalUtilities.java | 21 +++ .../internal/ContentGeneratorDescriptor.java | 23 ++- .../ui/tests/NoApplicationAttribTestView.java | 30 ++++ .../eclipse/ui/tests/SubTypeOnlyTestView.java | 29 ++++ .../ui/tests/TypeAndSubTypeTestView.java | 29 ++++ .../eclipse/ui/tests/TypeOnlyTestView.java | 31 ++++ .../ui/tests/internal/InternalTestSuite.java | 2 + .../ui/tests/markers/MarkerTypeTests.java | 141 ++++++++++++++++++ tests/org.eclipse.ui.tests/plugin.xml | 52 ++++++- 10 files changed, 374 insertions(+), 4 deletions(-) create mode 100644 tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/NoApplicationAttribTestView.java create mode 100644 tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/SubTypeOnlyTestView.java create mode 100644 tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/TypeAndSubTypeTestView.java create mode 100644 tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/TypeOnlyTestView.java create mode 100644 tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/markers/MarkerTypeTests.java diff --git a/bundles/org.eclipse.ui.ide/schema/markerSupport.exsd b/bundles/org.eclipse.ui.ide/schema/markerSupport.exsd index 02e3f15ca26..d9d9ded7f2f 100644 --- a/bundles/org.eclipse.ui.ide/schema/markerSupport.exsd +++ b/bundles/org.eclipse.ui.ide/schema/markerSupport.exsd @@ -192,6 +192,26 @@ ON_ANY_IN_SAME_CONTAINER: on any item with the same top level container as the s + + + + 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/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..49f25fcdb7a 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; @@ -190,9 +191,25 @@ 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(); 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/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/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/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/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/plugin.xml b/tests/org.eclipse.ui.tests/plugin.xml index 3c15b5d245a..814b4507d30 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"> - + + + + + + + + + + + + + + + + + + + + + + + + From 86f9d93b57a516ff49499f4367fd7b9c2dbe92c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Kubitz?= Date: Thu, 10 Oct 2024 13:51:37 +0200 Subject: [PATCH 036/232] ImportExistingProjectsWizardTest: fix leaked Shells #2379 https://github.com/eclipse-platform/eclipse.platform.ui/issues/2379 --- .../ui/tests/harness/util/UITestCase.java | 13 ++++++----- .../ImportExistingProjectsWizardTest.java | 23 +++++++++++++------ 2 files changed, 23 insertions(+), 13 deletions(-) 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 4ebc7ed06f2..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(); @@ -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/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..80b17938d83 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 @@ -56,7 +56,6 @@ 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.FileUtil; import org.eclipse.ui.tests.harness.util.UITestCase; import org.eclipse.ui.wizards.datatransfer.ExternalProjectImportWizard; @@ -86,6 +85,8 @@ public class ImportExistingProjectsWizardTest extends UITestCase { private String zipLocation = null; + private WizardDialog dialog; + private boolean originalRefreshSetting; public ImportExistingProjectsWizardTest() { @@ -93,7 +94,7 @@ public ImportExistingProjectsWizardTest() { } private Shell getShell() { - return DialogCheck.getShell(); + return PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(); } @Override @@ -109,6 +110,11 @@ protected void doSetUp() throws Exception { @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--) { @@ -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), From 3cddf27b51b4c0ba38e1aad5f6ac0714433f4b36 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Kubitz?= Date: Thu, 10 Oct 2024 14:36:09 +0200 Subject: [PATCH 037/232] MarkerViewTests: fix leaked Shell https://github.com/eclipse-platform/eclipse.platform.ui/issues/2379 --- .../org/eclipse/ui/tests/markers/MarkerViewTests.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) 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..6efcc2e7a25 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 @@ -46,9 +46,9 @@ public void testOpenView() { IWorkbenchPage page = window.getActivePage(); try { - page.showView(IPageLayout.ID_BOOKMARKS); - page.showView(IPageLayout.ID_PROBLEM_VIEW); - page.showView(IPageLayout.ID_TASK_LIST); + page.hideView(page.showView(IPageLayout.ID_BOOKMARKS)); + page.hideView(page.showView(IPageLayout.ID_PROBLEM_VIEW)); + page.hideView(page.showView(IPageLayout.ID_TASK_LIST)); } catch (PartInitException e) { assertTrue(e.getLocalizedMessage(), false); return; From 83bf6708ffa207579c07fa6250f8957bc110df32 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Kubitz?= Date: Thu, 10 Oct 2024 14:43:20 +0200 Subject: [PATCH 038/232] ImportExistingArchiveProjectFilterTest: fix leaked shells https://github.com/eclipse-platform/eclipse.platform.ui/issues/2379 --- .../ImportExistingArchiveProjectFilterTest.java | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) 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..5132ead15f5 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 @@ -40,13 +40,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 +66,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--) { @@ -158,6 +162,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 +178,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 +193,6 @@ public WizardProjectsImportPage getNewWizard() { } private Shell getShell() { - return DialogCheck.getShell(); + return PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(); } } From 4e0740d71ca4f8160f2272a4b4afb17dca79bbf9 Mon Sep 17 00:00:00 2001 From: Ed Merks Date: Thu, 10 Oct 2024 16:46:01 +0200 Subject: [PATCH 039/232] Remove include of org.apache.xmlgraphics from org.eclipse.e4.rcp feature - This is to avoid needing to touch the feature when this 3rd party dependency is updated in the target platform. --- features/org.eclipse.e4.rcp/feature.xml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/features/org.eclipse.e4.rcp/feature.xml b/features/org.eclipse.e4.rcp/feature.xml index 82b63373cb5..1c784e56640 100644 --- a/features/org.eclipse.e4.rcp/feature.xml +++ b/features/org.eclipse.e4.rcp/feature.xml @@ -76,10 +76,6 @@ id="org.eclipse.e4.core.contexts" version="0.0.0"/> - - From aec1a42f5b0787fde27ceef0cb1638be990cbf55 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Kubitz?= Date: Thu, 10 Oct 2024 15:11:08 +0200 Subject: [PATCH 040/232] MarkerViewUtilTest: fix leaked shells https://github.com/eclipse-platform/eclipse.platform.ui/issues/2379 --- .../org/eclipse/ui/tests/markers/MarkerViewUtilTest.java | 3 +++ 1 file changed, 3 insertions(+) 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..f33c4065931 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 @@ -91,6 +91,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 +99,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 +114,6 @@ public void testShowMarkers() throws CoreException { visible = page.isPartVisible(part); assertEquals(true, result); assertEquals(true, visible); + page.hideView(part); } } From 646fe5c34ff613f7189265d927b7147e73f6d55f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Kubitz?= Date: Thu, 10 Oct 2024 15:53:07 +0200 Subject: [PATCH 041/232] MarkerComparator.saveState: fix ArrayIndexOutOfBoundsException as logged during UiTestSuite --- .../eclipse/ui/internal/views/markers/MarkerComparator.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) 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()))); From 859c687e49ebfd77fce60277ec1725111bffb92f Mon Sep 17 00:00:00 2001 From: Dietrich Travkin Date: Thu, 15 Aug 2024 17:37:23 +0200 Subject: [PATCH 042/232] Load marker content generator details from extensions #2193 This change adds missing functionality for the extension 'markerContentGeneratorExtension'. So far, ContentGeneratorDescriptor supports this extension with only getFilterReferences(). I.e. ContentGeneratorDescriptor only lists filter references of extensions, on top of its own filter references. With this change, getAllFields(), getInitialVisible() and getMarkerTypes() are also aggregating values for ContentGeneratorDescriptor and its extensions. As a result, e.g. the problems view and markers view can be extended with new columns. For example, an issue ID and URL to a detailed problem description. Fixes: #2193 --- .../internal/ContentGeneratorDescriptor.java | 51 ++++++++++++- .../tests/markers/MarkerSupportViewTest.java | 73 +++++++++++++++++++ .../tests/markers/ProblemKeyMarkerField.java | 16 ++++ tests/org.eclipse.ui.tests/plugin.xml | 72 +++++++++++++++++- 4 files changed, 207 insertions(+), 5 deletions(-) create mode 100644 tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/markers/ProblemKeyMarkerField.java 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 49f25fcdb7a..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 @@ -21,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; @@ -45,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; @@ -79,6 +82,7 @@ private void addDefinedGroups(Collection groupss) { */ public void addExtensions(Collection extensions) { generatorExtensions = extensions; + clearCaches(); } /** @@ -97,7 +101,7 @@ private void addGroupsFrom(IConfigurationElement element, Collection selectedTypes) { - return selectedTypes.containsAll(markerTypes); + return selectedTypes.containsAll(getMarkerTypes()); } /** @@ -106,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; } /** @@ -157,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; } /** @@ -215,6 +233,8 @@ public Collection getMarkerTypes() { 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; } @@ -247,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); @@ -294,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/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..b76f1895892 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 @@ -14,7 +14,11 @@ 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 java.util.stream.Collectors; import org.eclipse.jface.viewers.CheckboxTableViewer; import org.eclipse.swt.widgets.Button; @@ -25,8 +29,13 @@ 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; @@ -125,6 +134,70 @@ 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) + .collect(Collectors.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).collect(Collectors.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()).collect(Collectors.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/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/plugin.xml b/tests/org.eclipse.ui.tests/plugin.xml index 814b4507d30..6350e67b8c6 100644 --- a/tests/org.eclipse.ui.tests/plugin.xml +++ b/tests/org.eclipse.ui.tests/plugin.xml @@ -3461,7 +3461,58 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From a0221165f4dd0884ff217e0e01b531c0e8349b20 Mon Sep 17 00:00:00 2001 From: Christopher Hermann Date: Thu, 10 Oct 2024 14:37:33 +0200 Subject: [PATCH 043/232] StickyScrollingHandlerTest: Improve expectation to the throttler The calls to the lines provider should be throttled. Expect at least one call and at most 3 calls. Fixes: #2190 --- .../stickyscroll/StickyScrollingHandlerTest.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) 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..3fc500fae2d 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,9 @@ 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.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.verify; import static org.mockito.Mockito.when; @@ -159,8 +160,10 @@ 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, stickyLinesProperties); + verify(linesProvider, atLeastOnce()).getStickyLines(sourceViewer, stickyLinesProperties); } private void waitInUi(int ms) throws InterruptedException { From 090a18aec3e9d75934621666af2e04f520979bea Mon Sep 17 00:00:00 2001 From: "Praveen S.K" Date: Thu, 19 Sep 2024 14:42:55 +0530 Subject: [PATCH 044/232] Improve "Close mode" settings in Editor Preference Make more clear that these two setting belong together. Change-Id: Idf0c683df571ae124e8166e4dcf6bb9536debbb3 --- .../ui/internal/WorkbenchMessages.java | 2 +- .../dialogs/EditorsPreferencePage.java | 32 ++++++++++--------- .../eclipse/ui/internal/messages.properties | 8 ++--- 3 files changed, 22 insertions(+), 20 deletions(-) diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchMessages.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchMessages.java index dbddbbb6b6b..f6acb4d73df 100644 --- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchMessages.java +++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchMessages.java @@ -744,7 +744,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/dialogs/EditorsPreferencePage.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/EditorsPreferencePage.java index 401b1fc62e0..9705291e8cb 100644 --- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/EditorsPreferencePage.java +++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/EditorsPreferencePage.java @@ -18,12 +18,15 @@ import static org.eclipse.swt.events.SelectionListener.widgetSelectedAdapter; +import org.eclipse.jface.layout.GridDataFactory; +import org.eclipse.jface.layout.GridLayoutFactory; 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 +49,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; @@ -213,11 +215,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 +230,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 +258,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/messages.properties b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/messages.properties index 62751910b19..a0d3827e92c 100644 --- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/messages.properties +++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/messages.properties @@ -493,10 +493,10 @@ OpenPerspectiveDialogAction_tooltip=Open Perspective #---- General Preferences---- PreferencePage_noDescription = (No description available) -PreferencePageParameterValues_pageLabelSeparator = \ >\ +PreferencePageParameterValues_pageLabelSeparator = \ >\ ThemingEnabled = E&nable theming ThemeChangeWarningText = Restart for the theme changes to take full effect -ThemeChangeWarningTitle = Theme Changed +ThemeChangeWarningTitle = Theme Changed # --- Workbench ----- WorkbenchPreference_openMode=Open mode WorkbenchPreference_doubleClick=D&ouble click @@ -729,8 +729,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}. From 78c9a1c60a876e6e2c9163edb867c2df620054e9 Mon Sep 17 00:00:00 2001 From: Heiko Klare Date: Mon, 9 Sep 2024 09:14:06 +0200 Subject: [PATCH 045/232] Find/replace overlay: replace shell with integrated composite #2099 The FindReplaceOverlay is currently realized as a separate shell (more precisely, a JFace Dialog), which is placed at a proper position on top of the workbench shell. This has some drawback: - It has to manually adapt to movements of the parent shell or the target part/widget - It has to manually hide and show depending on visibility changes of the target part/widget - It does not follow events of the target immediately, i.e., movements are always some milliseconds behind, minimize/maximize operations/animations are not synchronous etc. - It does not locate properly when the platform uses Wayland, as manual shell positioning is not possible there This change replaces the dialog-based implementation of the FindReplaceOverlay with an in-place composite-based implementation. A composite is created in the target widget and placed relative to this composite. In consequence, the overlay automatically follows all move, resize, hide/show operations of the target widget. Fixes https://github.com/eclipse-platform/eclipse.platform.swt/issues/1447 Fixes https://github.com/eclipse-platform/eclipse.platform.ui/issues/2099 Fixes https://github.com/eclipse-platform/eclipse.platform.ui/issues/2246 --- .../overlay/FindReplaceOverlay.java | 548 +++++++----------- .../ui/texteditor/FindReplaceAction.java | 2 +- .../findandreplace/overlay/OverlayAccess.java | 26 +- 3 files changed, 221 insertions(+), 355 deletions(-) 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 2abad115952..a6ae0d007f1 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,32 +13,29 @@ *******************************************************************************/ package org.eclipse.ui.internal.findandreplace.overlay; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; import java.util.List; -import java.util.function.Consumer; +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.MouseListener; -import org.eclipse.swt.events.ShellAdapter; -import org.eclipse.swt.events.ShellEvent; 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.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Display; -import org.eclipse.swt.widgets.Listener; import org.eclipse.swt.widgets.ScrollBar; import org.eclipse.swt.widgets.Scrollable; import org.eclipse.swt.widgets.Shell; @@ -46,25 +43,22 @@ import org.eclipse.swt.widgets.ToolItem; import org.eclipse.swt.widgets.Widget; +import org.eclipse.core.runtime.Status; + 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.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.IWorkbenchPart; -import org.eclipse.ui.IWorkbenchPartReference; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.fieldassist.ContentAssistCommandAdapter; import org.eclipse.ui.internal.findandreplace.FindReplaceLogic; @@ -72,13 +66,14 @@ 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.part.MultiPageEditorSite; +import org.eclipse.ui.internal.texteditor.TextEditorPlugin; +import org.eclipse.ui.texteditor.AbstractTextEditor; import org.eclipse.ui.texteditor.IAbstractTextEditorHelpContextIds; 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)); @@ -89,11 +84,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')); @@ -112,10 +107,10 @@ private final class KeyboardShortcuts { private FindReplaceLogic findReplaceLogic; private final IWorkbenchPart targetPart; - private boolean overlayOpen; private boolean replaceBarOpen; - private Composite container; + private final Composite targetControl; + private Composite containerControl; private AccessibleToolBar replaceToggleTools; private ToolItem replaceToggle; @@ -133,7 +128,6 @@ private final class KeyboardShortcuts { private ToolItem searchForwardButton; private ToolItem selectAllButton; private AccessibleToolBar closeTools; - private ToolItem closeButton; private Composite replaceContainer; private Composite replaceBarContainer; @@ -142,26 +136,32 @@ private final class KeyboardShortcuts { private ToolItem replaceButton; private ToolItem replaceAllButton; - private Color backgroundToUse; + private Color widgetBackgroundColor; + private Color overlayBackgroundColor; private Color normalTextForegroundColor; private boolean positionAtTop = true; - private final TargetPartVisibilityHandler targetPartVisibilityHandler; private ContentAssistCommandAdapter contentAssistSearchField, contentAssistReplaceField; 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) { @@ -177,8 +177,12 @@ 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(); replaceBar.storeHistory(); @@ -186,142 +190,28 @@ private void performReplaceAll() { } 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.isVisible()) { + 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) { @@ -341,10 +231,9 @@ private static IDialogSettings getDialogSettings() { return settings; } - @Override - public boolean close() { - if (!overlayOpen) { - return true; + public void close() { + if (containerControl.isDisposed() || !containerControl.isVisible()) { + return; } if (targetPart != null) { targetPart.setFocus(); @@ -352,32 +241,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); assignIDs(); - updateFromTargetSelection(); - searchBar.forceFocus(); - - getShell().layout(); + containerControl.layout(); + containerControl.moveAbove(null); updatePlacementAndVisibility(); updateContentAssistAvailability(); - return returnCode; + searchBar.setFocus(); + updateFromTargetSelection(); } private void storeOverlaySettings() { @@ -386,9 +267,7 @@ private void storeOverlaySettings() { private void restoreOverlaySettings() { Boolean shouldOpenReplaceBar = getDialogSettings().getBoolean(REPLACE_BAR_OPEN_DIALOG_SETTING); - if (shouldOpenReplaceBar) { - toggleReplace(); - } + setReplaceVisible(shouldOpenReplaceBar); } @SuppressWarnings("nls") @@ -410,84 +289,27 @@ private void assignIDs() { } } - 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); - selectAllButton.setBackground(color); - searchBackwardButton.setBackground(color); - searchForwardButton.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); - } - } - 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) { - createMainContainer(parent); - + private void createContainerAndSearchControls(Composite parent) { + if (insertedInTargetParent()) { + parent = parent.getParent(); + } retrieveBackgroundColor(); - - createFindContainer(); - createSearchBar(); - createSearchTools(); - createCloseTools(); + createMainContainer(parent); initializeSearchShortcutHandlers(); - container.layout(); - - applyDialogFont(container); - return container; + containerControl.layout(); } private void initializeSearchShortcutHandlers() { @@ -498,24 +320,89 @@ private void initializeSearchShortcutHandlers() { /** * 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() { 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(); + } + + 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); @@ -553,7 +440,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) @@ -608,7 +496,7 @@ private void createWholeWordsButton() { } private void createReplaceTools() { - Color warningColor = JFaceColors.getErrorText(getShell().getDisplay()); + Color warningColor = JFaceColors.getErrorText(containerControl.getShell().getDisplay()); replaceTools = new AccessibleToolBar(replaceContainer); @@ -647,6 +535,10 @@ private ContentAssistCommandAdapter createContentAssistField(HistoryTextWrapper } private void createSearchBar() { + 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(), "searchhistory", //$NON-NLS-1$ HISTORY_SIZE); searchBar = new HistoryTextWrapper(searchHistory, searchBarContainer, SWT.SINGLE); @@ -664,11 +556,32 @@ private void createSearchBar() { @Override public void focusGained(FocusEvent e) { findReplaceLogic.resetIncrementalBaseLocation(); + setTextEditorActionsActivated(false); } @Override public void focusLost(FocusEvent e) { showUserFeedback(normalTextForegroundColor, false); + setTextEditorActionsActivated(true); + } + + /* + * Adapted from + * org.eclipse.jdt.internal.ui.javaeditor.JavaEditor#setActionsActivated( + * boolean) + */ + private void setTextEditorActionsActivated(boolean state) { + if (!(targetPart instanceof AbstractTextEditor)) { + return; + } + try { + Method method = AbstractTextEditor.class.getDeclaredMethod("setActionActivation", boolean.class); //$NON-NLS-1$ + method.setAccessible(true); + method.invoke(targetPart, Boolean.valueOf(state)); + } catch (IllegalArgumentException | InvocationTargetException | IllegalAccessException | SecurityException | NoSuchMethodException ex) { + TextEditorPlugin.getDefault().getLog() + .log(Status.error("cannot (de-)activate actions for text editor", ex)); //$NON-NLS-1$ + } } }); @@ -682,6 +595,10 @@ private void updateIncrementalSearch() { } 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); @@ -696,63 +613,35 @@ private void createReplaceBar() { 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) .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(4, 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); - } - private void createReplaceToggle() { - replaceToggleTools = new AccessibleToolBar(container); - GridDataFactory.fillDefaults().grab(false, true).align(GridData.FILL, GridData.FILL) - .applyTo(replaceToggleTools); - replaceToggleTools.addMouseListener(MouseListener.mouseDownAdapter(__ -> toggleReplace())); - - replaceToggle = new AccessibleToolItemBuilder(replaceToggleTools) - .withShortcuts(KeyboardShortcuts.TOGGLE_REPLACE) - .withImage(FindReplaceOverlayImages.get(FindReplaceOverlayImages.KEY_OPEN_REPLACE_AREA)) - .withToolTipText(FindReplaceMessages.FindReplaceOverlay_replaceToggle_toolTip) - .withOperation(this::toggleReplace).build(); + createReplaceBar(); + createReplaceTools(); } - 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(); } @@ -773,12 +662,9 @@ private void createReplaceDialog() { } replaceBarOpen = true; createReplaceContainer(); - createReplaceBar(); - createReplaceTools(); initializeReplaceShortcutHandlers(); updatePlacementAndVisibility(); - applyOverlayColors(backgroundToUse, true); assignIDs(); replaceBar.forceFocus(); } @@ -873,33 +759,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); @@ -908,21 +774,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(); @@ -936,13 +797,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; @@ -954,9 +814,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) { @@ -967,9 +827,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); } } @@ -1009,7 +868,7 @@ private void updateFromTargetSelection() { } private void evaluateFindReplaceStatus() { - Color warningColor = JFaceColors.getErrorText(getShell().getDisplay()); + Color warningColor = JFaceColors.getErrorText(containerControl.getShell().getDisplay()); IFindReplaceStatus status = findReplaceLogic.getStatus(); if (!status.wasSuccessful()) { @@ -1041,7 +900,7 @@ private static boolean okayToUse(Widget widget) { public void setPositionToTop(boolean shouldPositionOverlayOnTop) { positionAtTop = shouldPositionOverlayOnTop; - if (overlayOpen) { + if (containerControl != null && containerControl.isVisible()) { updatePlacementAndVisibility(); } } @@ -1061,4 +920,5 @@ private void setContentAssistsEnablement(boolean enable) { private void updateContentAssistAvailability() { setContentAssistsEnablement(findReplaceLogic.isAvailableAndActive(SearchOptions.REGEX)); } + } \ No newline at end of file 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/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 342087b7cb3..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 @@ -24,9 +24,9 @@ import java.util.stream.Collectors; import org.eclipse.swt.SWT; +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.jface.text.IFindReplaceTarget; @@ -63,13 +63,10 @@ class OverlayAccess implements IFindReplaceUIAccess { private final FindReplaceOverlay overlay; - private final Shell shell; - OverlayAccess(IFindReplaceTarget findReplaceTarget, FindReplaceOverlay findReplaceOverlay) { this.findReplaceTarget= findReplaceTarget; overlay= findReplaceOverlay; - shell= overlay.getShell(); - WidgetExtractor widgetExtractor= new WidgetExtractor(FindReplaceOverlay.ID_DATA_KEY, shell); + WidgetExtractor widgetExtractor= new WidgetExtractor(FindReplaceOverlay.ID_DATA_KEY, findReplaceOverlay.getContainerControl()); find= widgetExtractor.findHistoryTextWrapper("searchInput"); caseSensitive= widgetExtractor.findToolItem("caseSensitiveSearch"); wholeWord= widgetExtractor.findToolItem("wholeWordSearch"); @@ -83,13 +80,17 @@ class OverlayAccess implements IFindReplaceUIAccess { private void extractReplaceWidgets() { if (!isReplaceDialogOpen() && Objects.nonNull(openReplaceDialog)) { - WidgetExtractor widgetExtractor= new WidgetExtractor(FindReplaceOverlay.ID_DATA_KEY, shell); + WidgetExtractor widgetExtractor= new WidgetExtractor(FindReplaceOverlay.ID_DATA_KEY, getContainerControl()); replace= widgetExtractor.findHistoryTextWrapper("replaceInput"); replaceButton= widgetExtractor.findToolItem("replaceOne"); replaceAllButton= widgetExtractor.findToolItem("replaceAll"); } } + private Composite getContainerControl() { + return overlay.getContainerControl(); + } + private void restoreInitialConfiguration() { find.setText(""); select(SearchOptions.GLOBAL); @@ -309,14 +310,19 @@ public void assertEnabled(SearchOptions option) { @Override public boolean isShown() { - return !shell.isDisposed() && shell.isVisible(); + return getContainerControl().isVisible(); } @Override public boolean hasFocus() { - Control focusControl= shell.getDisplay().getFocusControl(); - Shell focusControlShell= focusControl != null ? focusControl.getShell() : null; - return focusControlShell == shell; + Control focusControl= getContainerControl().getDisplay().getFocusControl(); + while (focusControl != null) { + if (getContainerControl() == focusControl) { + return true; + } + focusControl= focusControl.getParent(); + } + return false; } } From 545ac677314f6c4228218560d24e461bfdc13a86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Kubitz?= Date: Fri, 11 Oct 2024 14:21:40 +0200 Subject: [PATCH 046/232] TestRunLogUtil: add stacktrace to stdout Otherwise it's hard to tell which test failed when/first if errors are collected in other logfiles only. --- .../org/eclipse/ui/tests/harness/util/TestRunLogUtil.java | 6 ++++++ 1 file changed, 6 insertions(+) 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())); From 6d7fa3929c55384cf2962847586baed3973e4697 Mon Sep 17 00:00:00 2001 From: Ed Merks Date: Fri, 11 Oct 2024 06:11:24 +0200 Subject: [PATCH 047/232] Increase InternalDialog width hint from 50 characters to 70 characters --- .../eclipse/ui/internal/statushandlers/InternalDialog.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/statushandlers/InternalDialog.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/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/Eclipse UI/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)); From dea7b79dd7366084f864ffa56bab39ffde30f228 Mon Sep 17 00:00:00 2001 From: Maximilian Wittmer Date: Mon, 2 Sep 2024 13:14:51 +0200 Subject: [PATCH 048/232] SearchHistoryMenu: improve scrolling through selection with arrow keys Scrolling through the selection of the Search History now correctly starts at the first item and cycles through the boundaries (ie. scrolling down from the last item returns correctly to the first item of the list) fixes #2139 --- .../overlay/SearchHistoryMenu.java | 59 ++++++++++++++----- 1 file changed, 45 insertions(+), 14 deletions(-) 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() { From 1eead54aac4c037be1bbc08870ccf27aa870cfc8 Mon Sep 17 00:00:00 2001 From: Ed Merks Date: Sat, 12 Oct 2024 16:35:36 +0200 Subject: [PATCH 049/232] PreferencePageParameterValues_pageLabelSeparator add trailing space - This property is supposed to have a training space which was specified by `\ ` but the space as removed which then continues the property value onto the next line which is not the desired effect and results in the ThemingEnabled property being missing. --- .../Eclipse UI/org/eclipse/ui/internal/messages.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/messages.properties b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/messages.properties index a0d3827e92c..5b4f163b81c 100644 --- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/messages.properties +++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/messages.properties @@ -493,7 +493,7 @@ OpenPerspectiveDialogAction_tooltip=Open Perspective #---- General Preferences---- PreferencePage_noDescription = (No description available) -PreferencePageParameterValues_pageLabelSeparator = \ >\ +PreferencePageParameterValues_pageLabelSeparator = \ >\ ThemingEnabled = E&nable theming ThemeChangeWarningText = Restart for the theme changes to take full effect ThemeChangeWarningTitle = Theme Changed From 52d1a353369c6c93a9138144601bf601876fe79b Mon Sep 17 00:00:00 2001 From: raghucssit Date: Tue, 1 Oct 2024 13:24:05 +0200 Subject: [PATCH 050/232] Improve workspace lock error dialog. Write workspace lock info like user, host, java process id, display properties onto a new file .lock_info if the lock was successful. Read the current lock data in case of lock was unsuccessful and show it in error dialog. If the .lock_info does not exist or the file has no info then nothing is shown. For older eclipse versions. see https://github.com/eclipse-platform/eclipse.platform.ui/issues/2343 --- .../ide/application/IDEApplication.java | 208 +++++++++++++++++- .../ui/internal/ide/IDEWorkbenchMessages.java | 6 + .../ui/internal/ide/messages.properties | 6 + 3 files changed, 218 insertions(+), 2 deletions(-) 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..5deff13b81f 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 @@ -25,8 +25,11 @@ import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; +import java.net.InetAddress; import java.net.MalformedURLException; 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; @@ -49,7 +52,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 +86,22 @@ public class IDEApplication implements IApplication, IExecutableExtension { private static final String VERSION_FILENAME = "version.ini"; //$NON-NLS-1$ + private static final String LOCK_INFO_FILENAME = ".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 +248,7 @@ protected Object checkInstanceLocation(Shell shell, Map applicationArguments) { try { if (instanceLoc.lock()) { writeWorkspaceVersion(); + writeWsLockInfo(instanceLoc.getURL()); return null; } @@ -237,10 +261,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 +346,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 +366,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 +395,158 @@ 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 { + File lockFile = getLockInfoFile(workspaceUrl); + if (!lockFile.exists()) { + return null; + } + + StringBuilder sb = new StringBuilder(); + Properties props = new Properties(); + try (FileInputStream is = new FileInputStream(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. + * + * @param instanceLoc + */ + 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 = new FileOutputStream(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 File getLockInfoFile(URL workspaceUrl) { + Path lockInfoPath = Path.of(workspaceUrl.getPath(), METADATA_FOLDER, LOCK_INFO_FILENAME); + return lockInfoPath.toFile(); + } + + /** + * Creates the .lock_info file if it does not exist. + * + * @param workspaceUrl + * @return .lock_info file. + */ + private File createLockInfoFile(URL workspaceUrl) throws Exception { + File lockInfoFile = getLockInfoFile(workspaceUrl); + + if (lockInfoFile.exists()) + return lockInfoFile; + + Path createdPath = Files.createFile(lockInfoFile.toPath()); + if (createdPath != null) { + return createdPath.toFile(); + } + return null; + } + @SuppressWarnings("rawtypes") private static boolean isDevLaunchMode(Map args) { // see org.eclipse.pde.internal.core.PluginPathFinder.isDevLaunchMode() 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/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} From 7587ea1d05bcbbf36ddc8e08d28d571f886cda45 Mon Sep 17 00:00:00 2001 From: jannisCode Date: Tue, 8 Oct 2024 10:15:08 +0200 Subject: [PATCH 051/232] Changed the functionality of the regex search with control decorations --- .../internal/ui/text/TextSearchPage.java | 34 +++----- .../overlay/FindReplaceOverlay.java | 16 ++++ .../ui/texteditor/FindReplaceDialog.java | 57 +++++++++---- bundles/org.eclipse.ui/META-INF/MANIFEST.MF | 2 +- .../eclipse/ui/internal/SearchDecoration.java | 82 +++++++++++++++++++ 5 files changed, 151 insertions(+), 40 deletions(-) create mode 100644 bundles/org.eclipse.ui/src/org/eclipse/ui/internal/SearchDecoration.java 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.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 a6ae0d007f1..907a34d2a49 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 @@ -48,6 +48,7 @@ import org.eclipse.jface.bindings.keys.KeyStroke; import org.eclipse.jface.dialogs.Dialog; import org.eclipse.jface.dialogs.IDialogSettings; +import org.eclipse.jface.fieldassist.ControlDecoration; import org.eclipse.jface.fieldassist.TextContentAdapter; import org.eclipse.jface.layout.GridDataFactory; import org.eclipse.jface.layout.GridLayoutFactory; @@ -61,6 +62,7 @@ import org.eclipse.ui.IWorkbenchPart; 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; @@ -140,6 +142,7 @@ private final class KeyboardShortcuts { private Color overlayBackgroundColor; private Color normalTextForegroundColor; private boolean positionAtTop = true; + private ControlDecoration searchBarDecoration; private ContentAssistCommandAdapter contentAssistSearchField, contentAssistReplaceField; public FindReplaceOverlay(Shell parent, IWorkbenchPart part, IFindReplaceTarget target) { @@ -469,6 +472,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)); } @@ -542,6 +546,7 @@ private void createSearchBar() { HistoryStore searchHistory = new HistoryStore(getDialogSettings(), "searchhistory", //$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(); @@ -587,6 +592,9 @@ private void setTextEditorActionsActivated(boolean state) { }); searchBar.setMessage(FindReplaceMessages.FindReplaceOverlay_searchBar_message); contentAssistSearchField = createContentAssistField(searchBar, true); + searchBar.addModifyListener(Event -> { + decorate(); + }); } private void updateIncrementalSearch() { @@ -921,4 +929,12 @@ 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/texteditor/FindReplaceDialog.java b/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/FindReplaceDialog.java index 2ab91df8d15..d71941d293f 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; /** @@ -147,7 +150,10 @@ public void modifyText(ModifyEvent e) { fIgnoreNextEvent = false; return; } - evaluateFindReplaceStatus(); + modificationHandler.run(); + fFindField.addModifyListener(event -> { + decorate(); + }); updateButtonState(!findReplaceLogic.isActive(SearchOptions.INCREMENTAL)); } @@ -178,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. @@ -196,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. @@ -310,6 +318,7 @@ public void widgetSelected(SelectionEvent e) { writeSelection(); updateButtonState(!somethingFound); + updateFindHistory(); evaluateFindReplaceStatus(); } @@ -345,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, @@ -634,6 +644,8 @@ 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); @@ -750,6 +762,10 @@ public void widgetDefaultSelected(SelectionEvent e) { @Override public void widgetSelected(SelectionEvent e) { boolean newState = fIsRegExCheckBox.getSelection(); + decorate(); + if (!newState) { + regexOk = true; + } setupFindReplaceLogic(); storeSettings(); updateButtonState(); @@ -1050,9 +1066,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; } /** @@ -1092,8 +1109,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 @@ -1102,7 +1120,6 @@ private void updateButtonState(boolean disableReplace) { } } - /** * Updates the given combo with the given content. * @@ -1335,19 +1352,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() { diff --git a/bundles/org.eclipse.ui/META-INF/MANIFEST.MF b/bundles/org.eclipse.ui/META-INF/MANIFEST.MF index 165143157ed..df02157e273 100644 --- a/bundles/org.eclipse.ui/META-INF/MANIFEST.MF +++ b/bundles/org.eclipse.ui/META-INF/MANIFEST.MF @@ -7,7 +7,7 @@ Bundle-Activator: org.eclipse.ui.internal.UIPlugin Bundle-ActivationPolicy: lazy Bundle-Vendor: %Plugin.providerName Bundle-Localization: plugin -Export-Package: org.eclipse.ui.internal;x-internal:=true +Export-Package: org.eclipse.ui.internal;x-friends:="org.eclipse.ui.workbench.texteditor,org.eclipse.search" Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)", org.eclipse.swt;bundle-version="[3.126.0,4.0.0)";visibility:=reexport, org.eclipse.jface;bundle-version="[3.34.0,4.0.0)";visibility:=reexport, 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..47e4e148356 --- /dev/null +++ b/bundles/org.eclipse.ui/src/org/eclipse/ui/internal/SearchDecoration.java @@ -0,0 +1,82 @@ +/******************************************************************************* + * 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.Image; + +/** + * 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); + 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) { + try { + Pattern.compile(regex); + return ""; //$NON-NLS-1$ + } catch (PatternSyntaxException e) { + String message = e.getLocalizedMessage(); + + // Only preserve the first line of the original error message. + int i = 0; + while (i < message.length() && "\n\r".indexOf(message.charAt(i)) == -1) { //$NON-NLS-1$ + i++; + } + + return message.substring(0, i); + } + } + +} \ No newline at end of file From a2c40f5313fb4f9927ab7048d96b54b158fbd920 Mon Sep 17 00:00:00 2001 From: Madhumitha M V Date: Mon, 23 Sep 2024 17:06:57 +0530 Subject: [PATCH 052/232] Light (Preview) theme: Change to bg of vertical bar in editor Vertical bar next to the scroll bar in editor had white background color. This has been reverted back to grey. --- bundles/org.eclipse.ui.themes/css/e4_preview_gtk.css | 2 +- bundles/org.eclipse.ui.themes/css/e4_preview_mac.css | 3 +-- bundles/org.eclipse.ui.themes/css/e4_preview_win.css | 2 +- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/bundles/org.eclipse.ui.themes/css/e4_preview_gtk.css b/bundles/org.eclipse.ui.themes/css/e4_preview_gtk.css index c8dd132df1d..afa55f73283 100644 --- a/bundles/org.eclipse.ui.themes/css/e4_preview_gtk.css +++ b/bundles/org.eclipse.ui.themes/css/e4_preview_gtk.css @@ -122,7 +122,7 @@ CTabFolder.MArea { } CTabFolder Canvas { - background-color: #ffffff; + background-color: #f8f8f8; } .MTrimBar#org-eclipse-ui-main-toolbar { diff --git a/bundles/org.eclipse.ui.themes/css/e4_preview_mac.css b/bundles/org.eclipse.ui.themes/css/e4_preview_mac.css index 3a869957874..b426954c9d4 100644 --- a/bundles/org.eclipse.ui.themes/css/e4_preview_mac.css +++ b/bundles/org.eclipse.ui.themes/css/e4_preview_mac.css @@ -95,9 +95,8 @@ ColorDefinition#org-eclipse-ui-workbench-INACTIVE_TAB_TEXT_COLOR { } CTabFolder Canvas { - background-color: rgb(255, 255, 255); + background-color: #f8f8f8; } - .MTrimBar#org-eclipse-ui-trim-status { background-color: #f8f8f8; diff --git a/bundles/org.eclipse.ui.themes/css/e4_preview_win.css b/bundles/org.eclipse.ui.themes/css/e4_preview_win.css index 713844c0a8d..9b30f814d06 100644 --- a/bundles/org.eclipse.ui.themes/css/e4_preview_win.css +++ b/bundles/org.eclipse.ui.themes/css/e4_preview_win.css @@ -96,7 +96,7 @@ CTabFolder.MArea { } CTabFolder Canvas { - background-color: #ffffff; + background-color: #f8f8f8; } .MTrimBar#org-eclipse-ui-main-toolbar { From 3ffdfe3defcf17b1097ac3c9f5b7f485e02fde38 Mon Sep 17 00:00:00 2001 From: fedejeanne Date: Tue, 15 Oct 2024 13:17:58 +0200 Subject: [PATCH 053/232] Increase left margins in F&R overlay Allow for the error icon to appear completely when necessary e.g. when searching for an invalid regular expression. --- .../internal/findandreplace/overlay/FindReplaceOverlay.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 907a34d2a49..551fc8e6562 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 @@ -624,7 +624,7 @@ private void createReplaceBar() { 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); createSearchBar(); @@ -635,7 +635,7 @@ private void createSearchContainer() { private void createReplaceContainer() { replaceContainer = new FixedColorComposite(contentGroup, SWT.NONE, widgetBackgroundColor); GridDataFactory.fillDefaults().grab(true, true).align(GridData.FILL, GridData.FILL).applyTo(replaceContainer); - GridLayoutFactory.fillDefaults().margins(0, 0).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); createReplaceBar(); From 1ee6274d656d785e24dd3438e1720a9da7cb862b Mon Sep 17 00:00:00 2001 From: Hannes Wellmann Date: Mon, 14 Oct 2024 22:58:41 +0200 Subject: [PATCH 054/232] [Build] Fix archiving of log files in Jenkins pipeline and other minor clean-ups of the Jenkinsfile. Remove explicit declaration of properties that are already defined in the eclipse-platform-parent/pom.xml --- Jenkinsfile | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index c7f47a2d0bd..18c24bf47ea 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -14,24 +14,25 @@ pipeline { 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()] } } From 946e3b3b3e04bd505738d62ee8d7748848b1b511 Mon Sep 17 00:00:00 2001 From: Hannes Wellmann Date: Sun, 29 Sep 2024 23:48:58 +0200 Subject: [PATCH 055/232] Generated all OSGi Declarative Services component files by PDE-DS/Tycho Remove the now generated OSGi Declarative Services component-xml files from git. Resolve wildcards in Service-Component header. --- .../.settings/org.eclipse.pde.ds.annotations.prefs | 7 +++++++ bundles/org.eclipse.e4.ui.progress/META-INF/MANIFEST.MF | 2 +- bundles/org.eclipse.e4.ui.progress/OSGI-INF/progress.xml | 8 -------- .../internal/ProgressServiceCreationFunction.java | 5 +++++ bundles/org.eclipse.search/.project | 5 +++++ .../.settings/org.eclipse.pde.ds.annotations.prefs | 7 +++++++ bundles/org.eclipse.search/META-INF/MANIFEST.MF | 2 +- .../org.eclipse.search/OSGI-INF/dirtyEditorService.xml | 8 -------- .../internal/ui/text/DirtyFileSearchParticipant.java | 3 +++ examples/org.eclipse.e4.demo.cssbridge/.gitignore | 1 + .../.settings/org.eclipse.pde.ds.annotations.prefs | 7 +++++++ .../org.eclipse.e4.demo.cssbridge/META-INF/MANIFEST.MF | 2 +- .../OSGI-INF/mailservice.xml | 7 ------- examples/org.eclipse.e4.demo.cssbridge/build.properties | 1 - .../e4/demo/cssbridge/internal/core/DummyMailService.java | 2 ++ 15 files changed, 40 insertions(+), 27 deletions(-) create mode 100644 bundles/org.eclipse.e4.ui.progress/.settings/org.eclipse.pde.ds.annotations.prefs delete mode 100644 bundles/org.eclipse.e4.ui.progress/OSGI-INF/progress.xml create mode 100644 bundles/org.eclipse.search/.settings/org.eclipse.pde.ds.annotations.prefs delete mode 100644 bundles/org.eclipse.search/OSGI-INF/dirtyEditorService.xml create mode 100644 examples/org.eclipse.e4.demo.cssbridge/.gitignore create mode 100644 examples/org.eclipse.e4.demo.cssbridge/.settings/org.eclipse.pde.ds.annotations.prefs delete mode 100644 examples/org.eclipse.e4.demo.cssbridge/OSGI-INF/mailservice.xml 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..d96b1bb7f13 100644 --- a/bundles/org.eclipse.e4.ui.progress/META-INF/MANIFEST.MF +++ b/bundles/org.eclipse.e4.ui.progress/META-INF/MANIFEST.MF @@ -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.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..54eb0583c69 100644 --- a/bundles/org.eclipse.search/META-INF/MANIFEST.MF +++ b/bundles/org.eclipse.search/META-INF/MANIFEST.MF @@ -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/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/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"; From 662929bf5557534120d7be059d52a96913c0e47b Mon Sep 17 00:00:00 2001 From: Hannes Wellmann Date: Sat, 12 Oct 2024 16:42:52 +0200 Subject: [PATCH 056/232] Use new @IContextFunction.ServiceContextKey component property type and @org.osgi.service.event.propertytypes.EventTopics where applicable. --- .../.settings/org.eclipse.pde.ds.annotations.prefs | 2 +- .../internal/CommandServiceCreationFunction.java | 5 +++-- .../internal/HandlerServiceCreationFunction.java | 5 +++-- .../.settings/org.eclipse.pde.ds.annotations.prefs | 2 +- .../internal/BindingServiceCreationFunction.java | 5 +++-- .../.settings/org.eclipse.pde.ds.annotations.prefs | 2 +- .../e4/ui/services/events/EventBrokerFactory.java | 8 +++----- .../.settings/org.eclipse.pde.ds.annotations.prefs | 2 +- .../workbench/swt/MenuServiceCreationFunction.java | 5 +++-- .../workbench/swt/StatusReporterCreationFunction.java | 8 ++++---- .../.settings/org.eclipse.pde.ds.annotations.prefs | 2 +- bundles/org.eclipse.e4.ui.workbench/META-INF/MANIFEST.MF | 3 ++- .../ui/internal/LocaleChangeServiceContextFunction.java | 8 ++++---- .../workbench/ExtensionTrackeContextFunction.java | 9 +++++---- .../internal/workbench/PartServiceCreationFunction.java | 5 +++-- .../ui/internal/workbench/ProgressMonitorFunction.java | 5 +++-- docs/Eclipse4_RCP_Contexts.md | 3 ++- 17 files changed, 43 insertions(+), 36 deletions(-) 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/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/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.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/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.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/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/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/.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..c1ecef66f7a 100644 --- a/bundles/org.eclipse.e4.ui.workbench/META-INF/MANIFEST.MF +++ b/bundles/org.eclipse.e4.ui.workbench/META-INF/MANIFEST.MF @@ -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/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/PartServiceCreationFunction.java b/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/internal/workbench/PartServiceCreationFunction.java index cb474b0557d..8380b5a3aa6 100644 --- a/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/internal/workbench/PartServiceCreationFunction.java +++ b/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/internal/workbench/PartServiceCreationFunction.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 @@ -24,7 +24,8 @@ import org.eclipse.e4.ui.model.application.ui.basic.MWindow; import org.osgi.service.component.annotations.Component; -@Component(service = IContextFunction.class, property = "service.context.key=org.eclipse.e4.ui.workbench.modeling.EPartService") +@Component(service = IContextFunction.class) +@IContextFunction.ServiceContextKey(org.eclipse.e4.ui.workbench.modeling.EPartService.class) public class PartServiceCreationFunction extends ContextFunction { @Override diff --git a/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/internal/workbench/ProgressMonitorFunction.java b/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/internal/workbench/ProgressMonitorFunction.java index f074349c24e..afbdd6ffb1d 100644 --- a/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/internal/workbench/ProgressMonitorFunction.java +++ b/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/internal/workbench/ProgressMonitorFunction.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 @@ -24,7 +24,8 @@ * used near the root of a context tree to provide a reasonable default monitor for cases where more * specific contexts have not provided one. */ -@Component(service = IContextFunction.class, property = "service.context.key=org.eclipse.core.runtime.IProgressMonitor") +@Component(service = IContextFunction.class) +@IContextFunction.ServiceContextKey(org.eclipse.core.runtime.IProgressMonitor.class) public class ProgressMonitorFunction extends ContextFunction { @Override 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) { From d6a50a4e0db5085fd539b0183f48bc73fb42b476 Mon Sep 17 00:00:00 2001 From: Eclipse Platform Bot Date: Sun, 13 Oct 2024 18:38:21 +0000 Subject: [PATCH 057/232] Version bump(s) for 4.34 stream --- bundles/org.eclipse.e4.core.commands/META-INF/MANIFEST.MF | 2 +- bundles/org.eclipse.e4.ui.bindings/META-INF/MANIFEST.MF | 2 +- bundles/org.eclipse.e4.ui.progress/META-INF/MANIFEST.MF | 2 +- bundles/org.eclipse.e4.ui.services/META-INF/MANIFEST.MF | 2 +- bundles/org.eclipse.e4.ui.workbench.swt/META-INF/MANIFEST.MF | 2 +- bundles/org.eclipse.e4.ui.workbench/META-INF/MANIFEST.MF | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) 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.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.progress/META-INF/MANIFEST.MF b/bundles/org.eclipse.e4.ui.progress/META-INF/MANIFEST.MF index d96b1bb7f13..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 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.workbench.swt/META-INF/MANIFEST.MF b/bundles/org.eclipse.e4.ui.workbench.swt/META-INF/MANIFEST.MF index 3322d6b5719..c15044ab336 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.600.qualifier Bundle-Name: %pluginName Bundle-Vendor: %providerName Bundle-Localization: plugin 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 c1ecef66f7a..6fbedd6f1f6 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.15.600.qualifier Bundle-Name: %pluginName Bundle-Vendor: %providerName Bundle-Localization: plugin From 9bd3284d67ef8703bb29453a12dca20520a96c61 Mon Sep 17 00:00:00 2001 From: Tobias Melcher Date: Mon, 14 Oct 2024 17:36:26 +0200 Subject: [PATCH 058/232] make "Text editor code mining color" configurable in preferences introduce a new entry in preference page "General"->"Appearance"->"Colors and Fonts" so that code mining color can be configured by the end user Introduce a slightly brighter default color for code minings in the dark theme. --- .../jface/text/source/AnnotationPainter.java | 20 +++++++++++ .../inlined/InlinedAnnotationSupport.java | 6 +++- .../org.eclipse.ui.editors/build.properties | 3 +- .../css/e4-dark_preferencestyle.css | 5 +++ .../org.eclipse.ui.editors/plugin.properties | 4 +++ bundles/org.eclipse.ui.editors/plugin.xml | 22 ++++++++++++ .../AbstractDecoratedTextEditor.java | 5 +++ ...ecoratedTextEditorPreferenceConstants.java | 11 ++++-- .../SourceViewerDecorationSupport.java | 36 ++++++++++++++++++- 9 files changed, 107 insertions(+), 5 deletions(-) create mode 100644 bundles/org.eclipse.ui.editors/css/e4-dark_preferencestyle.css 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/inlined/InlinedAnnotationSupport.java b/bundles/org.eclipse.jface.text/src/org/eclipse/jface/text/source/inlined/InlinedAnnotationSupport.java index 79e301468f6..2674b836fe8 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 @@ -366,7 +366,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.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/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..b5365d84f23 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,16 @@ id="org.eclipse.ui.internal.editors.annotationCodeMiningProvider"> + + + + + + + + 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..aa9904f0b20 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.18 + */ + 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.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..d55b8998127 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.18 + */ + 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) { + Color color = registry.get(fInlineAnnotationColorKey); + painter.setInlineAnnotationColor(color); + if (fPropertyChangeListener != null) { + registry.addListener(fPropertyChangeListener); + } + } return painter; } From abffd929fa10d5ef22ecd7cae623c0dc8262735d Mon Sep 17 00:00:00 2001 From: Matthias Becker Date: Wed, 16 Oct 2024 13:25:14 +0200 Subject: [PATCH 059/232] Update plugin.xml Remove remainders from an internal test. --- bundles/org.eclipse.ui.editors/plugin.xml | 3 --- 1 file changed, 3 deletions(-) diff --git a/bundles/org.eclipse.ui.editors/plugin.xml b/bundles/org.eclipse.ui.editors/plugin.xml index b5365d84f23..ce60714504a 100644 --- a/bundles/org.eclipse.ui.editors/plugin.xml +++ b/bundles/org.eclipse.ui.editors/plugin.xml @@ -1178,9 +1178,6 @@ - - From 28c2d5d4d03702d2c38fd225a90158b50e327d08 Mon Sep 17 00:00:00 2001 From: Tobias Melcher Date: Thu, 17 Oct 2024 13:47:04 +0200 Subject: [PATCH 060/232] fix null pointer exception in SourceViewerDecorationSupport fInlineAnnotationColorKey might be not set --- .../eclipse/ui/texteditor/SourceViewerDecorationSupport.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 d55b8998127..29e64653200 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 @@ -890,7 +890,7 @@ protected AnnotationPainter createAnnotationPainter() { painter.addTextStyleStrategy(AnnotationPreference.STYLE_UNDERLINE, fgUnderlineStrategy); ColorRegistry registry = JFaceResources.getColorRegistry(); - if (registry != null) { + if (registry != null && fInlineAnnotationColorKey != null) { Color color = registry.get(fInlineAnnotationColorKey); painter.setInlineAnnotationColor(color); if (fPropertyChangeListener != null) { From 929564cc3f01a37e4764bdb75b0c57a1c81da9fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Kubitz?= Date: Fri, 11 Oct 2024 13:56:30 +0200 Subject: [PATCH 061/232] tests: take screenshot before dispose https://github.com/eclipse-platform/eclipse.platform.swt/issues/1518 --- .../workbench/PartRenderingEngineTests.java | 2 +- .../jface/text/tests/TextViewerTest.java | 29 +++++-------------- .../text/tests/codemining/CodeMiningTest.java | 3 +- 3 files changed, 9 insertions(+), 25 deletions(-) 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.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..9fe54f86b56 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 @@ -24,8 +24,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; @@ -76,22 +76,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 +107,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 +124,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 +139,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 +183,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 +205,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 +228,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 +313,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 +383,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 +405,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 +421,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 +428,6 @@ public void testSetSelectionNoDoc() { @Test public void testSelectionFromViewerState() { - fShell= new Shell(); TextViewer textViewer= new TextViewer(fShell, SWT.NONE); textViewer.setDocument(new Document( "/**\n" 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..b5558b2ff6e 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 @@ -69,7 +69,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 +117,6 @@ protected boolean condition() { @After public void tearDown() { - fShell.dispose(); fViewer = null; } From ae9e870c476b10913a9019c2fad3deab86acbc94 Mon Sep 17 00:00:00 2001 From: Tobias Melcher Date: Fri, 18 Oct 2024 09:29:00 +0200 Subject: [PATCH 062/232] WhitespaceCharacterPainter: fix off-by-one error at CR and LF offsets --- .../text/WhitespaceCharacterPainter.java | 2 + .../tests/TestWhitespaceCharacterPainter.java | 95 +++++++++++++++++++ 2 files changed, 97 insertions(+) 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 43c6e53e7c5..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 @@ -407,6 +407,7 @@ private void drawCharRange(GC gc, int startOffset, int endOffset, int lineOffset if (fShowCarriageReturn) { if (visibleChar.length() > 0 && cache.contains(fTextWidget, lineOffset + textOffset)) { textOffset--; + delta--; break; } visibleChar.append(CARRIAGE_RETURN_SIGN); @@ -420,6 +421,7 @@ private void drawCharRange(GC gc, int startOffset, int endOffset, int lineOffset if (fShowLineFeed) { if (visibleChar.length() > 0 && cache.contains(fTextWidget, lineOffset + textOffset)) { textOffset--; + delta--; break; } visibleChar.append(LINE_FEED_SIGN); 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 9a1d57a3e34..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,18 @@ *******************************************************************************/ 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; @@ -63,6 +67,28 @@ 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); @@ -133,6 +159,75 @@ public FontMetrics answer(InvocationOnMock invocation) throws Throwable { 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(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); + 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; + } + }); + 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); + return params; + } + private StyleRange createStyleRangeWithMetrics(int start) { StyleRange sr= new StyleRange(); sr.start= start; From 98da4d9c923eb158f7b7af9909bb4c5fb9185f46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=8A?= =?UTF-8?q?=D1=80=20=D0=9A=D1=83=D1=80=D1=82=D0=B0=D0=BA=D0=BE=D0=B2?= Date: Fri, 18 Oct 2024 12:08:38 +0300 Subject: [PATCH 063/232] Simplify ResourceInitialSelectionTest Make it plain JUnit test. Simplify DisplayHelper usage to remove one anonymous class file and have lambda instead. --- .../dialogs/ResourceInitialSelectionTest.java | 44 ++++++------------- 1 file changed, 13 insertions(+), 31 deletions(-) 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 9dc75c3a025..620f0643267 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,9 +14,10 @@ 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; @@ -40,10 +41,9 @@ 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 @@ -51,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"); @@ -60,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(); } @@ -355,7 +344,7 @@ 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()); @@ -365,19 +354,13 @@ private void createProject() throws CoreException { Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(); for (String fileName : FILE_NAMES) { - new DisplayHelper() { - @Override - protected boolean condition() { - return project.getFile(fileName).exists(); - } - }.waitForCondition(shell.getDisplay(), 1000); - + DisplayHelper.waitForCondition(shell.getDisplay(), 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(); } @@ -397,6 +380,5 @@ protected void doTearDown() throws Exception { throw e; } } - super.doTearDown(); } } From 68e633768cb51fb858f13f0cdea857bd1122ba12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=8A?= =?UTF-8?q?=D1=80=20=D0=9A=D1=83=D1=80=D1=82=D0=B0=D0=BA=D0=BE=D0=B2?= Date: Fri, 18 Oct 2024 14:22:35 +0300 Subject: [PATCH 064/232] Convert some o.e.ui.tests to plain JUnit Reduce inheritance, simplify setup/teardown, improve assertions, etc. --- .../ui/tests/StyledStringHighlighterTest.java | 23 ++-- .../activities/ActivityPreferenceTest.java | 6 - .../ui/tests/activities/ImagesTest.java | 18 +-- .../ui/tests/activities/PersistanceTest.java | 72 +++++------ .../tests/dialogs/ResourceItemLabelTest.java | 30 ++--- .../ResourceSelectionFilteringDialogTest.java | 18 +-- .../ui/tests/encoding/EncodingTestCase.java | 21 +--- .../tests/keys/KeysPreferenceModelTest.java | 118 +++++++----------- .../ui/tests/markers/Bug75909Test.java | 3 - .../DeclarativeFilterActivityTest.java | 17 ++- .../DeclarativeFilterDeclarationTest.java | 18 ++- .../tests/markers/DeclarativeFilterTest.java | 18 +-- .../ui/tests/markers/MarkerSortUtilTest.java | 22 +--- .../markers/MarkerSupportRegistryTests.java | 20 +-- .../tests/markers/MarkerSupportViewTest.java | 22 ++-- .../ui/tests/markers/MarkerTesterTest.java | 29 ++--- .../ui/tests/markers/MarkerViewTests.java | 29 +---- .../ui/tests/markers/MarkerViewUtilTest.java | 27 ++-- .../quickaccess/QuickAccessDialogTest.java | 3 - .../OpenSystemInPlaceEditorTest.java | 23 ++-- 20 files changed, 181 insertions(+), 356 deletions(-) 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/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/ImagesTest.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/activities/ImagesTest.java index cff850fec52..5b0c0d37cbd 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,7 +27,7 @@ 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; @@ -31,16 +36,12 @@ * @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 +96,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/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/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/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/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/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 b76f1895892..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,13 +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 java.util.stream.Collectors; import org.eclipse.jface.viewers.CheckboxTableViewer; import org.eclipse.swt.widgets.Button; @@ -28,7 +31,6 @@ 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; @@ -37,15 +39,8 @@ 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"; @@ -173,8 +168,7 @@ public void markerContentGeneratorExtensionLoaded() throws Exception { String markerTypeId = "org.eclipse.ui.tests.markers.artificial.problem"; MarkerType markerTypeFromExtension = descriptor.getType(markerTypeId); - List markerTypeIds = descriptor.getMarkerTypes().stream().map(MarkerType::getId) - .collect(Collectors.toList()); + List markerTypeIds = descriptor.getMarkerTypes().stream().map(MarkerType::getId).toList(); assertNotNull("Marker type with id '" + markerTypeId + "' not loaded from marker content generator extension.", markerTypeFromExtension); @@ -182,7 +176,7 @@ public void markerContentGeneratorExtensionLoaded() throws Exception { + markerTypeIds, markerTypeIds.contains(markerTypeId)); Collection groups = descriptor.getMarkerGroups(); - List groupIds = groups.stream().map(MarkerGroup::getId).collect(Collectors.toList()); + List groupIds = groups.stream().map(MarkerGroup::getId).toList(); String groupId = "org.eclipse.ui.tests.test.extended"; assertTrue("Expected loading group id '" + groupId @@ -195,7 +189,7 @@ private List mapToNames(MarkerField[] markerFields) { return Collections.emptyList(); } - return Arrays.stream(markerFields).map(mf -> mf.getName()).collect(Collectors.toList()); + return Arrays.stream(markerFields).map(mf -> mf.getName()).toList(); } public static MarkerContentGenerator getMarkerContentGenerator(MarkerSupportView view) { 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/MarkerViewTests.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/markers/MarkerViewTests.java index 6efcc2e7a25..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.hideView(page.showView(IPageLayout.ID_BOOKMARKS)); - page.hideView(page.showView(IPageLayout.ID_PROBLEM_VIEW)); - page.hideView(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 f33c4065931..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 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/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(); From 2ebbbe9cdab971d70511a23c5a4ba4dca34538dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=8A?= =?UTF-8?q?=D1=80=20=D0=9A=D1=83=D1=80=D1=82=D0=B0=D0=BA=D0=BE=D0=B2?= Date: Fri, 18 Oct 2024 22:35:50 +0300 Subject: [PATCH 065/232] Convert o.e.ui.tests to plain JUnit (part 2) Reduce inheritance, simplify setup/teardown, improve assertions, etc. --- .../ui/tests/activities/ImagesTest.java | 3 - .../ui/tests/activities/MenusTest.java | 31 ++- .../ui/tests/activities/StaticTest.java | 9 +- .../adaptable/MarkerImageProviderTest.java | 38 ++- .../eclipse/ui/tests/api/EditorIconTest.java | 21 +- .../org/eclipse/ui/tests/api/StartupTest.java | 28 ++- .../commands/ActionDelegateProxyTest.java | 6 - .../tests/commands/CommandEnablementTest.java | 3 - .../ui/tests/commands/HelpContextIdTest.java | 20 +- .../ui/tests/commands/RadioStateTest.java | 9 +- .../eclipse/ui/tests/commands/StateTest.java | 3 - .../tests/concurrency/TransferRuleTest.java | 20 +- .../ui/tests/contexts/ExtensionTestCase.java | 24 +- .../ui/tests/contexts/PartContextTest.java | 17 +- .../ImportArchiveOperationTest.java | 217 ++++++++---------- .../ui/tests/datatransfer/ZipSlipTests.java | 10 +- .../tests/filteredtree/FilteredTreeTests.java | 16 +- .../ui/tests/ide/api/FileEditorInputTest.java | 12 +- .../org/eclipse/ui/tests/ide/api/IDETest.java | 25 +- .../eclipse/ui/tests/ide/api/IDETest2.java | 18 +- .../LargeFileLimitsPreferenceHandlerTest.java | 45 ++-- .../MultiThreadedOperationsTests.java | 10 +- .../WorkbenchOperationHistoryTests.java | 24 +- .../operations/WorkspaceOperationsTests.java | 30 ++- .../preferences/FontPreferenceTestCase.java | 25 +- .../preferences/ListenerRemovalTestCase.java | 13 +- .../ScopedPreferenceStoreTestCase.java | 22 +- .../WorkingCopyPreferencesTestCase.java | 35 +-- .../quickaccess/QuickAccessProvidersTest.java | 3 - .../ui/tests/stress/OpenCloseTest.java | 3 - 30 files changed, 269 insertions(+), 471 deletions(-) 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 5b0c0d37cbd..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 @@ -29,13 +29,10 @@ import org.eclipse.ui.tests.harness.util.ImageTests; 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 { private Image defaultImage; 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..9fa50cf241f 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; @@ -25,16 +30,12 @@ import org.eclipse.ui.menus.IMenuService; import org.eclipse.ui.services.IServiceLocator; import org.eclipse.ui.tests.harness.util.UITestCase; +import org.junit.After; +import org.junit.Before; import org.junit.Ignore; 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; @@ -81,22 +82,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 +101,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/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/EditorIconTest.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/api/EditorIconTest.java index 5ee6e0a245e..8c68c6734c9 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 @@ -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,7 +63,8 @@ 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! @@ -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/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/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/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..f95e47e9621 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; @@ -28,8 +34,6 @@ import org.eclipse.ui.tests.harness.util.FileUtil; import org.eclipse.ui.tests.harness.util.UITestCase; 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,18 +41,13 @@ * * @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()); - } - @Test public void testBasicContextActivation() throws Exception { IContextService globalService = getWorkbench() @@ -106,7 +105,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..3c4a8425f0a 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 @@ -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; @@ -37,14 +40,11 @@ import org.eclipse.ui.internal.wizards.datatransfer.ZipLeveledStructureProvider; import org.eclipse.ui.tests.TestPlugin; 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.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,17 +58,12 @@ 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()); - } - @Override public String queryOverwrite(String pathString) { //Always return an empty String - we aren't @@ -80,13 +75,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 +107,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 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 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 +146,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 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 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 +213,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 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 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 +237,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 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 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 +284,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/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/filteredtree/FilteredTreeTests.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/filteredtree/FilteredTreeTests.java index 4d4f7c468ad..190d8d6367e 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 @@ -203,9 +196,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/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/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/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/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/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/stress/OpenCloseTest.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/stress/OpenCloseTest.java index ac26a6f0627..40dd534b603 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 @@ -43,13 +43,10 @@ import org.eclipse.ui.tests.harness.util.FileUtil; import org.junit.Before; 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"; From ed47024d44620962a6e0b952cbd711d28ad3669b Mon Sep 17 00:00:00 2001 From: Hannes Wellmann Date: Sat, 12 Oct 2024 16:55:45 +0200 Subject: [PATCH 066/232] Add component property types for IModelProcessorContribution attributes These annotation simplify the specification of the 'beforefragment' and 'apply' service property for IModelProcessorContribution implementations and makes it type-safe and more robust: ''' @Component(service = IModelProcessorContribution.class) @IModelProcessorContribution.Beforefragment(true) @IModelProcessorContribution.Apply(IModelProcessorContribution.APPLY_ALWAYS) public class SampleContribution implements IModelProcessorContribution { ''' --- .../META-INF/MANIFEST.MF | 2 +- .../modeling/IModelProcessorContribution.java | 51 ++++++++++++++++++- 2 files changed, 50 insertions(+), 3 deletions(-) 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 6fbedd6f1f6..b441a8c5d3a 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.600.qualifier +Bundle-Version: 1.16.0.qualifier Bundle-Name: %pluginName Bundle-Vendor: %providerName Bundle-Localization: plugin diff --git a/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/workbench/modeling/IModelProcessorContribution.java b/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/workbench/modeling/IModelProcessorContribution.java index f5d3b8ff9b6..fef64231ecb 100644 --- a/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/workbench/modeling/IModelProcessorContribution.java +++ b/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/workbench/modeling/IModelProcessorContribution.java @@ -14,8 +14,11 @@ package org.eclipse.e4.ui.workbench.modeling; +import java.lang.annotation.ElementType; +import java.lang.annotation.Target; import java.util.Collections; import java.util.List; +import org.osgi.service.component.annotations.ComponentPropertyType; /** * Service component interface to be able to register model processors via OSGi @@ -32,7 +35,7 @@ public interface IModelProcessorContribution { /** * Service property key for specifying the beforeFragment attribute, which * specifies if the processor has to be invoked before model fragments are - * added. If not specified it defaults to true. + * added. If not specified it defaults to {@code true}. */ String BEFORE_FRAGMENT_PROPERTY_KEY = "beforefragment"; //$NON-NLS-1$ /** @@ -44,11 +47,33 @@ public interface IModelProcessorContribution { * Component annotation:
* @Component(property = { IModelProcessorContribution.BEFORE_FRAGMENT_PROPERTY_PREFIX + "false" }) *

+ * + * @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. From 2945d5b01c14230e3ef86d2d393b77b98af0eb5e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=8A?= =?UTF-8?q?=D1=80=20=D0=9A=D1=83=D1=80=D1=82=D0=B0=D0=BA=D0=BE=D0=B2?= Date: Sat, 19 Oct 2024 10:52:52 +0300 Subject: [PATCH 067/232] Fail build on javadoc errors Fix broken javadoc to allow build to finish to finish with this setting. --- .../org/eclipse/ui/internal/ide/application/IDEApplication.java | 2 -- pom.xml | 1 + 2 files changed, 1 insertion(+), 2 deletions(-) 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 5deff13b81f..4ff4f850f2e 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 @@ -441,8 +441,6 @@ protected String getWorkspaceLockInfo(URL workspaceUrl) { /** * Write lock owner details onto workspace lock file. Data includes user, host, * display and current java process id. - * - * @param instanceLoc */ protected void writeWsLockInfo(URL workspaceUrl) { Properties props = new Properties(); diff --git a/pom.xml b/pom.xml index 768d1c99e04..f3691ecb8e5 100644 --- a/pom.xml +++ b/pom.xml @@ -29,6 +29,7 @@ ${tests.ignoredWarnings} true true + true From 54479d7ac8174005f40d77e5e6f304202225d5fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=8A?= =?UTF-8?q?=D1=80=20=D0=9A=D1=83=D1=80=D1=82=D0=B0=D0=BA=D0=BE=D0=B2?= Date: Sat, 19 Oct 2024 16:29:32 +0300 Subject: [PATCH 068/232] Fix javadoc. Broken by https://github.com/eclipse-platform/eclipse.platform.ui/pull/2396 --- .../e4/ui/workbench/modeling/IModelProcessorContribution.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/workbench/modeling/IModelProcessorContribution.java b/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/workbench/modeling/IModelProcessorContribution.java index fef64231ecb..65e9cd3b409 100644 --- a/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/workbench/modeling/IModelProcessorContribution.java +++ b/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/workbench/modeling/IModelProcessorContribution.java @@ -85,8 +85,8 @@ public interface IModelProcessorContribution { * @Component(property = { IModelProcessorContribution.APPLY_PROPERTY_PREFIX + "initial" }) *

* - * @deprecated Instead annotate the component with the {@link Apply @Apply(< - * a-value >)} component property type + * @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$ From c9c9ec7e4128995f0f366e476b990cbf96f8fa64 Mon Sep 17 00:00:00 2001 From: Andrey Loskutov Date: Mon, 21 Oct 2024 09:32:23 +0200 Subject: [PATCH 069/232] Fix API errors by updating bundle versions Regression from commit 9bd3284 / #2400 Also updated version range on bundle with increased version. Fixes https://github.com/eclipse-platform/eclipse.platform.ui/issues/2430 --- bundles/org.eclipse.ui.editors/META-INF/MANIFEST.MF | 4 ++-- .../AbstractDecoratedTextEditorPreferenceConstants.java | 2 +- .../org.eclipse.ui.workbench.texteditor/META-INF/MANIFEST.MF | 2 +- .../eclipse/ui/texteditor/SourceViewerDecorationSupport.java | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/bundles/org.eclipse.ui.editors/META-INF/MANIFEST.MF b/bundles/org.eclipse.ui.editors/META-INF/MANIFEST.MF index e3cf47afb07..8e42f706134 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.0.qualifier Bundle-Activator: org.eclipse.ui.internal.editors.text.EditorsPlugin Bundle-ActivationPolicy: lazy Bundle-Vendor: %providerName @@ -24,7 +24,7 @@ Require-Bundle: 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/src/org/eclipse/ui/texteditor/AbstractDecoratedTextEditorPreferenceConstants.java b/bundles/org.eclipse.ui.editors/src/org/eclipse/ui/texteditor/AbstractDecoratedTextEditorPreferenceConstants.java index aa9904f0b20..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 @@ -74,7 +74,7 @@ private AbstractDecoratedTextEditorPreferenceConstants() { /** * A named preference that holds the color used to render the text editor inline annotation * - * @since 3.18 + * @since 3.19 */ public final static String EDITOR_INLINE_ANNOTATION_COLOR= "org.eclipse.ui.editors.inlineAnnotationColor"; //$NON-NLS-1$ 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..c904670b20c 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.0.qualifier Bundle-Activator: org.eclipse.ui.internal.texteditor.TextEditorPlugin Bundle-ActivationPolicy: lazy Bundle-Vendor: %providerName 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 29e64653200..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 @@ -450,7 +450,7 @@ public void setMarginPainterPreferenceKeys(String enableKey, String colorKey, St /** * Set inline annotation color key. * - * @since 3.18 + * @since 3.19 */ public void setInlineAnnotationColorPreferenceKey(String inlineAnnotationColor) { fInlineAnnotationColorKey = inlineAnnotationColor; From 9f38380d6290adba422490f4a1d5c2c8b15ed0b8 Mon Sep 17 00:00:00 2001 From: Hannes Wellmann Date: Sat, 19 Oct 2024 09:51:01 +0200 Subject: [PATCH 070/232] Fix lock path computation on Windows and minor simplifications Fixes https://github.com/eclipse-platform/eclipse.platform.ui/issues/2423 --- .../ide/application/IDEApplication.java | 37 ++++++++++--------- 1 file changed, 19 insertions(+), 18 deletions(-) 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 4ff4f850f2e..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,11 @@ 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; @@ -40,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; @@ -86,7 +89,7 @@ public class IDEApplication implements IApplication, IExecutableExtension { private static final String VERSION_FILENAME = "version.ini"; //$NON-NLS-1$ - private static final String LOCK_INFO_FILENAME = ".lock_info"; //$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$ @@ -404,14 +407,14 @@ protected Control createCustomArea(Composite parent) { */ protected String getWorkspaceLockInfo(URL workspaceUrl) { try { - File lockFile = getLockInfoFile(workspaceUrl); - if (!lockFile.exists()) { + Path lockFile = getLockInfoFile(workspaceUrl); + if (!Files.exists(lockFile)) { return null; } StringBuilder sb = new StringBuilder(); Properties props = new Properties(); - try (FileInputStream is = new FileInputStream(lockFile)) { + try (InputStream is = Files.newInputStream(lockFile)) { props.load(is); String prop = props.getProperty(USER); if (prop != null) { @@ -466,7 +469,7 @@ protected void writeWsLockInfo(URL workspaceUrl) { return; } - try (OutputStream output = new FileOutputStream(createLockInfoFile(workspaceUrl))) { + 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$ @@ -521,9 +524,12 @@ private String getHostName() { * @param workspaceUrl * @return .lock_info file. */ - private File getLockInfoFile(URL workspaceUrl) { - Path lockInfoPath = Path.of(workspaceUrl.getPath(), METADATA_FOLDER, LOCK_INFO_FILENAME); - return lockInfoPath.toFile(); + private static Path getLockInfoFile(URL workspaceUrl) { + try { + return Path.of(URIUtil.toURI(workspaceUrl)).resolve(LOCK_INFO_FILE); + } catch (URISyntaxException e) { + throw new IllegalArgumentException(e); + } } /** @@ -532,17 +538,12 @@ private File getLockInfoFile(URL workspaceUrl) { * @param workspaceUrl * @return .lock_info file. */ - private File createLockInfoFile(URL workspaceUrl) throws Exception { - File lockInfoFile = getLockInfoFile(workspaceUrl); - - if (lockInfoFile.exists()) - return lockInfoFile; - - Path createdPath = Files.createFile(lockInfoFile.toPath()); - if (createdPath != null) { - return createdPath.toFile(); + private static Path createLockInfoFile(URL workspaceUrl) throws Exception { + Path lockInfoFile = getLockInfoFile(workspaceUrl); + if (!Files.exists(lockInfoFile)) { + Files.createFile(lockInfoFile); } - return null; + return lockInfoFile; } @SuppressWarnings("rawtypes") From 0a3c1fd31e73bc5bb8bd6a94f86922d30456b4f2 Mon Sep 17 00:00:00 2001 From: Feilim Breatnach Date: Thu, 10 Oct 2024 16:04:25 +0100 Subject: [PATCH 071/232] Modify the 'Close Active Editors' (plural) handler to add support for parts which represent an Editor and are contributed via eg. PartDescriptors in a Model Fragment. Associated with Issue#2176. Include JUnit test. --- .../eclipse/ui/internal/CloseAllHandler.java | 70 +++++ .../eclipse/ui/tests/api/ApiTestSuite.java | 4 +- .../ui/tests/e4/CloseAllHandlerTest.java | 282 ++++++++++++++++++ .../org/eclipse/ui/tests/e4/DummyEditor.java | 17 ++ 4 files changed, 372 insertions(+), 1 deletion(-) create mode 100644 tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/e4/CloseAllHandlerTest.java create mode 100644 tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/e4/DummyEditor.java 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 index 7a431c14292..45d8d0b5a95 100644 --- 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 @@ -14,18 +14,32 @@ 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 @@ -48,6 +62,25 @@ public Object execute(ExecutionEvent event) throws ExecutionException { 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; @@ -69,6 +102,12 @@ public EvaluationResult evaluate(IEvaluationContext context) { 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; @@ -83,4 +122,35 @@ public void collectExpressionInfo(ExpressionInfo info) { } 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/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/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..194726c5d62 --- /dev/null +++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/e4/CloseAllHandlerTest.java @@ -0,0 +1,282 @@ +/******************************************************************************* +* 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 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.ISources; +import org.eclipse.ui.IWorkbenchWindow; +import org.eclipse.ui.PartInitException; +import org.eclipse.ui.internal.CloseAllHandler; +import org.eclipse.ui.internal.Workbench; +import org.junit.Assert; +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: E4 style part contribution which is tagged as representing an + * 'editor' is closed via the handler (and the enablement of handler is + * checked). + * + * Scenario 2: compatibility layer type 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.EMPTY_MAP); + + // verify the close all editors handler enabledment is false (no editors are + // open yet!) + boolean canExecute = handlerService.canExecute(parameterizedCommand); + Assert.assertFalse(canExecute); + + // scenario 1: 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); + Assert.assertTrue(canExecute); + + // close all editors (dummy editor should close!) + dummyPart = partService.findPart(DUMMY_E4_PART_ID); + Assert.assertNotNull(dummyPart); + handlerService.executeHandler(parameterizedCommand); + dummyPart = partService.findPart(DUMMY_E4_PART_ID); + Assert.assertNull(dummyPart); + + // verify the close all handler is *not* enabled now (since dummy editor has + // been closed) + canExecute = handlerService.canExecute(parameterizedCommand); + Assert.assertFalse(canExecute); + + // scenario 2: open a compatibility layer editor + IFileEditorInput input = new DummyFileEditorInput(); + Object activeWindow = applicationContext.getActive(ISources.ACTIVE_WORKBENCH_WINDOW_NAME); + Assert.assertTrue("Active workbench window not found.", activeWindow instanceof IWorkbenchWindow); + IWorkbenchWindow window = (IWorkbenchWindow) activeWindow; + try { + window.getActivePage().openEditor(input, TEST_COMPATIBILITY_LAYER_EDITOR_ID); + } catch (PartInitException e) { + Assert.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); + Assert.assertTrue(canExecute); + + IEditorPart compatEditor = window.getActivePage().findEditor(input); + Assert.assertNotNull(compatEditor); + handlerService.executeHandler(parameterizedCommand); + compatEditor = window.getActivePage().findEditor(input); + Assert.assertNull(compatEditor); + + // verify the close all handler is *not* enabled now (since compatibility layer + // editor has been closed) + canExecute = handlerService.canExecute(parameterizedCommand); + Assert.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) { + Assert.fail("Test Compatibility Editor could not be opened. Further testing cannot complete."); + } + compatEditor = window.getActivePage().findEditor(input); + Assert.assertNotNull(compatEditor); + dummyPart = partService.findPart(DUMMY_E4_PART_ID); + Assert.assertNotNull(dummyPart); + + canExecute = handlerService.canExecute(parameterizedCommand); + Assert.assertTrue(canExecute); + + // close all editors + handlerService.executeHandler(parameterizedCommand); + canExecute = handlerService.canExecute(parameterizedCommand); + Assert.assertFalse(canExecute); + + // verify they are all closed + compatEditor = window.getActivePage().findEditor(input); + Assert.assertNull(compatEditor); + dummyPart = partService.findPart(DUMMY_E4_PART_ID); + Assert.assertNull(dummyPart); + } + + private MPart createAndOpenE4Part(MPartDescriptor partDescriptor) { + Optional primaryPartStack = findPrimaryConfiguationAreaPartStack(application, modelService); + + if (primaryPartStack.isEmpty()) { + Assert.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) { + return Optional.of((MPartStack) element); + } else if (element instanceof MPartSashContainer) { + return ((MPartSashContainer) element).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 { + +} From 3b495022515ddb1864fe95067ce9eb19f4716a4b Mon Sep 17 00:00:00 2001 From: Deepika Udayagiri Date: Tue, 13 Aug 2024 15:23:04 +0530 Subject: [PATCH 072/232] Moving TabFolderLayout into SWT. Fixes https://github.com/eclipse-platform/eclipse.platform.swt/issues/1317 --- .../META-INF/MANIFEST.MF | 2 +- .../editors/text/TabFolderLayout.java | 71 ------------------- bundles/org.eclipse.ui/META-INF/MANIFEST.MF | 2 +- 3 files changed, 2 insertions(+), 73 deletions(-) delete mode 100644 bundles/org.eclipse.ui.editors/src/org/eclipse/ui/internal/editors/text/TabFolderLayout.java diff --git a/bundles/org.eclipse.ui.editors/META-INF/MANIFEST.MF b/bundles/org.eclipse.ui.editors/META-INF/MANIFEST.MF index 8e42f706134..96c4987c88b 100644 --- a/bundles/org.eclipse.ui.editors/META-INF/MANIFEST.MF +++ b/bundles/org.eclipse.ui.editors/META-INF/MANIFEST.MF @@ -19,7 +19,7 @@ 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)", 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 Date: Fri, 25 Oct 2024 12:40:47 +0300 Subject: [PATCH 073/232] Remove long time not needed ICU4J references in tests These are not referenced at all thus simply deleted. --- .../NumberToStringConverterTest.java | 11 ----- .../StringToNumberConverterTest.java | 11 ----- .../StringToNumberParserTestHarness.java | 45 +------------------ 3 files changed, 1 insertion(+), 66 deletions(-) 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); } } From 5c9af91e7f905d072d6ede14ed5041969281d3ef Mon Sep 17 00:00:00 2001 From: Christopher Hermann Date: Thu, 10 Oct 2024 14:25:17 +0200 Subject: [PATCH 074/232] [StickyScrolling] Move complex line adaption to central handler Move sticky lines adaptation to the growing sticky lines control into the central sticky scrolling handler. This change simplifies the sticky lines provider, making implementations for specific languages more straightforward and maintainable. Preparation for #2398 --- .../DefaultStickyLinesProvider.java | 85 +++-------------- .../stickyscroll/IStickyLinesProvider.java | 22 ++--- .../stickyscroll/StickyScrollingControl.java | 13 ++- .../stickyscroll/StickyScrollingHandler.java | 45 ++++++++- .../DefaultStickyLinesProviderTest.java | 93 +++---------------- .../StickyScrollingControlTest.java | 66 +++++++++++-- .../StickyScrollingHandlerTest.java | 73 ++++++++++++--- 7 files changed, 211 insertions(+), 186 deletions(-) diff --git a/bundles/org.eclipse.ui.editors/src/org/eclipse/ui/internal/texteditor/stickyscroll/DefaultStickyLinesProvider.java b/bundles/org.eclipse.ui.editors/src/org/eclipse/ui/internal/texteditor/stickyscroll/DefaultStickyLinesProvider.java index f0f1370257f..c4281899d1e 100644 --- a/bundles/org.eclipse.ui.editors/src/org/eclipse/ui/internal/texteditor/stickyscroll/DefaultStickyLinesProvider.java +++ b/bundles/org.eclipse.ui.editors/src/org/eclipse/ui/internal/texteditor/stickyscroll/DefaultStickyLinesProvider.java @@ -19,9 +19,6 @@ import org.eclipse.swt.custom.StyledText; -import org.eclipse.jface.text.ITextViewerExtension5; -import org.eclipse.jface.text.source.ISourceViewer; - /** * This class provides sticky lines for the given source code in the source viewer. The * implementation is completely based on indentation and therefore works by default for several @@ -36,83 +33,31 @@ public class DefaultStickyLinesProvider implements IStickyLinesProvider { private StickyLinesProperties fProperties; @Override - public List getStickyLines(ISourceViewer sourceViewer, StickyLinesProperties properties) { - if (sourceViewer.getTopIndex() == 0) { - return Collections.emptyList(); - } - + public List getStickyLines(StyledText textWidget, int lineNumber, StickyLinesProperties properties) { this.fProperties= properties; LinkedList stickyLines= new LinkedList<>(); try { - StyledText textWidget= sourceViewer.getTextWidget(); - int startLine= textWidget.getTopIndex(); + int startIndetation= getStartIndentation(lineNumber, textWidget); - calculateStickyLinesForLineNumber(stickyLines, sourceViewer, startLine); - calculateStickyLinesUnderStickyLineControl(stickyLines, sourceViewer, startLine); - } catch (IllegalArgumentException e) { - stickyLines.clear(); - } + for (int i= lineNumber, previousIndetation= startIndetation; i >= 0; i--) { + String line= textWidget.getLine(i); + int indentation= getIndentation(line); - return stickyLines; - } + if (indentation == IGNORE_LINE_INDENTATION) { + continue; + } - 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))); - } - } - } - - private void calculateStickyLinesUnderStickyLineControl(LinkedList stickyLines, ISourceViewer sourceViewer, int startLine) { - int firstBelowControl= startLine + stickyLines.size(); - StyledText textWidget= sourceViewer.getTextWidget(); - int lineCount= textWidget.getLineCount(); - - for (int i= startLine; i < firstBelowControl && i < lineCount; i++) { - - String line= textWidget.getLine(i); - int indentation= getIndentation(line); - 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(line, i)); + } } + } 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) { 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..522f16cbe4f 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 @@ -20,7 +20,7 @@ import org.eclipse.jface.text.source.ISourceViewer; /** - * A sticky lines provider calculates the sticky lines for a given source viewer. The sticky lines + * A sticky lines provider calculates the sticky lines for a given text widget. The sticky lines * will be displayed in the top area of the editor. * * TODO move to public package and add since 3.19 @@ -28,26 +28,24 @@ 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 + * Calculate the sticky lines for the source code of the given textWidget. Specific properties, + * such as the tabWidht and the source viewer, can be retrieved from the * properties. * - * @param sourceViewer The source viewer containing the source code and information about the - * first visible line + * @param textWidget The text widget containing the source code + * @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(StyledText textWidget, 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 + * @param sourceViewer The sourceViewer to access additional information */ - record StickyLinesProperties(int tabWith) { + record StickyLinesProperties(int tabWith, ISourceViewer sourceViewer) { } } 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..51179e8c130 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 @@ -208,7 +208,8 @@ private void updateStickyScrollingControls() { for (int i= 0; i < getNumberStickyLines(); i++) { StickyLine stickyLine= stickyLines.get(i); stickyLineTextJoiner.add(stickyLine.text()); - stickyLineNumberJoiner.add(fillLineNumberWithLeadingSpaces(stickyLine.lineNumber() + 1)); + int lineNumber= getSourceViewerLineNumber(stickyLine.lineNumber()); + stickyLineNumberJoiner.add(fillLineNumberWithLeadingSpaces(lineNumber + 1)); } String newStickyLineText= stickyLineTextJoiner.toString(); @@ -223,6 +224,13 @@ private void updateStickyScrollingControls() { } } + private int getSourceViewerLineNumber(int i) { + if (sourceViewer instanceof ITextViewerExtension5 extension) { + return extension.widgetLine2ModelLine(i); + } + return i; + } + private String fillLineNumberWithLeadingSpaces(int lineNumber) { int lineCount= sourceViewer.getDocument().getNumberOfLines(); int lineNumberLength= String.valueOf(lineCount).length(); @@ -257,9 +265,6 @@ private void styleStickyLines() { 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); 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..df2ea6bee66 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,8 +22,10 @@ import java.time.Duration; import java.util.Collections; +import java.util.LinkedList; import java.util.List; +import org.eclipse.swt.custom.StyledText; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.graphics.RGB; @@ -138,7 +140,7 @@ private StickyScrollingControlSettings loadControlSettings(IPreferenceStore stor private StickyLinesProperties loadStickyLinesProperties(IPreferenceStore store) { int tabWidth= store.getInt(EDITOR_TAB_WIDTH); - return new StickyLinesProperties(tabWidth); + return new StickyLinesProperties(tabWidth, sourceViewer); } @Override @@ -151,13 +153,52 @@ public void viewportChanged(int newVerticalOffset) { } private void calculateAndShowStickyLines() { - List stickyLines= stickyLinesProvider.getStickyLines(sourceViewer, stickyLinesProperties); + List stickyLines= Collections.emptyList(); + + StyledText textWidget= sourceViewer.getTextWidget(); + int startLine= textWidget.getTopIndex(); + + if (startLine > 0) { + stickyLines= stickyLinesProvider.getStickyLines(textWidget, startLine, 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(); + StyledText textWidget= sourceViewer.getTextWidget(); + int maximumLines= textWidget.getLineCount(); + + for (int i= startLine + 1; i <= firstVisibleLine && i < maximumLines; i++) { + List stickyLinesInLineI= stickyLinesProvider.getStickyLines(textWidget, 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/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..afd782d5f91 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 @@ -25,13 +25,9 @@ import org.eclipse.swt.SWT; import org.eclipse.swt.custom.StyledText; -import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; -import org.eclipse.jface.text.IRegion; -import org.eclipse.jface.text.ITextViewerExtension5; -import org.eclipse.jface.text.source.IVerticalRuler; import org.eclipse.jface.text.source.SourceViewer; import org.eclipse.ui.internal.texteditor.stickyscroll.IStickyLinesProvider.StickyLinesProperties; @@ -50,12 +46,12 @@ public void setup() { sourceViewer = new SourceViewer(shell, null, SWT.None); stickyLinesProvider = new DefaultStickyLinesProvider(); textWidget = sourceViewer.getTextWidget(); - stickyLinesProperties = new StickyLinesProperties(4); + stickyLinesProperties = new StickyLinesProperties(4, sourceViewer); } @Test public void testEmptySourceCode() { - List stickyLines = stickyLinesProvider.getStickyLines(sourceViewer, stickyLinesProperties); + List stickyLines = stickyLinesProvider.getStickyLines(textWidget, 0, stickyLinesProperties); assertThat(stickyLines, is(empty())); } @@ -67,7 +63,7 @@ public void testSingleStickyLine() { line 2<"""; setText(text); - List stickyLines = stickyLinesProvider.getStickyLines(sourceViewer, stickyLinesProperties); + List stickyLines = stickyLinesProvider.getStickyLines(textWidget, 1, stickyLinesProperties); assertThat(stickyLines, contains(new StickyLine("line 1", 0))); } @@ -81,9 +77,9 @@ public void testLineUnderStickyLine() { line 4"""; setText(text); - List stickyLines = stickyLinesProvider.getStickyLines(sourceViewer, stickyLinesProperties); + List stickyLines = stickyLinesProvider.getStickyLines(textWidget, 1, stickyLinesProperties); - assertThat(stickyLines, contains(new StickyLine("line 1", 0), new StickyLine(" line 2<", 1))); + assertThat(stickyLines, contains(new StickyLine("line 1", 0))); } @Test @@ -95,7 +91,7 @@ public void testNewStickyRoot() { line 4<"""; setText(text); - List stickyLines = stickyLinesProvider.getStickyLines(sourceViewer, stickyLinesProperties); + List stickyLines = stickyLinesProvider.getStickyLines(textWidget, 3, stickyLinesProperties); assertThat(stickyLines, contains(new StickyLine("line 3", 2))); } @@ -110,24 +106,23 @@ public void testIgnoreEmptyLines() { line 3<"""; setText(text); - List stickyLines = stickyLinesProvider.getStickyLines(sourceViewer, stickyLinesProperties); + List stickyLines = stickyLinesProvider.getStickyLines(textWidget, 4, stickyLinesProperties); assertThat(stickyLines, contains(new StickyLine("line 1", 0), new StickyLine(" line 2", 2))); } @Test public void testLinesWithTabs() { - stickyLinesProperties = new StickyLinesProperties(2); + stickyLinesProperties = new StickyLinesProperties(2, sourceViewer); String text = """ line 1 \tline 2 \t\tline 3<"""; setText(text); - List stickyLines = stickyLinesProvider.getStickyLines(sourceViewer, stickyLinesProperties); + List stickyLines = stickyLinesProvider.getStickyLines(textWidget, 2, stickyLinesProperties); assertThat(stickyLines, contains(new StickyLine("line 1", 0), new StickyLine("\tline 2", 1))); - } @Test @@ -141,10 +136,9 @@ public void testStartAtEmptyLineWithNext() { textWidget.setText(text); textWidget.setTopIndex(3); - List stickyLines = stickyLinesProvider.getStickyLines(sourceViewer, stickyLinesProperties); + List stickyLines = stickyLinesProvider.getStickyLines(textWidget, 3, stickyLinesProperties); assertThat(stickyLines, contains(new StickyLine("line 1", 0), new StickyLine(" line 2", 2))); - } @Test @@ -152,42 +146,14 @@ 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))); - } - - @Test - public void testRemoveStickyLines() { - String text = """ - line 1 - line 2 - line 3 - line 4<"""; - setText(text); - - List stickyLines = stickyLinesProvider.getStickyLines(sourceViewer, stickyLinesProperties); - - assertThat(stickyLines, contains(new StickyLine("line 3", 2))); - } - - @Test - public void testSourceViewerWithDifferentModelAndWindgetLines() { - sourceViewer = new SourceViewerLineMapping(shell, null, SWT.None); - textWidget = sourceViewer.getTextWidget(); + line 3 - String text = """ - line 1 - line 2<"""; + line 4"""; setText(text); - List stickyLines = stickyLinesProvider.getStickyLines(sourceViewer, stickyLinesProperties); + List stickyLines = stickyLinesProvider.getStickyLines(textWidget, 3, stickyLinesProperties); - assertThat(stickyLines, contains(new StickyLine("line 1", 42))); + assertThat(stickyLines, contains(new StickyLine("line 1", 0), new StickyLine(" line 2", 1))); } /** @@ -196,37 +162,6 @@ public void testSourceViewerWithDifferentModelAndWindgetLines() { */ 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; - } - } - } - - private class SourceViewerLineMapping extends SourceViewer implements ITextViewerExtension5 { - - public SourceViewerLineMapping(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 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..2d0999e6b4d 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 @@ -43,6 +43,8 @@ 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; import org.eclipse.jface.text.source.SourceViewer; @@ -56,6 +58,7 @@ public class StickyScrollingControlTest { private Color separatorColor; private StickyScrollingControl stickyScrollingControl; private IVerticalRuler ruler; + private StickyScrollingControlSettings settings; @Before public void setup() { @@ -71,8 +74,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); } @@ -98,6 +101,30 @@ public void testShowStickyLineTexts() { assertEquals(expStickyLineText, stickyLineText.getText()); } + @Test + public void testShowStickyLineTextsWithSourceViewerMapping() { + shell.dispose(); + shell = new Shell(Display.getDefault()); + shell.setSize(200, 200); + shell.setLayout(new FillLayout()); + + sourceViewer = new SourceViewerLineMapping(shell, ruler, SWT.V_SCROLL | SWT.H_SCROLL); + sourceViewer.setDocument(new Document()); + sourceViewer.getTextWidget().setBounds(0, 0, 200, 200); + + stickyScrollingControl = new StickyScrollingControl(sourceViewer, ruler, settings, null); + + List stickyLines = List.of(new StickyLine("line 10", 9), new StickyLine("line 20", 19)); + stickyScrollingControl.setStickyLines(stickyLines); + + StyledText stickyLineNumber = getStickyLineNumber(); + String expLineNumber = "52" + System.lineSeparator() + "62"; + assertEquals(expLineNumber, stickyLineNumber.getText()); + StyledText stickyLineText = getStickyLineText(); + String expStickyLineText = "line 10" + System.lineSeparator() + "line 20"; + assertEquals(expStickyLineText, stickyLineText.getText()); + } + @Test public void testCorrectColorsApplied() { List stickyLines = List.of(new StickyLine("line 10", 9), new StickyLine("line 20", 19)); @@ -119,8 +146,8 @@ public void testLimitStickyLinesCount() { List stickyLines = List.of(new StickyLine("line 10", 9), new StickyLine("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(); @@ -147,8 +174,8 @@ public void testCopyStyleRanges() { @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(); @@ -164,8 +191,8 @@ public void testWithoutLineNumber() { 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(); @@ -419,4 +446,27 @@ private void drainDisplayEventQueue() { } } + private class SourceViewerLineMapping extends SourceViewer implements ITextViewerExtension5 { + + public SourceViewerLineMapping(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; + } + + } + } 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 3fc500fae2d..2b84f4a86d9 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,9 +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.never; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -62,14 +65,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); @@ -78,7 +86,7 @@ public void setup() { linesProvider = mock(IStickyLinesProvider.class); stickyScrollingHandler = new StickyScrollingHandler(sourceViewer, ruler, store, linesProvider); - stickyLinesProperties = new StickyLinesProperties(4); + stickyLinesProperties = new StickyLinesProperties(4, sourceViewer); } @After @@ -88,7 +96,7 @@ public void teardown() { @Test public void testShowStickyLines() { - when(linesProvider.getStickyLines(sourceViewer, stickyLinesProperties)) + when(linesProvider.getStickyLines(textWidget, 1, stickyLinesProperties)) .thenReturn(List.of(new StickyLine("line 10", 9))); stickyScrollingHandler.viewportChanged(100); @@ -101,6 +109,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); @@ -112,7 +133,7 @@ public void testUnistallStickyLines() { @Test public void testPreferencesLoaded() { - when(linesProvider.getStickyLines(sourceViewer, stickyLinesProperties)) + when(linesProvider.getStickyLines(textWidget, 1, stickyLinesProperties)) .thenReturn(List.of(new StickyLine("line 10", 9))); stickyScrollingHandler.viewportChanged(100); @@ -123,7 +144,9 @@ public void testPreferencesLoaded() { @Test public void testPreferencesUpdated() { - when(linesProvider.getStickyLines(sourceViewer, stickyLinesProperties)) + when(linesProvider.getStickyLines(textWidget, 1, stickyLinesProperties)) + .thenReturn(List.of(new StickyLine("line 10", 9), new StickyLine("line 20", 19))); + when(linesProvider.getStickyLines(textWidget, 2, stickyLinesProperties)) .thenReturn(List.of(new StickyLine("line 10", 9), new StickyLine("line 20", 19))); stickyScrollingHandler.viewportChanged(100); @@ -141,13 +164,13 @@ public void testPreferencesUpdated() { @Test public void testThrottledExecution() throws InterruptedException { - when(linesProvider.getStickyLines(sourceViewer, stickyLinesProperties)) + when(linesProvider.getStickyLines(textWidget, 1, stickyLinesProperties)) .thenReturn(List.of(new StickyLine("line 10", 9))); - when(linesProvider.getStickyLines(sourceViewer, stickyLinesProperties)) + when(linesProvider.getStickyLines(textWidget, 1, stickyLinesProperties)) .thenReturn(List.of(new StickyLine("line 10", 9))); - when(linesProvider.getStickyLines(sourceViewer, stickyLinesProperties)) + when(linesProvider.getStickyLines(textWidget, 1, stickyLinesProperties)) .thenReturn(List.of(new StickyLine("line 10", 9))); - when(linesProvider.getStickyLines(sourceViewer, stickyLinesProperties)) + when(linesProvider.getStickyLines(textWidget, 1, stickyLinesProperties)) .thenReturn(List.of(new StickyLine("line 10", 9))); stickyScrollingHandler.viewportChanged(100); @@ -162,8 +185,36 @@ public void testThrottledExecution() throws InterruptedException { // Call to lines provider should be throttled, at least one and at most // 3 calls expected - verify(linesProvider, atMost(3)).getStickyLines(sourceViewer, stickyLinesProperties); - verify(linesProvider, atLeastOnce()).getStickyLines(sourceViewer, stickyLinesProperties); + verify(linesProvider, atMost(3)).getStickyLines(textWidget, 1, stickyLinesProperties); + verify(linesProvider, atLeastOnce()).getStickyLines(textWidget, 1, stickyLinesProperties); + } + + @Test + public void testRemoveStickyLines() { + when(linesProvider.getStickyLines(textWidget, 1, stickyLinesProperties)) + .thenReturn(List.of(new StickyLine("line 1", 0), new StickyLine("line 2", 1))); + when(linesProvider.getStickyLines(textWidget, 2, stickyLinesProperties)) + .thenReturn(List.of(new StickyLine("line 3", 2))); + + stickyScrollingHandler.viewportChanged(100); + + StyledText stickyLineText = getStickyLineText(); + String expStickyLineText = "line 1"; + assertEquals(expStickyLineText, stickyLineText.getText()); + } + + @Test + public void testLineUnderStickyLine() { + when(linesProvider.getStickyLines(textWidget, 1, stickyLinesProperties)) + .thenReturn(List.of(new StickyLine("line 1", 0))); + when(linesProvider.getStickyLines(textWidget, 2, stickyLinesProperties)) + .thenReturn(List.of(new StickyLine("line 1", 0), new StickyLine("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 { From 55038906f2f7d5200d26b7c044d6c499fc7692ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=8A?= =?UTF-8?q?=D1=80=20=D0=9A=D1=83=D1=80=D1=82=D0=B0=D0=BA=D0=BE=D0=B2?= Date: Fri, 25 Oct 2024 14:33:05 +0300 Subject: [PATCH 075/232] Convert ProgressTestCase to pure JUnit 4 Unstable test on MacOS verification build which should hopefully get a bit more stable with "less" extra things being done by the tests. --- .../tests/progress/ProgressContantsTest.java | 23 ++++++-------- .../ui/tests/progress/ProgressTestCase.java | 31 ++++++++++--------- .../ui/tests/progress/ProgressViewTests.java | 25 +++++++-------- 3 files changed, 37 insertions(+), 42 deletions(-) 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(); } From e43dec220adca4231e5b4cd733d0d9cc237b1151 Mon Sep 17 00:00:00 2001 From: Ed Merks Date: Fri, 25 Oct 2024 16:21:52 +0200 Subject: [PATCH 076/232] Increment to 3.207.0 because re-exported org.eclipse.swt changed ranges https://github.com/eclipse-platform/eclipse.platform.swt/issues/1317 --- bundles/org.eclipse.ui/META-INF/MANIFEST.MF | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bundles/org.eclipse.ui/META-INF/MANIFEST.MF b/bundles/org.eclipse.ui/META-INF/MANIFEST.MF index d7cfe55619b..c19e9d63918 100644 --- a/bundles/org.eclipse.ui/META-INF/MANIFEST.MF +++ b/bundles/org.eclipse.ui/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %Plugin.name Bundle-SymbolicName: org.eclipse.ui; singleton:=true -Bundle-Version: 3.206.200.qualifier +Bundle-Version: 3.207.0.qualifier Bundle-Activator: org.eclipse.ui.internal.UIPlugin Bundle-ActivationPolicy: lazy Bundle-Vendor: %Plugin.providerName From 54849021b21ba173e6008f44d294423017ea456a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=8A?= =?UTF-8?q?=D1=80=20=D0=9A=D1=83=D1=80=D1=82=D0=B0=D0=BA=D0=BE=D0=B2?= Date: Fri, 25 Oct 2024 22:02:07 +0300 Subject: [PATCH 077/232] Simplify ResourceInitialSelectionTest access to Display --- .../ui/tests/dialogs/ResourceInitialSelectionTest.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) 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 620f0643267..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 @@ -23,8 +23,8 @@ 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; @@ -34,7 +34,7 @@ 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; @@ -351,10 +351,10 @@ private void createProject() throws CoreException { // Assert files have been properly created - Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(); + Display display = PlatformUI.getWorkbench().getDisplay(); for (String fileName : FILE_NAMES) { - DisplayHelper.waitForCondition(shell.getDisplay(), 1000, () -> project.getFile(fileName).exists()); + DisplayHelper.waitForCondition(display, 1000, () -> project.getFile(fileName).exists()); assertTrue("File was not created", project.getFile(fileName).exists()); } } From d4d7daac61f51a0e25875ffb436227472a6c8c30 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=8A?= =?UTF-8?q?=D1=80=20=D0=9A=D1=83=D1=80=D1=82=D0=B0=D0=BA=D0=BE=D0=B2?= Date: Sat, 26 Oct 2024 09:12:05 +0300 Subject: [PATCH 078/232] CloseAllHandlerTest cleanup Use static imports and pattern matching to ease reading. --- .../ui/tests/e4/CloseAllHandlerTest.java | 55 ++++++++++--------- 1 file changed, 30 insertions(+), 25 deletions(-) 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 index 194726c5d62..c3c0ad72f0c 100644 --- 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 @@ -12,6 +12,12 @@ 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; @@ -44,7 +50,6 @@ import org.eclipse.ui.PartInitException; import org.eclipse.ui.internal.CloseAllHandler; import org.eclipse.ui.internal.Workbench; -import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.osgi.framework.BundleContext; @@ -102,12 +107,12 @@ public void testCloseMixedEditorTypes() { Command closeAllCommand = commandService.getCommand(CLOSE_ALL_EDITORS_COMMAND_ID); final ParameterizedCommand parameterizedCommand = ParameterizedCommand.generateCommand(closeAllCommand, - Collections.EMPTY_MAP); + Collections.emptyMap()); // verify the close all editors handler enabledment is false (no editors are // open yet!) boolean canExecute = handlerService.canExecute(parameterizedCommand); - Assert.assertFalse(canExecute); + assertFalse(canExecute); // scenario 1: e4 part descriptor contribution MPartDescriptor partDescriptor = createDummyPartDescriptor(); @@ -119,46 +124,46 @@ public void testCloseMixedEditorTypes() { // verify the close all handler is enabled now (since dummy editor has been // opened) canExecute = handlerService.canExecute(parameterizedCommand); - Assert.assertTrue(canExecute); + assertTrue(canExecute); // close all editors (dummy editor should close!) dummyPart = partService.findPart(DUMMY_E4_PART_ID); - Assert.assertNotNull(dummyPart); + assertNotNull(dummyPart); handlerService.executeHandler(parameterizedCommand); dummyPart = partService.findPart(DUMMY_E4_PART_ID); - Assert.assertNull(dummyPart); + assertNull(dummyPart); // verify the close all handler is *not* enabled now (since dummy editor has // been closed) canExecute = handlerService.canExecute(parameterizedCommand); - Assert.assertFalse(canExecute); + assertFalse(canExecute); // scenario 2: open a compatibility layer editor IFileEditorInput input = new DummyFileEditorInput(); Object activeWindow = applicationContext.getActive(ISources.ACTIVE_WORKBENCH_WINDOW_NAME); - Assert.assertTrue("Active workbench window not found.", activeWindow instanceof IWorkbenchWindow); + assertTrue("Active workbench window not found.", activeWindow instanceof IWorkbenchWindow); IWorkbenchWindow window = (IWorkbenchWindow) activeWindow; try { window.getActivePage().openEditor(input, TEST_COMPATIBILITY_LAYER_EDITOR_ID); } catch (PartInitException e) { - Assert.fail("Test Compatibility Editor could not be opened. Further testing cannot complete."); + 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); - Assert.assertTrue(canExecute); + assertTrue(canExecute); IEditorPart compatEditor = window.getActivePage().findEditor(input); - Assert.assertNotNull(compatEditor); + assertNotNull(compatEditor); handlerService.executeHandler(parameterizedCommand); compatEditor = window.getActivePage().findEditor(input); - Assert.assertNull(compatEditor); + assertNull(compatEditor); // verify the close all handler is *not* enabled now (since compatibility layer // editor has been closed) canExecute = handlerService.canExecute(parameterizedCommand); - Assert.assertFalse(canExecute); + assertFalse(canExecute); // scenario 3: // finally: re-open both the compatibility layer editor *and* the dummy e4 part @@ -168,33 +173,33 @@ public void testCloseMixedEditorTypes() { try { window.getActivePage().openEditor(input, TEST_COMPATIBILITY_LAYER_EDITOR_ID); } catch (PartInitException e) { - Assert.fail("Test Compatibility Editor could not be opened. Further testing cannot complete."); + fail("Test Compatibility Editor could not be opened. Further testing cannot complete."); } compatEditor = window.getActivePage().findEditor(input); - Assert.assertNotNull(compatEditor); + assertNotNull(compatEditor); dummyPart = partService.findPart(DUMMY_E4_PART_ID); - Assert.assertNotNull(dummyPart); + assertNotNull(dummyPart); canExecute = handlerService.canExecute(parameterizedCommand); - Assert.assertTrue(canExecute); + assertTrue(canExecute); // close all editors handlerService.executeHandler(parameterizedCommand); canExecute = handlerService.canExecute(parameterizedCommand); - Assert.assertFalse(canExecute); + assertFalse(canExecute); // verify they are all closed compatEditor = window.getActivePage().findEditor(input); - Assert.assertNull(compatEditor); + assertNull(compatEditor); dummyPart = partService.findPart(DUMMY_E4_PART_ID); - Assert.assertNull(dummyPart); + assertNull(dummyPart); } private MPart createAndOpenE4Part(MPartDescriptor partDescriptor) { Optional primaryPartStack = findPrimaryConfiguationAreaPartStack(application, modelService); if (primaryPartStack.isEmpty()) { - Assert.fail("Test cannot proceed as the primary part stack could not be found in the application."); + fail("Test cannot proceed as the primary part stack could not be found in the application."); } MPart dummyPart = partService.createPart(partDescriptor.getElementId()); @@ -226,10 +231,10 @@ private Optional findPrimaryConfiguationAreaPartStack(MApplication a if (areaCandidates.size() == 1) { MArea primaryArea = areaCandidates.get(0); for (MPartSashContainerElement element : primaryArea.getChildren()) { - if (element instanceof MPartStack) { - return Optional.of((MPartStack) element); - } else if (element instanceof MPartSashContainer) { - return ((MPartSashContainer) element).getChildren().stream().filter(c -> c instanceof MPartStack) + 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(); } } From 9e0cb2a040fe4c6bdffaa90aa3ccbabc40434249 Mon Sep 17 00:00:00 2001 From: Matthias Becker Date: Fri, 25 Oct 2024 15:07:16 +0200 Subject: [PATCH 079/232] Only set background color on tree if "linesVisible" is false On macOS setting "linesVisible" to true creates an zebra styled pattern on the tree. If we now set the background color via CSS on this tree that pattern would be gone. Setting the background color via CSS on a tree that has "linesVisible" to false does not do any harm. --- bundles/org.eclipse.ui.themes/css/e4_preview_mac.css | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/bundles/org.eclipse.ui.themes/css/e4_preview_mac.css b/bundles/org.eclipse.ui.themes/css/e4_preview_mac.css index b426954c9d4..fe8cb0a1003 100644 --- a/bundles/org.eclipse.ui.themes/css/e4_preview_mac.css +++ b/bundles/org.eclipse.ui.themes/css/e4_preview_mac.css @@ -103,7 +103,6 @@ CTabFolder Canvas { } .View Composite, -.View Composite Tree, .View Composite Label, .View ToolBar, .View Group, @@ -145,6 +144,11 @@ CTabFolder Canvas { swt-tabBackground-color: #ffffff; } + +.View Composite Tree[swt-lines-visible=false]{ + background-color: #f8f8f8; +} + .View Composite PrependingAsteriskFilteredTree, .View PrependingAsteriskFilteredTree Text, .View Group Text, From ec2d9bd0d374ee7c0a83051907b2195d05cfd3fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=8A?= =?UTF-8?q?=D1=80=20=D0=9A=D1=83=D1=80=D1=82=D0=B0=D0=BA=D0=BE=D0=B2?= Date: Mon, 28 Oct 2024 09:45:35 +0200 Subject: [PATCH 080/232] Stop needlessly pass TestCase instance in harness Convert the tests to plain JUnit4 while at them too. --- .../ui/tests/harness/util/ActionUtil.java | 46 +++++++------------ .../eclipse/ui/tests/api/IActionBarsTest.java | 42 +++++++++-------- .../ui/tests/api/IActionDelegateTest.java | 24 +++++----- .../tests/api/IEditorActionDelegateTest.java | 15 ++---- .../ui/tests/api/IViewActionDelegateTest.java | 15 ++---- .../IWorkbenchWindowActionDelegateTest.java | 17 +++---- 6 files changed, 66 insertions(+), 93 deletions(-) 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/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/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/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/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 From 4fbbe1b8f3c6653a50135152e641da20a79722dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=8A?= =?UTF-8?q?=D1=80=20=D0=9A=D1=83=D1=80=D1=82=D0=B0=D0=BA=D0=BE=D0=B2?= Date: Mon, 28 Oct 2024 21:32:31 +0200 Subject: [PATCH 081/232] Get rid of ArrayUtil.equals(Object[], Object[]) Use JUnit's assertArrayEquals or JVM's Arrays.equals instead. --- .../ui/tests/harness/util/ArrayUtil.java | 19 +----- .../tests/api/IAggregateWorkingSetTest.java | 7 +-- .../ui/tests/api/IEditorRegistryTest.java | 4 +- .../ui/tests/api/IWorkingSetManagerTest.java | 63 ++++++++----------- .../eclipse/ui/tests/api/IWorkingSetTest.java | 19 +++--- 5 files changed, 40 insertions(+), 72 deletions(-) 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/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/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/IWorkingSetManagerTest.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/api/IWorkingSetManagerTest.java index 230472282f1..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); 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, From b0d7509c7e5e3ae29850bf761a5e5633f7695623 Mon Sep 17 00:00:00 2001 From: Maximilian Wittmer Date: Tue, 15 Oct 2024 13:01:17 +0200 Subject: [PATCH 082/232] [FindNextAction] synchronize find history with FindReplaceOverlay #2285 Synchronize search history with the FindReplaceOverlay, FindReplaceDialog and FindNextAction. Fixes https://github.com/eclipse-platform/eclipse.platform.ui/issues/2285 --- .../internal/findandreplace/HistoryStore.java | 41 ++++++++++--------- .../overlay/FindReplaceOverlay.java | 13 +++--- .../eclipse/ui/texteditor/FindNextAction.java | 9 ++-- .../ui/texteditor/FindReplaceDialog.java | 8 ++-- 4 files changed, 37 insertions(+), 34 deletions(-) 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/FindReplaceOverlay.java b/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/findandreplace/overlay/FindReplaceOverlay.java index 551fc8e6562..4472e94a6ec 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 @@ -71,6 +71,7 @@ import org.eclipse.ui.internal.texteditor.TextEditorPlugin; import org.eclipse.ui.texteditor.AbstractTextEditor; +import org.eclipse.ui.texteditor.FindReplaceAction; import org.eclipse.ui.texteditor.IAbstractTextEditorHelpContextIds; import org.eclipse.ui.texteditor.ITextEditorActionDefinitionIds; import org.eclipse.ui.texteditor.StatusTextEditor; @@ -228,10 +229,13 @@ private void asyncExecIfOpen(Runnable operation) { * * @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; } public void close() { @@ -542,8 +546,7 @@ private void createSearchBar() { 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(), "searchhistory", //$NON-NLS-1$ + 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); 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/FindReplaceDialog.java b/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/FindReplaceDialog.java index d71941d293f..ee8ea79abb4 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 @@ -318,7 +318,7 @@ public void widgetSelected(SelectionEvent e) { writeSelection(); updateButtonState(!somethingFound); - + updateFindHistory(); evaluateFindReplaceStatus(); } @@ -1278,10 +1278,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; } From 857f51afcacca5692ad1bdfd83fa3af3640726ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=8A?= =?UTF-8?q?=D1=80=20=D0=9A=D1=83=D1=80=D1=82=D0=B0=D0=BA=D0=BE=D0=B2?= Date: Tue, 29 Oct 2024 11:31:10 +0200 Subject: [PATCH 083/232] Simplify o.e.ui.tests.harness Make use of new Java and Eclipse APIs. --- .../ui/tests/harness/util/DialogCheck.java | 46 ++++++------------- .../ui/tests/harness/util/FileTool.java | 41 ++--------------- .../ui/tests/harness/util/FileUtil.java | 13 ++---- .../tests/navigator/GoBackForwardsTest.java | 7 +-- 4 files changed, 25 insertions(+), 82 deletions(-) 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..1166a64b47a 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,7 @@ 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\' + preferred.y /= button.getText().lines().count(); // check for '\n\' if (size.y / preferred.y > 1) { preferred.x /= (size.y / preferred.y); } @@ -170,7 +168,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 +189,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 +200,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.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"); From 910b6fc38a3d532e14e78890837f29e3a3123619 Mon Sep 17 00:00:00 2001 From: Amartya Parijat Date: Fri, 25 Oct 2024 12:31:28 +0200 Subject: [PATCH 084/232] Set Edge data directory to workspace on Windows This contributes to adding the workspace address to the display data on workbench initialization as the data directory used by Edge browser. Contributes to https://github.com/eclipse-platform/eclipse.platform.swt/issues/1013 --- .../org/eclipse/ui/internal/Workbench.java | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/Workbench.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/Workbench.java index 8e9a02ca0de..667f5c3ce79 100644 --- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/Workbench.java +++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/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,6 +142,7 @@ 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; @@ -292,6 +295,8 @@ 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 class StartupProgressBundleListener implements ServiceListener { private final SubMonitor subMonitor; @@ -451,6 +456,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 +519,19 @@ 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 workspaceLocationURI = workspaceLocation.getURL().toURI(); + display.setData(EDGE_USER_DATA_FOLDER, Paths.get(workspaceLocationURI).toString()); + } catch (URISyntaxException 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. * From 5e9c188fcd9d0feffdbee898d4b3729ac39a4471 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=8A?= =?UTF-8?q?=D1=80=20=D0=9A=D1=83=D1=80=D1=82=D0=B0=D0=BA=D0=BE=D0=B2?= Date: Tue, 29 Oct 2024 18:48:17 +0200 Subject: [PATCH 085/232] Fix CascadingTheme.keySet signature There is no point in using raw Set as underlying data is not raw. --- .../org/eclipse/ui/internal/themes/CascadingTheme.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/CascadingTheme.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/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/Eclipse UI/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(); } From f7dd97bf6a7a9829b23d8cc296228931dc6f1b56 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=8A?= =?UTF-8?q?=D1=80=20=D0=9A=D1=83=D1=80=D1=82=D0=B0=D0=BA=D0=BE=D0=B2?= Date: Tue, 29 Oct 2024 23:15:57 +0200 Subject: [PATCH 086/232] Stabilize DynamicTest * Redo assertions to use assertEquals for better reporting. * Remove useless catch blocks with fails * Use DisplayHelper to spin the event loop --- .../ui/tests/activities/DynamicTest.java | 167 +++++++----------- 1 file changed, 65 insertions(+), 102 deletions(-) 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()); From bbd9101ffd7f646fcdfafab2ddc66288758650a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=8A?= =?UTF-8?q?=D1=80=20=D0=9A=D1=83=D1=80=D1=82=D0=B0=D0=BA=D0=BE=D0=B2?= Date: Wed, 30 Oct 2024 07:43:40 +0200 Subject: [PATCH 087/232] Fix DialogCheck ArithmeticException Caused by https://github.com/eclipse-platform/eclipse.platform.ui/pull/2457 doing division by zero when button has no text but just image. --- .../src/org/eclipse/ui/tests/harness/util/DialogCheck.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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 1166a64b47a..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 @@ -156,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 /= button.getText().lines().count(); // 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); } From de6e8e562b4404bc5946b1c1b207fe8be99b4404 Mon Sep 17 00:00:00 2001 From: fedejeanne Date: Tue, 29 Oct 2024 14:10:09 +0100 Subject: [PATCH 088/232] Ignore missing versions on required bundles for Java editor examples Change the PDE preferences from "Warning" to "Ignore". --- .../.settings/org.eclipse.pde.prefs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 From 76701fe20d207c4633b17f4633181d57cfb50fe5 Mon Sep 17 00:00:00 2001 From: Eclipse Platform Bot Date: Tue, 29 Oct 2024 13:17:11 +0000 Subject: [PATCH 089/232] Version bump(s) for 4.34 stream --- .../org.eclipse.ui.examples.javaeditor/META-INF/MANIFEST.MF | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 From ba43e78c4b65ce053f4b3cf0cbd8ac8f601f2a07 Mon Sep 17 00:00:00 2001 From: Feilim Breatnach Date: Tue, 29 Oct 2024 16:55:32 +0000 Subject: [PATCH 090/232] An attempt at resolving a race condition/sporadic test failure in the CloseAllHandlerTest by reordering some testing scenarios, and making use of PlatformUI.getWorkbench().getActiveWorkbenchWindow() to get/init the active workbench window. --- .../ui/tests/e4/CloseAllHandlerTest.java | 64 +++++++++---------- 1 file changed, 32 insertions(+), 32 deletions(-) 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 index c3c0ad72f0c..81fc1051060 100644 --- 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 @@ -45,9 +45,9 @@ import org.eclipse.ui.IFileEditorInput; import org.eclipse.ui.IPageLayout; import org.eclipse.ui.IPersistableElement; -import org.eclipse.ui.ISources; 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; @@ -89,13 +89,13 @@ private MApplication getApplicationModel() { * Tests the enabled when and execution logic within the * {@link CloseAllHandler}. * - * Scenario 1: E4 style part contribution which is tagged as representing an + * 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 2: compatibility layer type 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). @@ -114,35 +114,11 @@ public void testCloseMixedEditorTypes() { boolean canExecute = handlerService.canExecute(parameterizedCommand); assertFalse(canExecute); - // scenario 1: 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 2: open a compatibility layer editor + IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow(); + assertNotNull("Active workbench window not found.", window); + IFileEditorInput input = new DummyFileEditorInput(); - Object activeWindow = applicationContext.getActive(ISources.ACTIVE_WORKBENCH_WINDOW_NAME); - assertTrue("Active workbench window not found.", activeWindow instanceof IWorkbenchWindow); - IWorkbenchWindow window = (IWorkbenchWindow) activeWindow; try { window.getActivePage().openEditor(input, TEST_COMPATIBILITY_LAYER_EDITOR_ID); } catch (PartInitException e) { @@ -165,6 +141,30 @@ public void testCloseMixedEditorTypes() { canExecute = handlerService.canExecute(parameterizedCommand); assertFalse(canExecute); + // scenario 1: 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 From 21a20ee8c44ab309c8f2d611d98db81c70607b88 Mon Sep 17 00:00:00 2001 From: Feilim Breatnach Date: Tue, 29 Oct 2024 17:00:06 +0000 Subject: [PATCH 091/232] Fix scenario names in Java comment. --- .../org/eclipse/ui/tests/e4/CloseAllHandlerTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 index 81fc1051060..3bf7836e98f 100644 --- 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 @@ -114,7 +114,7 @@ public void testCloseMixedEditorTypes() { boolean canExecute = handlerService.canExecute(parameterizedCommand); assertFalse(canExecute); - // scenario 2: open a compatibility layer editor + // scenario 1: open a compatibility layer editor IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow(); assertNotNull("Active workbench window not found.", window); @@ -141,7 +141,7 @@ public void testCloseMixedEditorTypes() { canExecute = handlerService.canExecute(parameterizedCommand); assertFalse(canExecute); - // scenario 1: e4 part descriptor contribution + // scenario 2: e4 part descriptor contribution MPartDescriptor partDescriptor = createDummyPartDescriptor(); application.getDescriptors().add(partDescriptor); From a563cbe480f16a515f31a9f2ae309f8f090ae36a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=8A?= =?UTF-8?q?=D1=80=20=D0=9A=D1=83=D1=80=D1=82=D0=B0=D0=BA=D0=BE=D0=B2?= Date: Wed, 30 Oct 2024 10:32:14 +0200 Subject: [PATCH 092/232] Prune useless parts of o.e.ui.tests A lot of no longer needed legacy from JUnit 3.x time is simply cluttering the codebase now. --- .../eclipse/ui/tests/rcp/RcpTestSuite.java | 2 - .../RCP Test Suite.launch | 2 +- .../eclipse/ui/tests/autotests/XmlUtil.java | 28 ++----------- .../ui/tests/commands/ToggleStateTest.java | 21 +++------- .../ui/tests/concurrency/Bug_262032.java | 4 +- .../NestedSyncExecDeadlockTest.java | 4 -- .../NoFreezeWhileWaitingForRuleTest.java | 2 +- .../SyncExecWhileUIThreadWaitsForLock.java | 2 +- .../ui/tests/concurrency/TestBug105491.java | 4 -- .../ui/tests/concurrency/TestBug108162.java | 8 +--- .../ui/tests/concurrency/TestBug98621.java | 4 -- .../ImportExistingProjectsWizardTest.java | 40 +++++++++---------- .../eclipse/ui/tests/dnd/Bug87211Test.java | 15 ++++--- .../ui/tests/multieditor/MultiEditorTest.java | 35 +++++++--------- 14 files changed, 59 insertions(+), 112 deletions(-) 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/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/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/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..4767d79cfef 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 @@ -52,10 +52,6 @@ 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()); dialog.run(true, false, new WorkspaceModifyOperation() { 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..cbbc4b14706 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; @@ -47,10 +47,6 @@ public void execute(final IProgressMonitor pm) { private final IWorkspace workspace = ResourcesPlugin.getWorkspace(); - public TestBug108162() { - super(); - } - /** * Performs the test */ @@ -61,7 +57,7 @@ public void testBug() throws CoreException { 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. 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..17965b8e366 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 @@ -75,10 +75,6 @@ public void threadChange(Thread thread) { private final IWorkspace workspace = ResourcesPlugin.getWorkspace(); - public TestBug98621() { - super(); - } - /** * Performs the test */ 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 80b17938d83..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,18 +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.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"; @@ -89,17 +94,15 @@ public class ImportExistingProjectsWizardTest extends UITestCase { private boolean originalRefreshSetting; - public ImportExistingProjectsWizardTest() { - super(ImportExistingProjectsWizardTest.class.getName()); - } + @Rule + public final CloseTestWindowsRule closeTestWindows = new CloseTestWindowsRule(); private Shell getShell() { - return PlatformUI.getWorkbench().getActiveWorkbenchWindow().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); @@ -108,8 +111,8 @@ 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; @@ -143,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) { @@ -159,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(), 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/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); From 0a615f46af7b4c736e560eeab6fa215d1a1c991f Mon Sep 17 00:00:00 2001 From: Eclipse Platform Bot Date: Wed, 30 Oct 2024 08:37:58 +0000 Subject: [PATCH 093/232] Version bump(s) for 4.34 stream --- tests/org.eclipse.ui.tests.rcp/META-INF/MANIFEST.MF | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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..85c4154a3d8 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.500.qualifier Bundle-Vendor: %providerName Require-Bundle: org.eclipse.core.runtime, org.eclipse.ui, From 392b477d58817aa8305336c6784c2e626be44261 Mon Sep 17 00:00:00 2001 From: Maximilian Wittmer Date: Thu, 26 Sep 2024 14:45:36 +0200 Subject: [PATCH 094/232] [FindNextAction] Introduce unit tests Introduces unit tests for the FindNextAction. --- .../ui/editors/tests/EditorsTestSuite.java | 1 + .../ui/editors/tests/FindNextActionTest.java | 263 ++++++++++++++++++ 2 files changed, 264 insertions(+) create mode 100644 tests/org.eclipse.ui.editors.tests/src/org/eclipse/ui/editors/tests/FindNextActionTest.java 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 From 6af467307dc1e10c3171e48d910ff4bf9fb8694b Mon Sep 17 00:00:00 2001 From: Sebastian Ratz Date: Tue, 29 Oct 2024 10:42:17 +0100 Subject: [PATCH 095/232] Microsoft Defender status retrieval: Add 'not running' status Fixes #2447 --- .../org/eclipse/ui/internal/WindowsDefenderConfigurator.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WindowsDefenderConfigurator.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/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/Eclipse UI/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$ }; From 2c59dfb66bf65fa04740f8b96fe68175920eaa09 Mon Sep 17 00:00:00 2001 From: jannisCode Date: Mon, 14 Oct 2024 15:04:49 +0200 Subject: [PATCH 096/232] Show multiline error message for invalid regex in searches when possible When using a regular expression for a search, if there is enough information as to where the invalid character of the expression is then a multiline error message will be shown. The first line contains the regular expression and the second line contains an arrow (^) that points to the offending character. --- .../eclipse/ui/internal/SearchDecoration.java | 54 +++++++++++++++---- 1 file changed, 44 insertions(+), 10 deletions(-) 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 index 47e4e148356..da709d7f8c4 100644 --- a/bundles/org.eclipse.ui/src/org/eclipse/ui/internal/SearchDecoration.java +++ b/bundles/org.eclipse.ui/src/org/eclipse/ui/internal/SearchDecoration.java @@ -19,7 +19,9 @@ 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. @@ -41,11 +43,10 @@ private SearchDecoration() { * the validation. */ public static boolean validateRegex(String regex, ControlDecoration targetDecoration) { - String errorMessage = getValidationError(regex); + String errorMessage = getValidationError(regex, targetDecoration.getControl()); if (errorMessage.isEmpty()) { targetDecoration.hide(); return true; - } Image decorationImage = FieldDecorationRegistry.getDefault() @@ -62,21 +63,54 @@ public static boolean validateRegex(String regex, ControlDecoration targetDecora * @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) { + private static String getValidationError(String regex, Control targetControl) { try { Pattern.compile(regex); return ""; //$NON-NLS-1$ } catch (PatternSyntaxException e) { - String message = e.getLocalizedMessage(); + 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(); - // Only preserve the first line of the original error message. - int i = 0; - while (i < message.length() && "\n\r".indexOf(message.charAt(i)) == -1) { //$NON-NLS-1$ - i++; - } + StringBuilder validationErrorMessage = new StringBuilder(); - return message.substring(0, i); + 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 From 860f98fdc81e2da1a4c938a25c0b2f597324d087 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=8A?= =?UTF-8?q?=D1=80=20=D0=9A=D1=83=D1=80=D1=82=D0=B0=D0=BA=D0=BE=D0=B2?= Date: Wed, 30 Oct 2024 15:22:43 +0200 Subject: [PATCH 097/232] Stop using assertTrue(false) This is plain wrong as it will always fail. Use fail directly or simplify tests where possible to remove the need for it. Other small improvements to tests done wherever seen while doing the main changes here. --- .../jface/text/tests/HTML2TextReaderTest.java | 7 +- .../tests/AnnotationModelExtension2Test.java | 8 +- .../eclipse/text/tests/ChildDocumentTest.java | 307 ++++-------- .../org/eclipse/text/tests/DocumentTest.java | 258 +++------- .../api/SelectionListenerFactoryTest.java | 34 +- .../markers/MarkersViewColumnSizeTest.java | 14 +- .../markers/ResourceMappingMarkersTest.java | 6 +- .../tests/operations/OperationsAPITest.java | 11 +- .../PropertyPageEnablementTest.java | 4 +- .../tests/HippieCompletionTest.java | 453 ++++++++---------- 10 files changed, 412 insertions(+), 690 deletions(-) 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.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.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/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/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/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/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.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; } From 25212100534dac58e53d5329a63b3a3485c7853c Mon Sep 17 00:00:00 2001 From: Eclipse Platform Bot Date: Wed, 30 Oct 2024 13:28:38 +0000 Subject: [PATCH 098/232] Version bump(s) for 4.34 stream --- tests/org.eclipse.text.tests/META-INF/MANIFEST.MF | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/org.eclipse.text.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.text.tests/META-INF/MANIFEST.MF index bfd99b7350f..9ffe2164ddb 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.700.qualifier Bundle-Vendor: %Plugin.providerName Bundle-Localization: plugin Export-Package: From 5ae97bebda4d468c43747e594f98c86a3bb09d6f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=8A?= =?UTF-8?q?=D1=80=20=D0=9A=D1=83=D1=80=D1=82=D0=B0=D0=BA=D0=BE=D0=B2?= Date: Wed, 30 Oct 2024 19:37:22 +0200 Subject: [PATCH 099/232] Cleanups in unstable tests in I-builds Use DisplayHelper to delay checks so listener changes can propagate. Remove unused variables. --- tests/org.eclipse.e4.ui.tests/.classpath | 12 ++++++++++-- tests/org.eclipse.e4.ui.tests/META-INF/MANIFEST.MF | 3 ++- .../eclipse/e4/ui/tests/workbench/MWindowTest.java | 10 ++++------ .../tests/filesearch/AnnotationManagerTest.java | 6 +----- 4 files changed, 17 insertions(+), 14 deletions(-) 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/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.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..2c3ea40eece 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 @@ -159,7 +159,6 @@ public void testReplaceQuery() throws Exception { IFile file = (IFile) f; ITextEditor editor= (ITextEditor)SearchTestPlugin.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 +168,6 @@ public void testReplaceQuery() throws Exception { assertTrue(text.equalsIgnoreCase(fQuery2.getSearchString())); } } - assertEquals(0, annotationCount); } } finally { SearchPlugin.getActivePage().closeAllEditors(false); @@ -188,7 +186,6 @@ public void testSwitchQuery() throws Exception { IFile file = (IFile) f; ITextEditor editor= (ITextEditor)SearchTestPlugin.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 +195,6 @@ public void testSwitchQuery() throws Exception { assertTrue(text.equalsIgnoreCase(fQuery1.getSearchString())); } } - assertEquals(0, annotationCount); } } finally { SearchPlugin.getActivePage().closeAllEditors(false); From 138233b7ffe48a988a092054f5c377a44ab73301 Mon Sep 17 00:00:00 2001 From: Eclipse Platform Bot Date: Wed, 30 Oct 2024 20:36:30 +0000 Subject: [PATCH 100/232] Version bump(s) for 4.34 stream --- tests/org.eclipse.search.tests/META-INF/MANIFEST.MF | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/org.eclipse.search.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.search.tests/META-INF/MANIFEST.MF index fc529157b0d..70fe03f11cf 100644 --- a/tests/org.eclipse.search.tests/META-INF/MANIFEST.MF +++ b/tests/org.eclipse.search.tests/META-INF/MANIFEST.MF @@ -2,7 +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-Version: 3.11.600.qualifier Bundle-Activator: org.eclipse.search.tests.SearchTestPlugin Bundle-Vendor: %providerName Bundle-Localization: plugin From 83c128c94567f776bacb87f9ea50a766307a1cb3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Kubitz?= Date: Mon, 28 Oct 2024 14:50:29 +0100 Subject: [PATCH 101/232] [test] SmartImportTests fix NPE after SWTError: No more handles --- .../org/eclipse/ui/tests/datatransfer/SmartImportTests.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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(); } } From c5928bbad22265e3660af18692b9dd9a02413d4e Mon Sep 17 00:00:00 2001 From: Shahzaib Ibrahim Date: Thu, 31 Oct 2024 16:40:45 +0100 Subject: [PATCH 102/232] Adding experimental preference to enable rescaling at runtime (Windows) In the UI Preferences -> General -> Appearance, there is a new HiDPI setting that could be checked to enable the monitor-specific scaling of the UI. This check will also enable Edge browser by default. This is an experimental feature to test the multi-monitor HiDPI support before it is actually released and set by default. For now, this preference is disabled by default. --- .../ui/IWorkbenchPreferenceConstants.java | 10 ++++ .../org/eclipse/ui/internal/Workbench.java | 11 +++- .../ui/internal/WorkbenchMessages.java | 10 ++++ .../internal/dialogs/ViewsPreferencePage.java | 53 ++++++++++++++++--- .../eclipse/ui/internal/messages.properties | 5 ++ 5 files changed, 82 insertions(+), 7 deletions(-) diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPreferenceConstants.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPreferenceConstants.java index 2df7267e907..9d182e6443e 100644 --- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPreferenceConstants.java +++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPreferenceConstants.java @@ -705,4 +705,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.133 + */ + String RESCALING_AT_RUNTIME = "RESCALING_AT_RUNTIME"; //$NON-NLS-1$ } diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/Workbench.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/Workbench.java index 667f5c3ce79..5cb4c5cac77 100644 --- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/Workbench.java +++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/Workbench.java @@ -584,7 +584,7 @@ public static int createAndRunWorkbench(final Display display, final WorkbenchAd int orientation = store.getInt(IPreferenceConstants.LAYOUT_DIRECTION); Window.setDefaultOrientation(orientation); } - + setRescaleAtRuntimePropertyFromPreference(display); if (obj instanceof E4Application) { E4Application e4app = (E4Application) obj; E4Workbench e4Workbench = e4app.createE4Workbench(getApplicationContext(), display); @@ -678,6 +678,15 @@ public void update() { return returnCode[0]; } + private static void setRescaleAtRuntimePropertyFromPreference(final Display display) { + boolean rescaleAtRuntime = PrefUtil.getAPIPreferenceStore() + .getBoolean(IWorkbenchPreferenceConstants.RESCALING_AT_RUNTIME); + if (rescaleAtRuntime) { + display.setRescalingAtRuntime(rescaleAtRuntime); + System.setProperty("org.eclipse.swt.browser.DefaultType", "edge"); //$NON-NLS-1$ //$NON-NLS-2$ + } + } + 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$ diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchMessages.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchMessages.java index f6acb4d73df..bebd0cb973d 100644 --- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchMessages.java +++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/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; diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ViewsPreferencePage.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/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/Eclipse UI/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/messages.properties b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/messages.properties index 5b4f163b81c..fb2ad133e2e 100644 --- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/messages.properties +++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/messages.properties @@ -497,6 +497,11 @@ PreferencePageParameterValues_pageLabelSeparator = \ >\ ThemingEnabled = E&nable theming ThemeChangeWarningText = Restart for the theme changes to take full effect 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 From 40edabfb35999e8e66dfc8a54ed5dda6b104492e Mon Sep 17 00:00:00 2001 From: "Praveen S.K" Date: Tue, 27 Aug 2024 10:16:06 +0530 Subject: [PATCH 103/232] Added dynamic tab alignment support in MultiPageEditorPart - Added a new preference for multi-page editor tab alignment. - Added a preference change listener to MultiPageEditorPart. - Updated tab style based on the user's preference. --- .../ide/dialogs/IDEEditorsPreferencePage.java | 1 + .../ui/IWorkbenchPreferenceConstants.java | 15 +++++ .../ui/internal/WorkbenchMessages.java | 1 + .../dialogs/EditorsPreferencePage.java | 15 +++++ .../eclipse/ui/internal/messages.properties | 3 +- .../eclipse/ui/part/MultiPageEditorPart.java | 64 ++++++++++++++++++- 6 files changed, 96 insertions(+), 3 deletions(-) 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..cfa0ff1cb5f 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); + createAlignMultiPageEditorTabsOnTop(composite); applyDialogFont(composite); diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPreferenceConstants.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPreferenceConstants.java index 9d182e6443e..3118dfa6f04 100644 --- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPreferenceConstants.java +++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPreferenceConstants.java @@ -624,6 +624,21 @@ public interface IWorkbenchPreferenceConstants { */ String DISABLE_OPEN_EDITOR_IN_PLACE = "DISABLE_OPEN_EDITOR_IN_PLACE"; //$NON-NLS-1$ + /** + * Workbench preference id for whether the tabs in the multi-page editor is + * displayed on top. Note that tabs will be shown in the top only if this + * preference is true. + * + * Boolean-valued: true show the tabs on the top, and + * false if shown at the bottom. + *

+ * The default value for this preference is: false + *

+ * + * @since 3.133 + */ + String ALIGN_MULTI_PAGE_EDITOR_TABS_ON_TOP = "ALIGN_MULTI_PAGE_EDITOR_TABS_ON_TOP"; //$NON-NLS-1$ + /** * Workbench preference id for indicating the size of the list of most recently * used working sets. diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchMessages.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchMessages.java index bebd0cb973d..449a51f0778 100644 --- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchMessages.java +++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchMessages.java @@ -462,6 +462,7 @@ public class WorkbenchMessages extends NLS { public static String WorkbenchPreference_stickyCycleButton; public static String WorkbenchPreference_RunInBackgroundButton; public static String WorkbenchPreference_RunInBackgroundToolTip; + public static String WorkbenchPreference_AlignMultiPageEditorTabsOnTopButton; // --- Appearance --- public static String ViewsPreferencePage_Theme; diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/EditorsPreferencePage.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/EditorsPreferencePage.java index 9705291e8cb..26a5f2fbc46 100644 --- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/EditorsPreferencePage.java +++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/EditorsPreferencePage.java @@ -74,6 +74,8 @@ public class EditorsPreferencePage extends PreferencePage implements IWorkbenchP private Button allowInplaceEditor; + private Button alignMultiPageEditorTabsOnTop; + @Override protected Control createContents(Composite parent) { Composite composite = createComposite(parent); @@ -132,6 +134,15 @@ protected void createPromptWhenStillOpenPref(Composite composite) { setButtonLayoutData(promptWhenStillOpenEditor); } + protected void createAlignMultiPageEditorTabsOnTop(Composite composite) { + alignMultiPageEditorTabsOnTop = new Button(composite, SWT.CHECK); + alignMultiPageEditorTabsOnTop + .setText(WorkbenchMessages.WorkbenchPreference_AlignMultiPageEditorTabsOnTopButton); + alignMultiPageEditorTabsOnTop.setSelection( + getAPIPreferenceStore().getBoolean(IWorkbenchPreferenceConstants.ALIGN_MULTI_PAGE_EDITOR_TABS_ON_TOP)); + setButtonLayoutData(alignMultiPageEditorTabsOnTop); + } + protected Composite createComposite(Composite parent) { Composite composite = new Composite(parent, SWT.NULL); GridLayout layout = new GridLayout(); @@ -152,6 +163,8 @@ protected void performDefaults() { IPreferenceStore store = getPreferenceStore(); allowInplaceEditor.setSelection( !getAPIPreferenceStore().getDefaultBoolean(IWorkbenchPreferenceConstants.DISABLE_OPEN_EDITOR_IN_PLACE)); + alignMultiPageEditorTabsOnTop.setSelection(getAPIPreferenceStore() + .getDefaultBoolean(IWorkbenchPreferenceConstants.ALIGN_MULTI_PAGE_EDITOR_TABS_ON_TOP)); useIPersistableEditor.setSelection(store.getDefaultBoolean(IPreferenceConstants.USE_IPERSISTABLE_EDITORS)); promptWhenStillOpenEditor.setSelection(getAPIPreferenceStore() .getDefaultBoolean(IWorkbenchPreferenceConstants.PROMPT_WHEN_SAVEABLE_STILL_OPEN)); @@ -165,6 +178,8 @@ protected void performDefaults() { @Override public boolean performOk() { IPreferenceStore store = getPreferenceStore(); + getAPIPreferenceStore().setValue(IWorkbenchPreferenceConstants.ALIGN_MULTI_PAGE_EDITOR_TABS_ON_TOP, + alignMultiPageEditorTabsOnTop.getSelection()); getAPIPreferenceStore().setValue(IWorkbenchPreferenceConstants.DISABLE_OPEN_EDITOR_IN_PLACE, !allowInplaceEditor.getSelection()); store.setValue(IPreferenceConstants.USE_IPERSISTABLE_EDITORS, useIPersistableEditor.getSelection()); diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/messages.properties b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/messages.properties index fb2ad133e2e..d31356d2a43 100644 --- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/messages.properties +++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/messages.properties @@ -419,6 +419,7 @@ 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_AlignMultiPageEditorTabsOnTopButton= &Align multi-page editor tabs on top # --- Appearance --- @@ -493,7 +494,7 @@ OpenPerspectiveDialogAction_tooltip=Open Perspective #---- General Preferences---- PreferencePage_noDescription = (No description available) -PreferencePageParameterValues_pageLabelSeparator = \ >\ +PreferencePageParameterValues_pageLabelSeparator = \ >\ ThemingEnabled = E&nable theming ThemeChangeWarningText = Restart for the theme changes to take full effect ThemeChangeWarningTitle = Theme Changed diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/MultiPageEditorPart.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/MultiPageEditorPart.java index 68508e010ae..fe41eee7cf8 100644 --- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/MultiPageEditorPart.java +++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/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 -> { + handlePropertyChange(event); + }); + } + + /** + * Handles property change events related to editor preferences. + * + *

+ * This method is invoked when a property change occurs in the preference store. + *

+ * + * @param event the {@link PropertyChangeEvent} triggered by a change in the + * preference store + */ + private void handlePropertyChange(PropertyChangeEvent event) { + if (event.getProperty().equals(IWorkbenchPreferenceConstants.ALIGN_MULTI_PAGE_EDITOR_TABS_ON_TOP)) { + updateContainer(); + } } /** @@ -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, getPreferredTabStyle()); newContainer.addSelectionListener(widgetSelectedAdapter(e -> { int newPageIndex = newContainer.indexOf((CTabItem) e.item); pageChange(newPageIndex); @@ -291,6 +317,31 @@ protected CTabFolder createContainer(Composite parent) { return newContainer; } + /** + * Determines the preferred 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. + */ + private int getPreferredTabStyle() { + boolean alignTabsOnTop = getAPIPreferenceStore() + .getBoolean(IWorkbenchPreferenceConstants.ALIGN_MULTI_PAGE_EDITOR_TABS_ON_TOP); + int style = alignTabsOnTop ? SWT.TOP : SWT.BOTTOM; + return style; + } + + /** + * @since 3.133 + */ + 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 +1281,13 @@ public void run() { }); } } + + private void updateContainer() { + Composite container = getContainer(); + if (container instanceof CTabFolder tabFolder) { + tabFolder.setTabPosition(getPreferredTabStyle()); + tabFolder.requestLayout(); + } + } + } From 5dc1350eb9796007f404c5af603053d176acb23d Mon Sep 17 00:00:00 2001 From: "Praveen S.K" Date: Thu, 29 Aug 2024 09:01:27 +0530 Subject: [PATCH 104/232] Incorporated the review comments - Changed the check box to drop down with Top and Bottom options - Made the private methods protected - Converted the preference store value from boolean to int and storing the SWT value of the selection directly --- .../ide/dialogs/IDEEditorsPreferencePage.java | 2 +- .../ui/IWorkbenchPreferenceConstants.java | 13 ++++---- .../ui/internal/WorkbenchMessages.java | 4 ++- .../WorkbenchPreferenceInitializer.java | 1 + .../dialogs/EditorsPreferencePage.java | 32 ++++++++++++------- .../eclipse/ui/internal/messages.properties | 4 ++- .../eclipse/ui/part/MultiPageEditorPart.java | 32 +++++++++---------- 7 files changed, 49 insertions(+), 39 deletions(-) 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 cfa0ff1cb5f..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,7 +62,7 @@ protected Control createContents(Composite parent) { createUseIPersistablePref(composite); createPromptWhenStillOpenPref(composite); createEditorReuseGroup(composite); - createAlignMultiPageEditorTabsOnTop(composite); + createAlignMultiPageEditorTabs(composite); applyDialogFont(composite); diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPreferenceConstants.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPreferenceConstants.java index 3118dfa6f04..708570610a7 100644 --- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPreferenceConstants.java +++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPreferenceConstants.java @@ -625,19 +625,18 @@ public interface IWorkbenchPreferenceConstants { String DISABLE_OPEN_EDITOR_IN_PLACE = "DISABLE_OPEN_EDITOR_IN_PLACE"; //$NON-NLS-1$ /** - * Workbench preference id for whether the tabs in the multi-page editor is - * displayed on top. Note that tabs will be shown in the top only if this - * preference is true. + * Workbench preference id for the position of the tabs in the multi-page + * editor. * - * Boolean-valued: true show the tabs on the top, and - * false if shown at the bottom. + * 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: false + * The default value for this preference is: {@link SWT#BOTTOM} *

* * @since 3.133 */ - String ALIGN_MULTI_PAGE_EDITOR_TABS_ON_TOP = "ALIGN_MULTI_PAGE_EDITOR_TABS_ON_TOP"; //$NON-NLS-1$ + 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 diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchMessages.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchMessages.java index 449a51f0778..ec1e7cc8554 100644 --- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchMessages.java +++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchMessages.java @@ -462,7 +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_AlignMultiPageEditorTabsOnTopButton; + public static String WorkbenchPreference_AlignMultiPageEditorTabs; + public static String WorkbenchPreference_AlignMultiPageEditorTabs_Top; + public static String WorkbenchPreference_AlignMultiPageEditorTabs_Bottom; // --- Appearance --- public static String ViewsPreferencePage_Theme; diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchPreferenceInitializer.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/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/Eclipse UI/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/dialogs/EditorsPreferencePage.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/EditorsPreferencePage.java index 26a5f2fbc46..11807871b86 100644 --- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/EditorsPreferencePage.java +++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/EditorsPreferencePage.java @@ -18,8 +18,10 @@ 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; @@ -74,7 +76,7 @@ public class EditorsPreferencePage extends PreferencePage implements IWorkbenchP private Button allowInplaceEditor; - private Button alignMultiPageEditorTabsOnTop; + private ComboFieldEditor multiPageEditorTabPositionComboField; @Override protected Control createContents(Composite parent) { @@ -134,13 +136,21 @@ protected void createPromptWhenStillOpenPref(Composite composite) { setButtonLayoutData(promptWhenStillOpenEditor); } - protected void createAlignMultiPageEditorTabsOnTop(Composite composite) { - alignMultiPageEditorTabsOnTop = new Button(composite, SWT.CHECK); - alignMultiPageEditorTabsOnTop - .setText(WorkbenchMessages.WorkbenchPreference_AlignMultiPageEditorTabsOnTopButton); - alignMultiPageEditorTabsOnTop.setSelection( - getAPIPreferenceStore().getBoolean(IWorkbenchPreferenceConstants.ALIGN_MULTI_PAGE_EDITOR_TABS_ON_TOP)); - setButtonLayoutData(alignMultiPageEditorTabsOnTop); + 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) { @@ -163,8 +173,6 @@ protected void performDefaults() { IPreferenceStore store = getPreferenceStore(); allowInplaceEditor.setSelection( !getAPIPreferenceStore().getDefaultBoolean(IWorkbenchPreferenceConstants.DISABLE_OPEN_EDITOR_IN_PLACE)); - alignMultiPageEditorTabsOnTop.setSelection(getAPIPreferenceStore() - .getDefaultBoolean(IWorkbenchPreferenceConstants.ALIGN_MULTI_PAGE_EDITOR_TABS_ON_TOP)); useIPersistableEditor.setSelection(store.getDefaultBoolean(IPreferenceConstants.USE_IPERSISTABLE_EDITORS)); promptWhenStillOpenEditor.setSelection(getAPIPreferenceStore() .getDefaultBoolean(IWorkbenchPreferenceConstants.PROMPT_WHEN_SAVEABLE_STILL_OPEN)); @@ -173,13 +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(); - getAPIPreferenceStore().setValue(IWorkbenchPreferenceConstants.ALIGN_MULTI_PAGE_EDITOR_TABS_ON_TOP, - alignMultiPageEditorTabsOnTop.getSelection()); + multiPageEditorTabPositionComboField.store(); getAPIPreferenceStore().setValue(IWorkbenchPreferenceConstants.DISABLE_OPEN_EDITOR_IN_PLACE, !allowInplaceEditor.getSelection()); store.setValue(IPreferenceConstants.USE_IPERSISTABLE_EDITORS, useIPersistableEditor.getSelection()); diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/messages.properties b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/messages.properties index d31356d2a43..8e1eeb6fe7e 100644 --- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/messages.properties +++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/messages.properties @@ -419,7 +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_AlignMultiPageEditorTabsOnTopButton= &Align multi-page editor tabs on top +WorkbenchPreference_AlignMultiPageEditorTabs= &Align multi-page editor tabs: +WorkbenchPreference_AlignMultiPageEditorTabs_Top= &Top +WorkbenchPreference_AlignMultiPageEditorTabs_Bottom= &Bottom # --- Appearance --- diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/MultiPageEditorPart.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/MultiPageEditorPart.java index fe41eee7cf8..0b1783bcf56 100644 --- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/MultiPageEditorPart.java +++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/MultiPageEditorPart.java @@ -161,24 +161,24 @@ public abstract class MultiPageEditorPart extends EditorPart implements IPageCha protected MultiPageEditorPart() { super(); getAPIPreferenceStore().addPropertyChangeListener(event -> { - handlePropertyChange(event); + if (isUpdateRequired(event)) { + updateContainer(); + } }); } /** - * Handles property change events related to editor preferences. - * - *

- * This method is invoked when a property change occurs in the preference store. - *

+ * 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.133 */ - private void handlePropertyChange(PropertyChangeEvent event) { - if (event.getProperty().equals(IWorkbenchPreferenceConstants.ALIGN_MULTI_PAGE_EDITOR_TABS_ON_TOP)) { - updateContainer(); + protected boolean isUpdateRequired(PropertyChangeEvent event) { + if (event.getProperty().equals(IWorkbenchPreferenceConstants.ALIGN_MULTI_PAGE_EDITOR_TABS)) { + return true; } + return false; } /** @@ -290,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, getPreferredTabStyle()); + final CTabFolder newContainer = new CTabFolder(parent, getTabStyle() | SWT.FLAT); newContainer.addSelectionListener(widgetSelectedAdapter(e -> { int newPageIndex = newContainer.indexOf((CTabItem) e.item); pageChange(newPageIndex); @@ -318,7 +318,7 @@ protected CTabFolder createContainer(Composite parent) { } /** - * Determines the preferred tab style based on user preferences. + * 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. @@ -327,12 +327,10 @@ protected CTabFolder createContainer(Composite parent) { * @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.133 */ - private int getPreferredTabStyle() { - boolean alignTabsOnTop = getAPIPreferenceStore() - .getBoolean(IWorkbenchPreferenceConstants.ALIGN_MULTI_PAGE_EDITOR_TABS_ON_TOP); - int style = alignTabsOnTop ? SWT.TOP : SWT.BOTTOM; - return style; + protected int getTabStyle() { + return getAPIPreferenceStore().getInt(IWorkbenchPreferenceConstants.ALIGN_MULTI_PAGE_EDITOR_TABS); } /** @@ -1285,7 +1283,7 @@ public void run() { private void updateContainer() { Composite container = getContainer(); if (container instanceof CTabFolder tabFolder) { - tabFolder.setTabPosition(getPreferredTabStyle()); + tabFolder.setTabPosition(getTabStyle()); tabFolder.requestLayout(); } } From 9308f4a943a615101091920786769a87a99962bd Mon Sep 17 00:00:00 2001 From: "Praveen S.K" Date: Thu, 29 Aug 2024 09:08:16 +0530 Subject: [PATCH 105/232] Changed the updateContainer method to protected --- .../org/eclipse/ui/part/MultiPageEditorPart.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/MultiPageEditorPart.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/MultiPageEditorPart.java index 0b1783bcf56..c08023634cd 100644 --- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/MultiPageEditorPart.java +++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/MultiPageEditorPart.java @@ -1280,7 +1280,17 @@ public void run() { } } - private void updateContainer() { + /** + * 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.133 + */ + protected void updateContainer() { Composite container = getContainer(); if (container instanceof CTabFolder tabFolder) { tabFolder.setTabPosition(getTabStyle()); From 1170414b9878f72b78728810220336ce01776227 Mon Sep 17 00:00:00 2001 From: Andreas Koch Date: Thu, 31 Oct 2024 15:41:38 +0100 Subject: [PATCH 106/232] Refresh LineNumberRulerColumn on ZoomChange of canvas This commit adds a listener for the ZoomChanged event to the canvas of a LineNumberRulerColumn. If the listener is notified of this event this means, that state, that differs over different zoom values, must be recalculated. Therefore the indentation are reset, when the event occurs. Contributes to eclipse-platform/eclipse.platform.swt#62 and eclipse-platform/eclipse.platform.swt#131 --- .../org/eclipse/jface/text/source/LineNumberRulerColumn.java | 2 ++ 1 file changed, 2 insertions(+) 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..7eff2aee8f0 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); From 117649fd8ee7636b8aff57552bdfd65c7f358d27 Mon Sep 17 00:00:00 2001 From: Heiko Klare Date: Wed, 30 Oct 2024 18:06:55 +0100 Subject: [PATCH 107/232] Place Edge browser userdata directory in metadata space of workspace The userdata directory for the Edge browser is currently placed as an immediate child of the workspace directory (if existing), thus mixing up with actual projects in the workspace. With this change, the directory is placed in the metadata folder of the SWT bundle within the workspace. --- .../Eclipse UI/org/eclipse/ui/internal/Workbench.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/Workbench.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/Workbench.java index 5cb4c5cac77..af01dacada6 100644 --- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/Workbench.java +++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/Workbench.java @@ -147,6 +147,7 @@ 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; @@ -525,9 +526,10 @@ private static void setEdgeDataDirectory(Display display) { return; } try { - URI workspaceLocationURI = workspaceLocation.getURL().toURI(); - display.setData(EDGE_USER_DATA_FOLDER, Paths.get(workspaceLocationURI).toString()); - } catch (URISyntaxException e) { + 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$ } } From 462666ba1cc7ee98335ec5825929a168210da71b Mon Sep 17 00:00:00 2001 From: Heiko Klare Date: Fri, 1 Nov 2024 20:02:35 +0100 Subject: [PATCH 108/232] Fix missing NLS for "Enable theming" #2480 The NLS for "Enable theming" is not found because of a recent change to the according messages.properties file. This change reverts the faulty change. Fixes https://github.com/eclipse-platform/eclipse.platform.ui/issues/2480 --- .../Eclipse UI/org/eclipse/ui/internal/messages.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/messages.properties b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/messages.properties index 8e1eeb6fe7e..08c857e04ff 100644 --- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/messages.properties +++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/messages.properties @@ -496,7 +496,7 @@ OpenPerspectiveDialogAction_tooltip=Open Perspective #---- General Preferences---- PreferencePage_noDescription = (No description available) -PreferencePageParameterValues_pageLabelSeparator = \ >\ +PreferencePageParameterValues_pageLabelSeparator = \ >\ ThemingEnabled = E&nable theming ThemeChangeWarningText = Restart for the theme changes to take full effect ThemeChangeWarningTitle = Theme Changed From eacd0b4e8b0226f6d4eab3bdd2c05758d4859688 Mon Sep 17 00:00:00 2001 From: Heiko Klare Date: Fri, 1 Nov 2024 19:27:48 +0100 Subject: [PATCH 109/232] FindReplaceOverlay: avoid inconsistent borders #2194 When the replace toggle in the FindReplaceOverlay is not shown because the target file is read-only or because the editor is too small to show the toggle button, the right border of the overlay is larger than the others. The reason is an inconsistent layout, as the container always expects two columns of elements but when the replace toggle is hidden only one column is present. With this change, the number of columns of the container is adapted according to whether the replace toggle is present or not. Fixed https://github.com/eclipse-platform/eclipse.platform.ui/issues/2194 --- .../findandreplace/overlay/FindReplaceOverlay.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) 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 4472e94a6ec..9b02ac7a3c6 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 @@ -33,6 +33,7 @@ import org.eclipse.swt.graphics.Point; import org.eclipse.swt.graphics.Rectangle; import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Display; @@ -695,9 +696,10 @@ private void enableReplaceToggle(boolean enable) { if (!okayToUse(replaceToggle)) { return; } - boolean visible = enable && findReplaceLogic.getTarget().isEditable(); - ((GridData) replaceToggleTools.getLayoutData()).exclude = !visible; - replaceToggleTools.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) { From c1c681ada78722481d2b01a0790bf87f966975e4 Mon Sep 17 00:00:00 2001 From: Heiko Klare Date: Fri, 1 Nov 2024 19:39:51 +0100 Subject: [PATCH 110/232] FindReplaceOverlay: update position and size while not visible #2478 When changing position and/or size of the editor of a FindReplaceOverlay while it is hidden, e.g., because another editor in the same editor stack is active, the position and size of the overlay is not updated accordingly. Thus, when making the editor of that overlay active again, its position relative to the editor and size is still the same as before another editor was set active, i.e., it is usually wrong. With this change, the size and position of an overlay is always updated upon resize operations of the target editor, even if the editor is not visible. Fixes https://github.com/eclipse-platform/eclipse.platform.ui/issues/2478 --- .../ui/internal/findandreplace/overlay/FindReplaceOverlay.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 9b02ac7a3c6..9586c243543 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 @@ -204,7 +204,7 @@ private void performSelectAll() { .controlResizedAdapter(__ -> asyncExecIfOpen(FindReplaceOverlay.this::updatePlacementAndVisibility)); private void asyncExecIfOpen(Runnable operation) { - if (!containerControl.isDisposed() && containerControl.isVisible()) { + if (!containerControl.isDisposed()) { containerControl.getDisplay().asyncExec(() -> { if (containerControl != null || containerControl.isDisposed()) { operation.run(); From 56115fc753f579d596b46d3ea6f873c25ec7a211 Mon Sep 17 00:00:00 2001 From: Heiko Klare Date: Fri, 1 Nov 2024 18:01:11 +0100 Subject: [PATCH 111/232] Correct bundle version after changes in MultiPageEditorPart Recent API changes to MultiPageEditorPart and IWorkbenchPreferenceConstants have been introduced after 3.133 has already been released. Thus, the micro version bump made since then is insufficient. This change corrects the version but and the according since tags to 3.134. --- .../org/eclipse/ui/IWorkbenchPreferenceConstants.java | 4 ++-- .../org/eclipse/ui/part/MultiPageEditorPart.java | 8 ++++---- bundles/org.eclipse.ui.workbench/META-INF/MANIFEST.MF | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPreferenceConstants.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPreferenceConstants.java index 708570610a7..7e7d6ad2f02 100644 --- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPreferenceConstants.java +++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPreferenceConstants.java @@ -634,7 +634,7 @@ public interface IWorkbenchPreferenceConstants { * The default value for this preference is: {@link SWT#BOTTOM} *

* - * @since 3.133 + * @since 3.134 */ String ALIGN_MULTI_PAGE_EDITOR_TABS = "ALIGN_MULTI_PAGE_EDITOR_TABS"; //$NON-NLS-1$ @@ -726,7 +726,7 @@ public interface IWorkbenchPreferenceConstants { * runtime. It only effects Windows. *

* - * @since 3.133 + * @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/part/MultiPageEditorPart.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/MultiPageEditorPart.java index c08023634cd..c95a1e2cf97 100644 --- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/MultiPageEditorPart.java +++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/MultiPageEditorPart.java @@ -172,7 +172,7 @@ protected MultiPageEditorPart() { * * @param event the {@link PropertyChangeEvent} triggered by a change in the * preference store - * @since 3.133 + * @since 3.134 */ protected boolean isUpdateRequired(PropertyChangeEvent event) { if (event.getProperty().equals(IWorkbenchPreferenceConstants.ALIGN_MULTI_PAGE_EDITOR_TABS)) { @@ -327,14 +327,14 @@ protected CTabFolder createContainer(Composite parent) { * @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.133 + * @since 3.134 */ protected int getTabStyle() { return getAPIPreferenceStore().getInt(IWorkbenchPreferenceConstants.ALIGN_MULTI_PAGE_EDITOR_TABS); } /** - * @since 3.133 + * @since 3.134 */ protected IPreferenceStore getAPIPreferenceStore() { return PrefUtil.getAPIPreferenceStore(); @@ -1288,7 +1288,7 @@ public void run() { * on the user preference. *

* - * @since 3.133 + * @since 3.134 */ protected void updateContainer() { Composite container = getContainer(); diff --git a/bundles/org.eclipse.ui.workbench/META-INF/MANIFEST.MF b/bundles/org.eclipse.ui.workbench/META-INF/MANIFEST.MF index 261f4fe712f..36729f7f926 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.134.0.qualifier Bundle-Activator: org.eclipse.ui.internal.WorkbenchPlugin Bundle-ActivationPolicy: lazy Bundle-Vendor: %providerName From 9474c952a23a2c898ba25fd8a09d498434bca0af Mon Sep 17 00:00:00 2001 From: Christopher Hermann Date: Mon, 14 Oct 2024 13:00:16 +0200 Subject: [PATCH 112/232] [StickyScrolling] Move text and style calculation to StickyLine Move the text and style calculation to the StickyLine itself in order to enable the sticky line provider to overwrite the default behavior. This is needed to apply custom texts or custom styles for the sticky lines. Preparation for #2398 --- .../DefaultStickyLinesProvider.java | 6 +- .../texteditor/stickyscroll/IStickyLine.java | 44 ++++++++++ .../stickyscroll/IStickyLinesProvider.java | 2 +- .../texteditor/stickyscroll/StickyLine.java | 48 +++++++++-- .../stickyscroll/StickyScrollingControl.java | 56 +++++------- .../stickyscroll/StickyScrollingHandler.java | 8 +- .../DefaultStickyLinesProviderTest.java | 43 ++++++---- .../stickyscroll/StickyLineTest.java | 86 +++++++++++++++++++ .../StickyScrollingControlTest.java | 74 ++++++++++++---- .../StickyScrollingHandlerTest.java | 51 ++++++++--- 10 files changed, 325 insertions(+), 93 deletions(-) create mode 100644 bundles/org.eclipse.ui.editors/src/org/eclipse/ui/internal/texteditor/stickyscroll/IStickyLine.java create mode 100644 tests/org.eclipse.ui.editors.tests/src/org/eclipse/ui/internal/texteditor/stickyscroll/StickyLineTest.java diff --git a/bundles/org.eclipse.ui.editors/src/org/eclipse/ui/internal/texteditor/stickyscroll/DefaultStickyLinesProvider.java b/bundles/org.eclipse.ui.editors/src/org/eclipse/ui/internal/texteditor/stickyscroll/DefaultStickyLinesProvider.java index c4281899d1e..bf53911a148 100644 --- a/bundles/org.eclipse.ui.editors/src/org/eclipse/ui/internal/texteditor/stickyscroll/DefaultStickyLinesProvider.java +++ b/bundles/org.eclipse.ui.editors/src/org/eclipse/ui/internal/texteditor/stickyscroll/DefaultStickyLinesProvider.java @@ -33,9 +33,9 @@ public class DefaultStickyLinesProvider implements IStickyLinesProvider { private StickyLinesProperties fProperties; @Override - public List getStickyLines(StyledText textWidget, int lineNumber, StickyLinesProperties properties) { + public List getStickyLines(StyledText textWidget, int lineNumber, StickyLinesProperties properties) { this.fProperties= properties; - LinkedList stickyLines= new LinkedList<>(); + LinkedList stickyLines= new LinkedList<>(); try { int startIndetation= getStartIndentation(lineNumber, textWidget); @@ -50,7 +50,7 @@ public List getStickyLines(StyledText textWidget, int lineNumber, St if (indentation < previousIndetation) { previousIndetation= indentation; - stickyLines.addFirst(new StickyLine(line, i)); + stickyLines.addFirst(new StickyLine(i, textWidget)); } } } catch (IllegalArgumentException e) { 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 522f16cbe4f..06dc804ef31 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 @@ -37,7 +37,7 @@ public interface IStickyLinesProvider { * @param properties Properties for additional information * @return The list of sticky lines to show */ - public List getStickyLines(StyledText textWidget, int lineNumber, StickyLinesProperties properties); + public List getStickyLines(StyledText textWidget, int lineNumber, StickyLinesProperties properties); /** * Additional properties and access in order to calculate the sticky lines. 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..e54b0149a79 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,47 @@ *******************************************************************************/ package org.eclipse.ui.internal.texteditor.stickyscroll; +import org.eclipse.swt.custom.StyleRange; +import org.eclipse.swt.custom.StyledText; + /** - * - * 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 { + + private int lineNumber; + + private String text; + + private StyledText textWidget; + + public StickyLine(int lineNumber, StyledText textWidget) { + this.lineNumber= lineNumber; + this.textWidget= textWidget; + } + + @Override + public int getLineNumber() { + return this.lineNumber; + } + + @Override + public String getText() { + if (text == null) { + text= textWidget.getLine(lineNumber); + } + return text; + } + + @Override + public StyleRange[] getStyleRanges() { + int offsetAtLine= textWidget.getOffsetAtLine(lineNumber); + StyleRange[] styleRanges= textWidget.getStyleRanges(offsetAtLine, getText().length()); + for (StyleRange styleRange : styleRanges) { + styleRange.start= styleRange.start - offsetAtLine; + } + return styleRanges; + } + } 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 51179e8c130..f4927a3fe28 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; @@ -65,7 +63,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 +85,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 +133,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 +204,9 @@ 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()); - int lineNumber= getSourceViewerLineNumber(stickyLine.lineNumber()); + IStickyLine stickyLine= stickyLines.get(i); + stickyLineTextJoiner.add(stickyLine.getText()); + int lineNumber= getSourceViewerLineNumber(stickyLine.getLineNumber()); stickyLineNumberJoiner.add(fillLineNumberWithLeadingSpaces(lineNumber + 1)); } @@ -244,14 +242,20 @@ private void styleStickyLines() { return; } - 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(); + int stickyLineOffset= 0; + List styleRanges= new ArrayList<>(); + for (IStickyLine stickyLine : stickyLines) { + StyleRange[] ranges= stickyLine.getStyleRanges(); + if (ranges != null) { + for (StyleRange styleRange : ranges) { + styleRange.start+= stickyLineOffset; + styleRanges.add(styleRange); + } + } + + stickyLineOffset+= stickyLine.getText().length() + System.lineSeparator().length(); } - stickyLineText.setStyleRanges(stickyLinesStyleRanges.toArray(StyleRange[]::new)); + stickyLineText.setStyleRanges(styleRanges.toArray(StyleRange[]::new)); stickyLineNumber.setFont(textWidget.getFont()); stickyLineNumber.setStyleRange(new StyleRange(0, stickyLineNumber.getText().length(), settings.lineNumberColor(), null)); @@ -263,22 +267,6 @@ private void styleStickyLines() { stickyLineText.setLeftMargin(textWidget.getLeftMargin()); } - private List getStickyLineStyleRanges(StickyLine stickyLine, int stickyLineTextOffset) { - int lineNumber= stickyLine.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); @@ -365,12 +353,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 } 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 df2ea6bee66..596fdec59ea 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 @@ -153,7 +153,7 @@ public void viewportChanged(int newVerticalOffset) { } private void calculateAndShowStickyLines() { - List stickyLines= Collections.emptyList(); + List stickyLines= Collections.emptyList(); StyledText textWidget= sourceViewer.getTextWidget(); int startLine= textWidget.getTopIndex(); @@ -171,19 +171,19 @@ private void calculateAndShowStickyLines() { stickyScrollingControl.setStickyLines(stickyLines); } - private List adaptStickyLinesToVisibleArea(List stickyLines, int startLine) { + private List adaptStickyLinesToVisibleArea(List stickyLines, int startLine) { if (stickyLines.isEmpty()) { return stickyLines; } - LinkedList adaptedStickyLines= new LinkedList<>(stickyLines); + LinkedList adaptedStickyLines= new LinkedList<>(stickyLines); int firstVisibleLine= startLine + adaptedStickyLines.size(); StyledText textWidget= sourceViewer.getTextWidget(); int maximumLines= textWidget.getLineCount(); for (int i= startLine + 1; i <= firstVisibleLine && i < maximumLines; i++) { - List stickyLinesInLineI= stickyLinesProvider.getStickyLines(textWidget, i, stickyLinesProperties); + List stickyLinesInLineI= stickyLinesProvider.getStickyLines(textWidget, i, stickyLinesProperties); if (stickyLinesInLineI.size() > adaptedStickyLines.size()) { adaptedStickyLines= new LinkedList<>(stickyLinesInLineI); 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 afd782d5f91..44b980e27cc 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; @@ -51,7 +51,7 @@ public void setup() { @Test public void testEmptySourceCode() { - List stickyLines = stickyLinesProvider.getStickyLines(textWidget, 0, stickyLinesProperties); + List stickyLines = stickyLinesProvider.getStickyLines(textWidget, 0, stickyLinesProperties); assertThat(stickyLines, is(empty())); } @@ -63,9 +63,10 @@ public void testSingleStickyLine() { line 2<"""; setText(text); - List stickyLines = stickyLinesProvider.getStickyLines(textWidget, 1, stickyLinesProperties); + List stickyLines = stickyLinesProvider.getStickyLines(textWidget, 1, stickyLinesProperties); - assertThat(stickyLines, contains(new StickyLine("line 1", 0))); + assertEquals(1, stickyLines.size()); + assertEquals(0, stickyLines.get(0).getLineNumber()); } @Test @@ -77,9 +78,10 @@ public void testLineUnderStickyLine() { line 4"""; setText(text); - List stickyLines = stickyLinesProvider.getStickyLines(textWidget, 1, stickyLinesProperties); + List stickyLines = stickyLinesProvider.getStickyLines(textWidget, 1, stickyLinesProperties); - assertThat(stickyLines, contains(new StickyLine("line 1", 0))); + assertEquals(1, stickyLines.size()); + assertEquals(0, stickyLines.get(0).getLineNumber()); } @Test @@ -91,9 +93,10 @@ public void testNewStickyRoot() { line 4<"""; setText(text); - List stickyLines = stickyLinesProvider.getStickyLines(textWidget, 3, stickyLinesProperties); + List stickyLines = stickyLinesProvider.getStickyLines(textWidget, 3, stickyLinesProperties); - assertThat(stickyLines, contains(new StickyLine("line 3", 2))); + assertEquals(1, stickyLines.size()); + assertEquals(2, stickyLines.get(0).getLineNumber()); } @Test @@ -106,9 +109,11 @@ public void testIgnoreEmptyLines() { line 3<"""; setText(text); - List stickyLines = stickyLinesProvider.getStickyLines(textWidget, 4, stickyLinesProperties); + List stickyLines = stickyLinesProvider.getStickyLines(textWidget, 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 @@ -120,9 +125,11 @@ public void testLinesWithTabs() { \t\tline 3<"""; setText(text); - List stickyLines = stickyLinesProvider.getStickyLines(textWidget, 2, stickyLinesProperties); + List stickyLines = stickyLinesProvider.getStickyLines(textWidget, 2, stickyLinesProperties); - assertThat(stickyLines, contains(new StickyLine("line 1", 0), new StickyLine("\tline 2", 1))); + assertEquals(2, stickyLines.size()); + assertEquals(0, stickyLines.get(0).getLineNumber()); + assertEquals(1, stickyLines.get(1).getLineNumber()); } @Test @@ -136,9 +143,11 @@ public void testStartAtEmptyLineWithNext() { textWidget.setText(text); textWidget.setTopIndex(3); - List stickyLines = stickyLinesProvider.getStickyLines(textWidget, 3, stickyLinesProperties); + List stickyLines = stickyLinesProvider.getStickyLines(textWidget, 3, 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 @@ -151,9 +160,11 @@ public void testStartAtEmptyLineWithPrevious() { line 4"""; setText(text); - List stickyLines = stickyLinesProvider.getStickyLines(textWidget, 3, stickyLinesProperties); + List stickyLines = stickyLinesProvider.getStickyLines(textWidget, 3, stickyLinesProperties); - assertThat(stickyLines, contains(new StickyLine("line 1", 0), new StickyLine(" line 2", 1))); + assertEquals(2, stickyLines.size()); + assertEquals(0, stickyLines.get(0).getLineNumber()); + assertEquals(1, stickyLines.get(1).getLineNumber()); } /** 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..483796a0dba --- /dev/null +++ b/tests/org.eclipse.ui.editors.tests/src/org/eclipse/ui/internal/texteditor/stickyscroll/StickyLineTest.java @@ -0,0 +1,86 @@ +/******************************************************************************* + * 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.Shell; + +public class StickyLineTest { + + private Shell shell; + private StyledText textWidget; + private Color color; + + @Before + public void setUp() { + shell = new Shell(); + textWidget = new StyledText(shell, SWT.NONE); + color = new Color(0, 0, 0); + } + + @After + public void tearDown() { + shell.dispose(); + color.dispose(); + } + + @Test + public void testGetLineNumber() { + StickyLine stickyLine = new StickyLine(1, textWidget); + + assertEquals(1, stickyLine.getLineNumber()); + } + + @Test + public void testGetText() { + textWidget.setText("line1\nline2\nline3"); + StickyLine stickyLine = new StickyLine(1, textWidget); + + 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, textWidget); + 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); + } + +} 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 2d0999e6b4d..ce8664daf8f 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 @@ -90,7 +90,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(); @@ -114,7 +114,7 @@ public void testShowStickyLineTextsWithSourceViewerMapping() { stickyScrollingControl = new StickyScrollingControl(sourceViewer, ruler, settings, null); - 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(); @@ -127,7 +127,7 @@ public void testShowStickyLineTextsWithSourceViewerMapping() { @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(); @@ -143,7 +143,7 @@ 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); settings = new StickyScrollingControlSettings(1, lineNumberColor, hoverColor, backgroundColor, separatorColor, @@ -160,15 +160,26 @@ public void testLimitStickyLinesCount() { @Test public void testCopyStyleRanges() { - sourceViewer.setInput(new Document("line 1")); - sourceViewer.getTextWidget().setStyleRange(new StyleRange(0, 6, lineNumberColor, backgroundColor)); - - List stickyLines = List.of(new StickyLine("line 1", 0)); + 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(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); } @Test @@ -185,7 +196,7 @@ 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(); @@ -206,7 +217,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(); @@ -223,7 +234,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); @@ -252,7 +263,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); @@ -300,9 +311,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(); @@ -469,4 +480,35 @@ public int widgetLine2ModelLine(int widgetLine) { } + 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 2b84f4a86d9..6798ec1b1e7 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 @@ -37,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; @@ -97,7 +98,7 @@ public void teardown() { @Test public void testShowStickyLines() { when(linesProvider.getStickyLines(textWidget, 1, stickyLinesProperties)) - .thenReturn(List.of(new StickyLine("line 10", 9))); + .thenReturn(List.of(new StickyLineStub("line 10", 9))); stickyScrollingHandler.viewportChanged(100); @@ -134,7 +135,7 @@ public void testUnistallStickyLines() { @Test public void testPreferencesLoaded() { when(linesProvider.getStickyLines(textWidget, 1, stickyLinesProperties)) - .thenReturn(List.of(new StickyLine("line 10", 9))); + .thenReturn(List.of(new StickyLineStub("line 10", 9))); stickyScrollingHandler.viewportChanged(100); @@ -145,9 +146,9 @@ public void testPreferencesLoaded() { @Test public void testPreferencesUpdated() { when(linesProvider.getStickyLines(textWidget, 1, stickyLinesProperties)) - .thenReturn(List.of(new StickyLine("line 10", 9), new StickyLine("line 20", 19))); + .thenReturn(List.of(new StickyLineStub("line 10", 9), new StickyLineStub("line 20", 19))); when(linesProvider.getStickyLines(textWidget, 2, stickyLinesProperties)) - .thenReturn(List.of(new StickyLine("line 10", 9), new StickyLine("line 20", 19))); + .thenReturn(List.of(new StickyLineStub("line 10", 9), new StickyLineStub("line 20", 19))); stickyScrollingHandler.viewportChanged(100); @@ -165,13 +166,13 @@ public void testPreferencesUpdated() { @Test public void testThrottledExecution() throws InterruptedException { when(linesProvider.getStickyLines(textWidget, 1, stickyLinesProperties)) - .thenReturn(List.of(new StickyLine("line 10", 9))); + .thenReturn(List.of(new StickyLineStub("line 10", 9))); when(linesProvider.getStickyLines(textWidget, 1, stickyLinesProperties)) - .thenReturn(List.of(new StickyLine("line 10", 9))); + .thenReturn(List.of(new StickyLineStub("line 10", 9))); when(linesProvider.getStickyLines(textWidget, 1, stickyLinesProperties)) - .thenReturn(List.of(new StickyLine("line 10", 9))); + .thenReturn(List.of(new StickyLineStub("line 10", 9))); when(linesProvider.getStickyLines(textWidget, 1, stickyLinesProperties)) - .thenReturn(List.of(new StickyLine("line 10", 9))); + .thenReturn(List.of(new StickyLineStub("line 10", 9))); stickyScrollingHandler.viewportChanged(100); Thread.sleep(10); @@ -192,9 +193,9 @@ public void testThrottledExecution() throws InterruptedException { @Test public void testRemoveStickyLines() { when(linesProvider.getStickyLines(textWidget, 1, stickyLinesProperties)) - .thenReturn(List.of(new StickyLine("line 1", 0), new StickyLine("line 2", 1))); + .thenReturn(List.of(new StickyLineStub("line 1", 0), new StickyLineStub("line 2", 1))); when(linesProvider.getStickyLines(textWidget, 2, stickyLinesProperties)) - .thenReturn(List.of(new StickyLine("line 3", 2))); + .thenReturn(List.of(new StickyLineStub("line 3", 2))); stickyScrollingHandler.viewportChanged(100); @@ -206,9 +207,9 @@ public void testRemoveStickyLines() { @Test public void testLineUnderStickyLine() { when(linesProvider.getStickyLines(textWidget, 1, stickyLinesProperties)) - .thenReturn(List.of(new StickyLine("line 1", 0))); + .thenReturn(List.of(new StickyLineStub("line 1", 0))); when(linesProvider.getStickyLines(textWidget, 2, stickyLinesProperties)) - .thenReturn(List.of(new StickyLine("line 1", 0), new StickyLine("line 2", 1))); + .thenReturn(List.of(new StickyLineStub("line 1", 0), new StickyLineStub("line 2", 1))); stickyScrollingHandler.viewportChanged(100); @@ -269,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; + } + } + } From 136afb43a529ad3a969db742b46b8ba25a89d226 Mon Sep 17 00:00:00 2001 From: Lars Vogel Date: Tue, 5 Nov 2024 10:55:33 +0100 Subject: [PATCH 113/232] Adding the missing Notification snippets to the wiki Since a while we have three notification snippets but only on the documentation page. --- docs/JFaceSnippets.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/docs/JFaceSnippets.md b/docs/JFaceSnippets.md index f557f878ccc..e2ad06964a6 100644 --- a/docs/JFaceSnippets.md +++ b/docs/JFaceSnippets.md @@ -21,6 +21,8 @@ Contents * [1.2 Snippet082 - Color Selector](#Snippet082---Color-Selector) * [2 Notification](#Notification) * [2.1 Snippet081 - Notification API](#Snippet081---Notification-API) + * [2.2 Snippet002 - Notification Popup with Functions](#Snippet002---Notification-Popup-with-Functions) + * [2.3 Snippet004 - Notification Popup with Custom Delay and Fade](#Snippet004---Notification-Popup-with-Custom-Delay-and-Fade) * [3 Layout](#Layout) * [3.1 Snippet013 - Grid Layout Factory](#Snippet013---Grid-Layout-Factory) * [3.2 Snippet016 - Table Layout](#Snippet016---Table-Layout) @@ -127,6 +129,18 @@ Demonstrates usage of the non-blocking notification API ![Snippet081 Shell1.gif](https://raw.githubusercontent.com/eclipse-platform/eclipse.platform.ui/master/docs/images/Snippet081_Shell1.gif) +### [Snippet002 - 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/Snippet002NotificationPopupWithFunctions.java) + +* [Snippet002 - 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/Snippet002NotificationPopupWithFunctions.java) + +Demonstrates the creation of notification popups that include function callbacks for user interactions. + +### [Snippet004 - 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/Snippet004NotificationPopupWithCustomDelayAndFade.java) + +* [Snippet004 - 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/Snippet004NotificationPopupWithCustomDelayAndFade.java) + +Shows how to create notification popups with custom delay and fade effects for enhanced visual feedback. + Layout ------ From 3fd04b37ae77c98f049de04f89117d116a78e4b1 Mon Sep 17 00:00:00 2001 From: Christopher Hermann Date: Tue, 5 Nov 2024 15:53:29 +0100 Subject: [PATCH 114/232] Fix IllegalArgumentException when styling the sticky lines When the sticky lines are limited by the settings, the not visible sticky lines should not be styled. Fixes #2496 --- .../stickyscroll/StickyScrollingControl.java | 16 ++++++------- .../StickyScrollingControlTest.java | 23 +++++++++++++++++++ 2 files changed, 31 insertions(+), 8 deletions(-) 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 f4927a3fe28..0e02cbd4980 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 @@ -242,20 +242,20 @@ private void styleStickyLines() { return; } - int stickyLineOffset= 0; - List styleRanges= new ArrayList<>(); - for (IStickyLine stickyLine : stickyLines) { + List stickyLinesStyleRanges= new ArrayList<>(); + int stickyLineTextOffset= 0; + for (int i= 0; i < getNumberStickyLines(); i++) { + IStickyLine stickyLine= stickyLines.get(i); StyleRange[] ranges= stickyLine.getStyleRanges(); if (ranges != null) { for (StyleRange styleRange : ranges) { - styleRange.start+= stickyLineOffset; - styleRanges.add(styleRange); + styleRange.start+= stickyLineTextOffset; + stickyLinesStyleRanges.add(styleRange); } } - - stickyLineOffset+= stickyLine.getText().length() + System.lineSeparator().length(); + stickyLineTextOffset+= stickyLine.getText().length() + System.lineSeparator().length(); } - stickyLineText.setStyleRanges(styleRanges.toArray(StyleRange[]::new)); + stickyLineText.setStyleRanges(stickyLinesStyleRanges.toArray(StyleRange[]::new)); stickyLineNumber.setFont(textWidget.getFont()); stickyLineNumber.setStyleRange(new StyleRange(0, stickyLineNumber.getText().length(), settings.lineNumberColor(), null)); 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 ce8664daf8f..d9442aa9ec5 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 @@ -182,6 +182,29 @@ public void testCopyStyleRanges() { assertEquals(separatorColor, styleRanges[1].background); } + @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(); + + 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); From 560db2a3dc6d75956ec328c4f6d810982a7253ed Mon Sep 17 00:00:00 2001 From: Lars Vogel Date: Tue, 5 Nov 2024 11:04:01 +0100 Subject: [PATCH 115/232] Adjust notification snippets to follow version schema to snippets The JFace snippets have increasing numbers, the notificaiton api examples should follow the same schema. --- docs/JFaceSnippets.md | 12 ++++++------ ...=> Snippet083NotificationPopupWithFunctions.java} | 2 +- ...t084NotificationPopupWithCustomDelayAndFade.java} | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) rename examples/org.eclipse.jface.snippets/Eclipse JFace Snippets/org/eclipse/jface/snippets/notifications/{Snippet002NotificationPopupWithFunctions.java => Snippet083NotificationPopupWithFunctions.java} (94%) rename examples/org.eclipse.jface.snippets/Eclipse JFace Snippets/org/eclipse/jface/snippets/notifications/{Snippet004NotificationPopupWithCustomDelayAndFade.java => Snippet084NotificationPopupWithCustomDelayAndFade.java} (89%) diff --git a/docs/JFaceSnippets.md b/docs/JFaceSnippets.md index e2ad06964a6..47e965b386d 100644 --- a/docs/JFaceSnippets.md +++ b/docs/JFaceSnippets.md @@ -21,8 +21,8 @@ Contents * [1.2 Snippet082 - Color Selector](#Snippet082---Color-Selector) * [2 Notification](#Notification) * [2.1 Snippet081 - Notification API](#Snippet081---Notification-API) - * [2.2 Snippet002 - Notification Popup with Functions](#Snippet002---Notification-Popup-with-Functions) - * [2.3 Snippet004 - Notification Popup with Custom Delay and Fade](#Snippet004---Notification-Popup-with-Custom-Delay-and-Fade) + * [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) * [3 Layout](#Layout) * [3.1 Snippet013 - Grid Layout Factory](#Snippet013---Grid-Layout-Factory) * [3.2 Snippet016 - Table Layout](#Snippet016---Table-Layout) @@ -129,15 +129,15 @@ Demonstrates usage of the non-blocking notification API ![Snippet081 Shell1.gif](https://raw.githubusercontent.com/eclipse-platform/eclipse.platform.ui/master/docs/images/Snippet081_Shell1.gif) -### [Snippet002 - 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/Snippet002NotificationPopupWithFunctions.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) -* [Snippet002 - 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/Snippet002NotificationPopupWithFunctions.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. -### [Snippet004 - 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/Snippet004NotificationPopupWithCustomDelayAndFade.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) -* [Snippet004 - 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/Snippet004NotificationPopupWithCustomDelayAndFade.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. 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(); From 745385a64d99bfcf8c2a72139c72ee1829599ef2 Mon Sep 17 00:00:00 2001 From: Elsa Zacharia Date: Wed, 16 Oct 2024 18:21:21 +0530 Subject: [PATCH 116/232] Changing the name from "Eclipse UI" to "eclipseui" to avoid space in path names --- bundles/org.eclipse.ui.workbench/.classpath | 4 ++-- bundles/org.eclipse.ui.workbench/build.properties | 4 ++-- .../addons/perspectiveswitcher/PerspectiveSwitcher.java | 0 .../org/eclipse/ui/AbstractSourceProvider.java | 0 .../org/eclipse/ui/ActiveShellExpression.java | 0 .../org/eclipse/ui/BasicWorkingSetElementAdapter.java | 0 .../org/eclipse/ui/ExtensionFactory.java | 0 .../{Eclipse UI => eclipseui}/org/eclipse/ui/IActionBars.java | 0 .../org/eclipse/ui/IActionBars2.java | 0 .../org/eclipse/ui/IActionDelegate.java | 0 .../org/eclipse/ui/IActionDelegate2.java | 0 .../org/eclipse/ui/IActionDelegateWithEvent.java | 0 .../org/eclipse/ui/IActionFilter.java | 0 .../org/eclipse/ui/IAggregateWorkingSet.java | 0 .../org/eclipse/ui/IContainmentAdapter.java | 0 .../org/eclipse/ui/IDecoratorManager.java | 0 .../org/eclipse/ui/IEditorActionBarContributor.java | 0 .../org/eclipse/ui/IEditorActionDelegate.java | 0 .../org/eclipse/ui/IEditorDescriptor.java | 0 .../org/eclipse/ui/IEditorInput.java | 0 .../org/eclipse/ui/IEditorLauncher.java | 0 .../org/eclipse/ui/IEditorMatchingStrategy.java | 0 .../{Eclipse UI => eclipseui}/org/eclipse/ui/IEditorPart.java | 0 .../org/eclipse/ui/IEditorReference.java | 0 .../org/eclipse/ui/IEditorRegistry.java | 0 .../{Eclipse UI => eclipseui}/org/eclipse/ui/IEditorSite.java | 0 .../org/eclipse/ui/IElementFactory.java | 0 .../org/eclipse/ui/IExportWizard.java | 0 .../org/eclipse/ui/IFileEditorMapping.java | 0 .../org/eclipse/ui/IFolderLayout.java | 0 .../org/eclipse/ui/IImportWizard.java | 0 .../org/eclipse/ui/IInPlaceEditor.java | 0 .../org/eclipse/ui/IInPlaceEditorInput.java | 0 .../org/eclipse/ui/IKeyBindingService.java | 0 .../org/eclipse/ui/ILocalWorkingSetManager.java | 0 .../{Eclipse UI => eclipseui}/org/eclipse/ui/IMemento.java | 0 .../org/eclipse/ui/INavigationHistory.java | 0 .../org/eclipse/ui/INavigationLocation.java | 0 .../org/eclipse/ui/INavigationLocationProvider.java | 0 .../org/eclipse/ui/INestableKeyBindingService.java | 0 .../{Eclipse UI => eclipseui}/org/eclipse/ui/INewWizard.java | 0 .../org/eclipse/ui/INullSelectionListener.java | 0 .../org/eclipse/ui/IObjectActionDelegate.java | 0 .../{Eclipse UI => eclipseui}/org/eclipse/ui/IPageLayout.java | 0 .../org/eclipse/ui/IPageListener.java | 0 .../org/eclipse/ui/IPageService.java | 0 .../org/eclipse/ui/IPartListener.java | 0 .../org/eclipse/ui/IPartListener2.java | 0 .../org/eclipse/ui/IPartService.java | 0 .../org/eclipse/ui/IPathEditorInput.java | 0 .../org/eclipse/ui/IPersistable.java | 0 .../org/eclipse/ui/IPersistableEditor.java | 0 .../org/eclipse/ui/IPersistableElement.java | 0 .../org/eclipse/ui/IPerspectiveDescriptor.java | 0 .../org/eclipse/ui/IPerspectiveFactory.java | 0 .../org/eclipse/ui/IPerspectiveListener.java | 0 .../org/eclipse/ui/IPerspectiveListener2.java | 0 .../org/eclipse/ui/IPerspectiveListener3.java | 0 .../org/eclipse/ui/IPerspectiveListener4.java | 0 .../org/eclipse/ui/IPerspectiveRegistry.java | 0 .../org/eclipse/ui/IPlaceholderFolderLayout.java | 0 .../org/eclipse/ui/IPluginContribution.java | 0 .../org/eclipse/ui/IPropertyListener.java | 0 .../org/eclipse/ui/IReusableEditor.java | 0 .../org/eclipse/ui/ISaveableFilter.java | 0 .../org/eclipse/ui/ISaveablePart.java | 0 .../org/eclipse/ui/ISaveablePart2.java | 0 .../org/eclipse/ui/ISaveablesLifecycleListener.java | 0 .../org/eclipse/ui/ISaveablesSource.java | 0 .../org/eclipse/ui/ISecondarySaveableSource.java | 0 .../org/eclipse/ui/ISelectionListener.java | 0 .../org/eclipse/ui/ISelectionService.java | 0 .../org/eclipse/ui/ISharedImages.java | 0 .../org/eclipse/ui/IShowEditorInput.java | 0 .../org/eclipse/ui/ISizeProvider.java | 0 .../org/eclipse/ui/ISourceProvider.java | 0 .../org/eclipse/ui/ISourceProviderListener.java | 0 .../{Eclipse UI => eclipseui}/org/eclipse/ui/ISources.java | 0 .../{Eclipse UI => eclipseui}/org/eclipse/ui/IStartup.java | 0 .../org/eclipse/ui/IViewActionDelegate.java | 0 .../{Eclipse UI => eclipseui}/org/eclipse/ui/IViewLayout.java | 0 .../{Eclipse UI => eclipseui}/org/eclipse/ui/IViewPart.java | 0 .../org/eclipse/ui/IViewReference.java | 0 .../{Eclipse UI => eclipseui}/org/eclipse/ui/IViewSite.java | 0 .../org/eclipse/ui/IWindowListener.java | 0 .../{Eclipse UI => eclipseui}/org/eclipse/ui/IWorkbench.java | 0 .../org/eclipse/ui/IWorkbenchActionConstants.java | 0 .../org/eclipse/ui/IWorkbenchCommandConstants.java | 0 .../org/eclipse/ui/IWorkbenchListener.java | 0 .../org/eclipse/ui/IWorkbenchPage.java | 0 .../org/eclipse/ui/IWorkbenchPart.java | 0 .../org/eclipse/ui/IWorkbenchPart2.java | 0 .../org/eclipse/ui/IWorkbenchPart3.java | 0 .../org/eclipse/ui/IWorkbenchPartConstants.java | 0 .../org/eclipse/ui/IWorkbenchPartDescriptor.java | 0 .../org/eclipse/ui/IWorkbenchPartReference.java | 0 .../org/eclipse/ui/IWorkbenchPartSite.java | 0 .../org/eclipse/ui/IWorkbenchPreferenceConstants.java | 0 .../org/eclipse/ui/IWorkbenchPreferencePage.java | 0 .../org/eclipse/ui/IWorkbenchPropertyPage.java | 0 .../org/eclipse/ui/IWorkbenchPropertyPageMulti.java | 0 .../org/eclipse/ui/IWorkbenchSite.java | 0 .../org/eclipse/ui/IWorkbenchWindow.java | 0 .../org/eclipse/ui/IWorkbenchWindowActionDelegate.java | 0 .../org/eclipse/ui/IWorkbenchWindowPulldownDelegate.java | 0 .../org/eclipse/ui/IWorkbenchWindowPulldownDelegate2.java | 0 .../org/eclipse/ui/IWorkbenchWizard.java | 0 .../{Eclipse UI => eclipseui}/org/eclipse/ui/IWorkingSet.java | 0 .../org/eclipse/ui/IWorkingSetElementAdapter.java | 0 .../org/eclipse/ui/IWorkingSetManager.java | 0 .../org/eclipse/ui/IWorkingSetUpdater.java | 0 .../org/eclipse/ui/IWorkingSetUpdater2.java | 0 .../org/eclipse/ui/LegacyHandlerSubmissionExpression.java | 0 .../org/eclipse/ui/MultiPartInitException.java | 0 .../org/eclipse/ui/NavigationLocation.java | 0 .../org/eclipse/ui/OpenAndLinkWithEditorHelper.java | 0 .../org/eclipse/ui/PartInitException.java | 0 .../org/eclipse/ui/PerspectiveAdapter.java | 0 .../{Eclipse UI => eclipseui}/org/eclipse/ui/PlatformUI.java | 0 .../{Eclipse UI => eclipseui}/org/eclipse/ui/Saveable.java | 0 .../org/eclipse/ui/SaveablesLifecycleEvent.java | 0 .../org/eclipse/ui/SelectionEnabler.java | 0 .../org/eclipse/ui/SelectionListenerFactory.java | 0 .../org/eclipse/ui/SubActionBars.java | 0 .../org/eclipse/ui/SubActionBars2.java | 0 .../org/eclipse/ui/WorkbenchEncoding.java | 0 .../org/eclipse/ui/WorkbenchException.java | 0 .../{Eclipse UI => eclipseui}/org/eclipse/ui/XMLMemento.java | 0 .../org/eclipse/ui/about/IInstallationPageContainer.java | 0 .../org/eclipse/ui/about/ISystemSummarySection.java | 0 .../org/eclipse/ui/about/InstallationPage.java | 0 .../org/eclipse/ui/about/package.html | 0 .../org/eclipse/ui/actions/ActionContext.java | 0 .../org/eclipse/ui/actions/ActionDelegate.java | 0 .../org/eclipse/ui/actions/ActionFactory.java | 0 .../org/eclipse/ui/actions/ActionGroup.java | 0 .../org/eclipse/ui/actions/BaseNewWizardMenu.java | 0 .../org/eclipse/ui/actions/BaseSelectionListenerAction.java | 0 .../org/eclipse/ui/actions/CommandNotMappedException.java | 0 .../org/eclipse/ui/actions/CompoundContributionItem.java | 0 .../org/eclipse/ui/actions/ContributedAction.java | 0 .../org/eclipse/ui/actions/ContributionItemFactory.java | 0 .../org/eclipse/ui/actions/ExportResourcesAction.java | 0 .../org/eclipse/ui/actions/ImportResourcesAction.java | 0 .../org/eclipse/ui/actions/LabelRetargetAction.java | 0 .../org/eclipse/ui/actions/NewWizardAction.java | 0 .../org/eclipse/ui/actions/NewWizardDropDownAction.java | 0 .../org/eclipse/ui/actions/OpenInNewWindowAction.java | 0 .../org/eclipse/ui/actions/OpenNewPageMenu.java | 0 .../org/eclipse/ui/actions/OpenNewWindowMenu.java | 0 .../org/eclipse/ui/actions/OpenPerspectiveAction.java | 0 .../org/eclipse/ui/actions/OpenPerspectiveMenu.java | 0 .../org/eclipse/ui/actions/PartEventAction.java | 0 .../org/eclipse/ui/actions/PerspectiveMenu.java | 0 .../org/eclipse/ui/actions/QuickMenuCreator.java | 0 .../org/eclipse/ui/actions/RetargetAction.java | 0 .../org/eclipse/ui/actions/SelectionProviderAction.java | 0 .../org/eclipse/ui/actions/SimpleWildcardTester.java | 0 .../org/eclipse/ui/actions/WorkingSetFilterActionGroup.java | 0 .../org/eclipse/ui/actions/package.html | 0 .../org/eclipse/ui/activities/ActivitiesPreferencePage.java | 0 .../eclipse/ui/activities/ActivityCategoryPreferencePage.java | 0 .../org/eclipse/ui/activities/ActivityEvent.java | 0 .../org/eclipse/ui/activities/ActivityManagerEvent.java | 0 .../org/eclipse/ui/activities/CategoryEvent.java | 0 .../org/eclipse/ui/activities/IActivity.java | 0 .../org/eclipse/ui/activities/IActivityListener.java | 0 .../org/eclipse/ui/activities/IActivityManager.java | 0 .../org/eclipse/ui/activities/IActivityManagerListener.java | 0 .../org/eclipse/ui/activities/IActivityPatternBinding.java | 0 .../eclipse/ui/activities/IActivityRequirementBinding.java | 0 .../org/eclipse/ui/activities/ICategory.java | 0 .../org/eclipse/ui/activities/ICategoryActivityBinding.java | 0 .../org/eclipse/ui/activities/ICategoryListener.java | 0 .../org/eclipse/ui/activities/IIdentifier.java | 0 .../org/eclipse/ui/activities/IIdentifierListener.java | 0 .../org/eclipse/ui/activities/IMutableActivityManager.java | 0 .../org/eclipse/ui/activities/ITriggerPoint.java | 0 .../org/eclipse/ui/activities/ITriggerPointAdvisor.java | 0 .../org/eclipse/ui/activities/ITriggerPointManager.java | 0 .../org/eclipse/ui/activities/IWorkbenchActivitySupport.java | 0 .../org/eclipse/ui/activities/IdentifierEvent.java | 0 .../org/eclipse/ui/activities/NotDefinedException.java | 0 .../org/eclipse/ui/activities/WorkbenchActivityHelper.java | 0 .../eclipse/ui/activities/WorkbenchTriggerPointAdvisor.java | 0 .../org/eclipse/ui/activities/package.html | 0 .../org/eclipse/ui/application/ActionBarAdvisor.java | 0 .../org/eclipse/ui/application/DisplayAccess.java | 0 .../org/eclipse/ui/application/IActionBarConfigurer.java | 0 .../org/eclipse/ui/application/IWorkbenchConfigurer.java | 0 .../eclipse/ui/application/IWorkbenchWindowConfigurer.java | 0 .../org/eclipse/ui/application/WorkbenchAdvisor.java | 0 .../org/eclipse/ui/application/WorkbenchWindowAdvisor.java | 0 .../org/eclipse/ui/application/package.html | 0 .../org/eclipse/ui/branding/IBundleGroupConstants.java | 0 .../org/eclipse/ui/branding/IProductConstants.java | 0 .../org/eclipse/ui/branding/package.html | 0 .../org/eclipse/ui/browser/AbstractWebBrowser.java | 0 .../eclipse/ui/browser/AbstractWorkbenchBrowserSupport.java | 0 .../org/eclipse/ui/browser/IWebBrowser.java | 0 .../org/eclipse/ui/browser/IWorkbenchBrowserSupport.java | 0 .../org/eclipse/ui/browser/package.html | 0 .../org/eclipse/ui/commands/ExtensionParameterValues.java | 0 .../org/eclipse/ui/commands/ICommandImageService.java | 0 .../org/eclipse/ui/commands/ICommandService.java | 0 .../org/eclipse/ui/commands/IElementReference.java | 0 .../org/eclipse/ui/commands/IElementUpdater.java | 0 .../org/eclipse/ui/commands/package.html | 0 .../org/eclipse/ui/contexts/ContextEvent.java | 0 .../org/eclipse/ui/contexts/ContextException.java | 0 .../org/eclipse/ui/contexts/ContextManagerEvent.java | 0 .../org/eclipse/ui/contexts/EnabledSubmission.java | 0 .../org/eclipse/ui/contexts/IContext.java | 0 .../org/eclipse/ui/contexts/IContextActivation.java | 0 .../org/eclipse/ui/contexts/IContextListener.java | 0 .../org/eclipse/ui/contexts/IContextManager.java | 0 .../org/eclipse/ui/contexts/IContextManagerListener.java | 0 .../org/eclipse/ui/contexts/IContextService.java | 0 .../org/eclipse/ui/contexts/IWorkbenchContextSupport.java | 0 .../org/eclipse/ui/contexts/NotDefinedException.java | 0 .../org/eclipse/ui/contexts/package.html | 0 .../org/eclipse/ui/databinding/typed/WorkbenchProperties.java | 0 .../ui/dialogs/AbstractElementListSelectionDialog.java | 0 .../org/eclipse/ui/dialogs/CheckedTreeSelectionDialog.java | 0 .../org/eclipse/ui/dialogs/ContainerCheckedTreeViewer.java | 0 .../org/eclipse/ui/dialogs/EditorSelectionDialog.java | 0 .../org/eclipse/ui/dialogs/ElementListSelectionDialog.java | 0 .../org/eclipse/ui/dialogs/ElementTreeSelectionDialog.java | 0 .../eclipse/ui/dialogs/FileEditorMappingContentProvider.java | 0 .../eclipse/ui/dialogs/FileEditorMappingLabelProvider.java | 0 .../org/eclipse/ui/dialogs/FileSystemElement.java | 0 .../org/eclipse/ui/dialogs/FilteredItemsSelectionDialog.java | 0 .../org/eclipse/ui/dialogs/FilteredList.java | 0 .../org/eclipse/ui/dialogs/FilteredTree.java | 0 .../org/eclipse/ui/dialogs/IOverwriteQuery.java | 0 .../org/eclipse/ui/dialogs/ISelectionStatusValidator.java | 0 .../org/eclipse/ui/dialogs/ISelectionValidator.java | 0 .../org/eclipse/ui/dialogs/IStyledStringHighlighter.java | 0 .../org/eclipse/ui/dialogs/IWorkingSetEditWizard.java | 0 .../org/eclipse/ui/dialogs/IWorkingSetNewWizard.java | 0 .../org/eclipse/ui/dialogs/IWorkingSetPage.java | 0 .../org/eclipse/ui/dialogs/IWorkingSetSelectionDialog.java | 0 .../org/eclipse/ui/dialogs/ListDialog.java | 0 .../org/eclipse/ui/dialogs/ListSelectionDialog.java | 0 .../org/eclipse/ui/dialogs/PatternFilter.java | 0 .../org/eclipse/ui/dialogs/PreferenceLinkArea.java | 0 .../org/eclipse/ui/dialogs/PreferencesUtil.java | 0 .../org/eclipse/ui/dialogs/PropertyDialogAction.java | 0 .../org/eclipse/ui/dialogs/PropertyPage.java | 0 .../org/eclipse/ui/dialogs/SearchPattern.java | 0 .../org/eclipse/ui/dialogs/SelectionDialog.java | 0 .../org/eclipse/ui/dialogs/SelectionStatusDialog.java | 0 .../org/eclipse/ui/dialogs/StyledStringHighlighter.java | 0 .../org/eclipse/ui/dialogs/TwoArrayQuickSorter.java | 0 .../org/eclipse/ui/dialogs/TwoPaneElementSelector.java | 0 .../org/eclipse/ui/dialogs/TypeFilteringDialog.java | 0 .../org/eclipse/ui/dialogs/WorkingSetConfigurationBlock.java | 0 .../org/eclipse/ui/dialogs/WorkingSetGroup.java | 0 .../eclipse/ui/dialogs/YesNoCancelListSelectionDialog.java | 0 .../org/eclipse/ui/dialogs/package.html | 0 .../org/eclipse/ui/dnd/IDragAndDropService.java | 0 .../{Eclipse UI => eclipseui}/org/eclipse/ui/dnd/package.html | 0 .../eclipse/ui/fieldassist/ContentAssistCommandAdapter.java | 0 .../org/eclipse/ui/fieldassist/ContentAssistField.java | 0 .../org/eclipse/ui/fieldassist/package.html | 0 .../org/eclipse/ui/handlers/CollapseAllHandler.java | 0 .../org/eclipse/ui/handlers/ExpandAllHandler.java | 0 .../org/eclipse/ui/handlers/HandlerUtil.java | 0 .../org/eclipse/ui/handlers/IHandlerActivation.java | 0 .../org/eclipse/ui/handlers/IHandlerService.java | 0 .../org/eclipse/ui/handlers/RadioState.java | 0 .../org/eclipse/ui/handlers/RegistryRadioState.java | 0 .../org/eclipse/ui/handlers/RegistryToggleState.java | 0 .../org/eclipse/ui/handlers/ShowPerspectiveHandler.java | 0 .../org/eclipse/ui/handlers/ShowViewHandler.java | 0 .../org/eclipse/ui/handlers/package.html | 0 .../org/eclipse/ui/help/AbstractHelpUI.java | 0 .../org/eclipse/ui/help/IWorkbenchHelpSystem.java | 0 .../org/eclipse/ui/help/package.html | 0 .../org/eclipse/ui/internal/AbstractEnabledHandler.java | 0 .../org/eclipse/ui/internal/AbstractEvaluationHandler.java | 0 .../org/eclipse/ui/internal/AbstractWorkingSet.java | 0 .../org/eclipse/ui/internal/AbstractWorkingSetManager.java | 0 .../org/eclipse/ui/internal/ActionDescriptor.java | 0 .../org/eclipse/ui/internal/ActionExpression.java | 0 .../org/eclipse/ui/internal/ActionPresentation.java | 0 .../org/eclipse/ui/internal/ActionSetActionBars.java | 0 .../org/eclipse/ui/internal/ActionSetContributionItem.java | 0 .../org/eclipse/ui/internal/ActionSetManager.java | 0 .../org/eclipse/ui/internal/ActionSetMenuManager.java | 0 .../org/eclipse/ui/internal/ActionSetSeparator.java | 0 .../org/eclipse/ui/internal/ActionSetsEvent.java | 0 .../org/eclipse/ui/internal/ActivateEditorHandler.java | 0 .../org/eclipse/ui/internal/ActivityPersistanceHelper.java | 0 .../org/eclipse/ui/internal/AggregateWorkingSet.java | 0 .../org/eclipse/ui/internal/BindingToModelProcessor.java | 0 .../org/eclipse/ui/internal/BrandingProperties.java | 0 .../org/eclipse/ui/internal/BundleGroupProperties.java | 0 .../org/eclipse/ui/internal/ChangeToPerspectiveMenu.java | 0 .../org/eclipse/ui/internal/CloseAllHandler.java | 0 .../org/eclipse/ui/internal/CloseAllSavedAction.java | 0 .../org/eclipse/ui/internal/CloseEditorHandler.java | 0 .../org/eclipse/ui/internal/CloseOthersHandler.java | 0 .../org/eclipse/ui/internal/CommandToModelProcessor.java | 0 .../org/eclipse/ui/internal/ConfigurationInfo.java | 0 .../org/eclipse/ui/internal/ContextToModelProcessor.java | 0 .../org/eclipse/ui/internal/CoolBarToTrimManager.java | 0 .../org/eclipse/ui/internal/CycleEditorHandler.java | 0 .../org/eclipse/ui/internal/CyclePerspectiveHandler.java | 0 .../org/eclipse/ui/internal/CycleViewHandler.java | 0 .../org/eclipse/ui/internal/DefaultSaveable.java | 0 .../org/eclipse/ui/internal/DirtyPerspectiveMarker.java | 0 .../org/eclipse/ui/internal/E4PartWrapper.java | 0 .../org/eclipse/ui/internal/EarlyStartupRunnable.java | 0 .../org/eclipse/ui/internal/EditorActionBars.java | 0 .../org/eclipse/ui/internal/EditorActionBuilder.java | 0 .../org/eclipse/ui/internal/EditorHistory.java | 0 .../org/eclipse/ui/internal/EditorHistoryItem.java | 0 .../org/eclipse/ui/internal/EditorMenuManager.java | 0 .../org/eclipse/ui/internal/EditorPluginAction.java | 0 .../org/eclipse/ui/internal/EditorReference.java | 0 .../org/eclipse/ui/internal/EditorSite.java | 0 .../eclipse/ui/internal/EditorSiteDragAndDropServiceImpl.java | 0 .../org/eclipse/ui/internal/ErrorEditorPart.java | 0 .../org/eclipse/ui/internal/ErrorViewPart.java | 0 .../org/eclipse/ui/internal/ExceptionHandler.java | 0 .../org/eclipse/ui/internal/ExtensionEventHandler.java | 0 .../org/eclipse/ui/internal/ExtensionEventHandler.properties | 0 .../eclipse/ui/internal/ExtensionEventHandlerMessages.java | 0 .../org/eclipse/ui/internal/FilteredTableBaseHandler.java | 0 .../org/eclipse/ui/internal/HeapStatus.java | 0 .../org/eclipse/ui/internal/IActionSetContributionItem.java | 0 .../org/eclipse/ui/internal/IBackgroundSaveListener.java | 0 .../org/eclipse/ui/internal/IChangeListener.java | 0 .../org/eclipse/ui/internal/IHeapStatusConstants.java | 0 .../org/eclipse/ui/internal/IMenuServiceWorkaround.java | 0 .../org/eclipse/ui/internal/IObjectActionContributor.java | 0 .../org/eclipse/ui/internal/IObjectContributor.java | 0 .../org/eclipse/ui/internal/IPreferenceConstants.java | 0 .../org/eclipse/ui/internal/ISelectionConversionService.java | 0 .../org/eclipse/ui/internal/IWorkbenchConstants.java | 0 .../org/eclipse/ui/internal/IWorkbenchGraphicConstants.java | 0 .../org/eclipse/ui/internal/IWorkbenchHelpContextIds.java | 0 .../org/eclipse/ui/internal/IWorkbenchThemeConstants.java | 0 .../org/eclipse/ui/internal/InternalHandlerUtil.java | 0 .../org/eclipse/ui/internal/InternalSaveable.java | 0 .../org/eclipse/ui/internal/JFaceUtil.java | 0 .../org/eclipse/ui/internal/KeyBindingService.java | 0 .../eclipse/ui/internal/LargeFileLimitsPreferenceHandler.java | 0 .../org/eclipse/ui/internal/LegacyResourceSupport.java | 0 .../org/eclipse/ui/internal/LegacyTrim.java | 0 .../org/eclipse/ui/internal/LocalWorkingSetManager.java | 0 .../org/eclipse/ui/internal/NavigationHistory.java | 0 .../org/eclipse/ui/internal/NavigationHistoryAction.java | 0 .../org/eclipse/ui/internal/NavigationHistoryEditorInfo.java | 0 .../org/eclipse/ui/internal/NavigationHistoryEntry.java | 0 .../org/eclipse/ui/internal/ObjectActionContributor.java | 0 .../eclipse/ui/internal/ObjectActionContributorManager.java | 0 .../eclipse/ui/internal/ObjectActionContributorReader.java | 0 .../org/eclipse/ui/internal/ObjectContributorManager.java | 0 .../org/eclipse/ui/internal/ObjectFilterTest.java | 0 .../org/eclipse/ui/internal/ObjectPluginAction.java | 0 .../eclipse/ui/internal/OpenPerspectivePropertyTester.java | 0 .../org/eclipse/ui/internal/OpenPreferencesAction.java | 0 .../org/eclipse/ui/internal/PageEventAction.java | 0 .../org/eclipse/ui/internal/PageListenerList.java | 0 .../org/eclipse/ui/internal/PagePartSelectionTracker.java | 0 .../org/eclipse/ui/internal/PartPane.java | 0 .../org/eclipse/ui/internal/PartPluginAction.java | 0 .../org/eclipse/ui/internal/PartSelectionListener.java | 0 .../org/eclipse/ui/internal/PartService.java | 0 .../org/eclipse/ui/internal/PartSite.java | 0 .../eclipse/ui/internal/PartTaggedAsEditorPropertyTester.java | 0 .../org/eclipse/ui/internal/PendingSyncExec.java | 0 .../org/eclipse/ui/internal/Perspective.java | 0 .../org/eclipse/ui/internal/PerspectiveAction.java | 0 .../org/eclipse/ui/internal/PerspectiveExtensionReader.java | 0 .../org/eclipse/ui/internal/PerspectiveListenerList.java | 0 .../org/eclipse/ui/internal/PerspectiveTagger.java | 0 .../org/eclipse/ui/internal/PerspectiveTracker.java | 0 .../org/eclipse/ui/internal/PlaceholderContributionItem.java | 0 .../org/eclipse/ui/internal/PlatformUIPreferenceListener.java | 0 .../org/eclipse/ui/internal/PluginAction.java | 0 .../org/eclipse/ui/internal/PluginActionBuilder.java | 0 .../org/eclipse/ui/internal/PluginActionContributionItem.java | 0 .../ui/internal/PluginActionCoolBarContributionItem.java | 0 .../org/eclipse/ui/internal/PluginActionSet.java | 0 .../org/eclipse/ui/internal/PluginActionSetBuilder.java | 0 .../org/eclipse/ui/internal/PopupMenuExtender.java | 0 .../org/eclipse/ui/internal/ProductInfo.java | 0 .../org/eclipse/ui/internal/ProductProperties.java | 0 .../org/eclipse/ui/internal/ReopenEditorMenu.java | 0 .../org/eclipse/ui/internal/SaveableHelper.java | 0 .../org/eclipse/ui/internal/SaveablesList.java | 0 .../org/eclipse/ui/internal/SelectionAdapterFactory.java | 0 .../org/eclipse/ui/internal/SelectionConversionService.java | 0 .../org/eclipse/ui/internal/SharedImages.java | 0 .../org/eclipse/ui/internal/ShowInHandler.java | 0 .../org/eclipse/ui/internal/ShowInMenu.java | 0 .../org/eclipse/ui/internal/ShowPartPaneMenuHandler.java | 0 .../org/eclipse/ui/internal/ShowViewMenu.java | 0 .../org/eclipse/ui/internal/ShowViewMenuHandler.java | 0 .../org/eclipse/ui/internal/SlavePageService.java | 0 .../org/eclipse/ui/internal/SlavePartService.java | 0 .../org/eclipse/ui/internal/SlaveSelectionService.java | 0 .../org/eclipse/ui/internal/SplitHandler.java | 0 .../org/eclipse/ui/internal/SplitValues.java | 0 .../org/eclipse/ui/internal/StandardTrim.java | 0 .../org/eclipse/ui/internal/StartupThreading.java | 0 .../org/eclipse/ui/internal/SwitchToWindowMenu.java | 0 .../eclipse/ui/internal/ToggleEditorsVisibilityAction.java | 0 .../org/eclipse/ui/internal/TrimUtil.java | 0 .../org/eclipse/ui/internal/UILockListener.java | 0 .../org/eclipse/ui/internal/UISynchronizer.java | 0 .../org/eclipse/ui/internal/ViewActionBuilder.java | 0 .../org/eclipse/ui/internal/ViewIntroAdapterPart.java | 0 .../org/eclipse/ui/internal/ViewIntroAdapterSite.java | 0 .../org/eclipse/ui/internal/ViewPluginAction.java | 0 .../org/eclipse/ui/internal/ViewReference.java | 0 .../org/eclipse/ui/internal/ViewSite.java | 0 .../org/eclipse/ui/internal/ViewerActionBuilder.java | 0 .../org/eclipse/ui/internal/WWinActionBars.java | 0 .../org/eclipse/ui/internal/WWinPluginAction.java | 0 .../org/eclipse/ui/internal/WWinPluginPulldown.java | 0 .../org/eclipse/ui/internal/WindowsDefenderConfigurator.java | 0 .../org/eclipse/ui/internal/Workbench.java | 0 .../org/eclipse/ui/internal/WorkbenchConfigurer.java | 0 .../org/eclipse/ui/internal/WorkbenchEditorsHandler.java | 0 .../org/eclipse/ui/internal/WorkbenchErrorHandlerProxy.java | 0 .../eclipse/ui/internal/WorkbenchHandlerServiceHandler.java | 0 .../org/eclipse/ui/internal/WorkbenchImages.java | 0 .../org/eclipse/ui/internal/WorkbenchIntroManager.java | 0 .../eclipse/ui/internal/WorkbenchLayoutSettingsTransfer.java | 0 .../org/eclipse/ui/internal/WorkbenchMessages.java | 0 .../org/eclipse/ui/internal/WorkbenchPage.java | 0 .../org/eclipse/ui/internal/WorkbenchPartReference.java | 0 .../org/eclipse/ui/internal/WorkbenchPlugin.java | 0 .../eclipse/ui/internal/WorkbenchPreferenceInitializer.java | 0 .../org/eclipse/ui/internal/WorkbenchSupportFactory.java | 0 .../org/eclipse/ui/internal/WorkbenchWindow.java | 0 .../org/eclipse/ui/internal/WorkbenchWindowConfigurer.java | 0 .../org/eclipse/ui/internal/WorkbookEditorsHandler.java | 0 .../org/eclipse/ui/internal/WorkingSet.java | 0 .../org/eclipse/ui/internal/WorkingSetComparator.java | 0 .../org/eclipse/ui/internal/WorkingSetFactory.java | 0 .../org/eclipse/ui/internal/WorkingSetManager.java | 0 .../eclipse/ui/internal/WorkingSetMenuContributionItem.java | 0 .../org/eclipse/ui/internal/about/AboutBundleData.java | 0 .../org/eclipse/ui/internal/about/AboutBundleGroupData.java | 0 .../org/eclipse/ui/internal/about/AboutData.java | 0 .../eclipse/ui/internal/about/AboutFeaturesButtonManager.java | 0 .../org/eclipse/ui/internal/about/AboutFeaturesPage.java | 0 .../org/eclipse/ui/internal/about/AboutHandler.java | 0 .../org/eclipse/ui/internal/about/AboutItem.java | 0 .../org/eclipse/ui/internal/about/AboutPluginsPage.java | 0 .../org/eclipse/ui/internal/about/AboutSystemPage.java | 0 .../org/eclipse/ui/internal/about/AboutTextManager.java | 0 .../org/eclipse/ui/internal/about/AboutUtils.java | 0 .../org/eclipse/ui/internal/about/BundleSigningInfo.java | 0 .../ui/internal/about/ConfigurationLogDefaultSection.java | 0 .../eclipse/ui/internal/about/CopyTableSelectionHandler.java | 0 .../org/eclipse/ui/internal/about/InstallationDialog.java | 0 .../org/eclipse/ui/internal/about/InstallationHandler.java | 0 .../org/eclipse/ui/internal/about/ProductInfoDialog.java | 0 .../org/eclipse/ui/internal/about/ProductInfoPage.java | 0 .../internal/actions/AbstractWorkingSetPulldownDelegate.java | 0 .../eclipse/ui/internal/actions/ClearWorkingSetAction.java | 0 .../org/eclipse/ui/internal/actions/CommandAction.java | 0 .../org/eclipse/ui/internal/actions/DynamicHelpAction.java | 0 .../org/eclipse/ui/internal/actions/EditWorkingSetAction.java | 0 .../org/eclipse/ui/internal/actions/HelpContentsAction.java | 0 .../org/eclipse/ui/internal/actions/HelpSearchAction.java | 0 .../ui/internal/actions/HelpSearchContributionItem.java | 0 .../eclipse/ui/internal/actions/ModifyWorkingSetDelegate.java | 0 .../eclipse/ui/internal/actions/NewWizardShortcutAction.java | 0 .../eclipse/ui/internal/actions/SelectWorkingSetAction.java | 0 .../eclipse/ui/internal/actions/SelectWorkingSetsAction.java | 0 .../ui/internal/activities/AbstractActivityManager.java | 0 .../ui/internal/activities/AbstractActivityRegistry.java | 0 .../org/eclipse/ui/internal/activities/Activity.java | 0 .../eclipse/ui/internal/activities/ActivityDefinition.java | 0 .../ui/internal/activities/ActivityPatternBinding.java | 0 .../internal/activities/ActivityPatternBindingDefinition.java | 0 .../ui/internal/activities/ActivityPropertyTester.java | 0 .../eclipse/ui/internal/activities/ActivityRegistryEvent.java | 0 .../ui/internal/activities/ActivityRequirementBinding.java | 0 .../activities/ActivityRequirementBindingDefinition.java | 0 .../org/eclipse/ui/internal/activities/Category.java | 0 .../ui/internal/activities/CategoryActivityBinding.java | 0 .../activities/CategoryActivityBindingDefinition.java | 0 .../eclipse/ui/internal/activities/CategoryDefinition.java | 0 .../ui/internal/activities/ExtensionActivityRegistry.java | 0 .../org/eclipse/ui/internal/activities/IActivityRegistry.java | 0 .../ui/internal/activities/IActivityRegistryListener.java | 0 .../org/eclipse/ui/internal/activities/Identifier.java | 0 .../ui/internal/activities/InternalActivityHelper.java | 0 .../ui/internal/activities/MutableActivityManager.java | 0 .../org/eclipse/ui/internal/activities/PatternUtil.java | 0 .../org/eclipse/ui/internal/activities/Persistence.java | 0 .../eclipse/ui/internal/activities/ProxyActivityManager.java | 0 .../ui/internal/activities/ws/AbstractTriggerPoint.java | 0 .../activities/ws/ActivityCategoryContentProvider.java | 0 .../internal/activities/ws/ActivityCategoryLabelProvider.java | 0 .../ui/internal/activities/ws/ActivityContentProvider.java | 0 .../eclipse/ui/internal/activities/ws/ActivityEnabler.java | 0 .../ui/internal/activities/ws/ActivityLabelProvider.java | 0 .../eclipse/ui/internal/activities/ws/ActivityMessages.java | 0 .../ui/internal/activities/ws/ActivityViewerFilter.java | 0 .../ui/internal/activities/ws/CategorizedActivity.java | 0 .../eclipse/ui/internal/activities/ws/EnablementDialog.java | 0 .../ui/internal/activities/ws/EnablementDialog.properties | 0 .../ui/internal/activities/ws/ImageBindingRegistry.java | 0 .../ui/internal/activities/ws/RegistryTriggerPoint.java | 0 .../internal/activities/ws/TriggerPointAdvisorDescriptor.java | 0 .../internal/activities/ws/TriggerPointAdvisorRegistry.java | 0 .../ui/internal/activities/ws/TriggerPointManager.java | 0 .../ui/internal/activities/ws/WorkbenchActivitySupport.java | 0 .../ui/internal/activities/ws/WorkbenchTriggerPoints.java | 0 .../org/eclipse/ui/internal/activities/ws/messages.properties | 0 .../internal/application/CompatibilityActionBarAdvisor.java | 0 .../application/CompatibilityWorkbenchWindowAdvisor.java | 0 .../org/eclipse/ui/internal/browser/DefaultWebBrowser.java | 0 .../ui/internal/browser/DefaultWorkbenchBrowserSupport.java | 0 .../eclipse/ui/internal/browser/WorkbenchBrowserSupport.java | 0 .../org/eclipse/ui/internal/commands/CommandImageManager.java | 0 .../ui/internal/commands/CommandImageManagerEvent.java | 0 .../eclipse/ui/internal/commands/CommandImagePersistence.java | 0 .../org/eclipse/ui/internal/commands/CommandImageService.java | 0 .../org/eclipse/ui/internal/commands/CommandPersistence.java | 0 .../org/eclipse/ui/internal/commands/CommandService.java | 0 .../eclipse/ui/internal/commands/CommandServiceFactory.java | 0 .../org/eclipse/ui/internal/commands/CommandStateProxy.java | 0 .../org/eclipse/ui/internal/commands/ElementReference.java | 0 .../ui/internal/commands/ICommandImageManagerListener.java | 0 .../eclipse/ui/internal/commands/ILegacyAttributeNames.java | 0 .../ui/internal/commands/ParameterValueConverterProxy.java | 0 .../org/eclipse/ui/internal/commands/SlaveCommandService.java | 0 .../ui/internal/contexts/ActiveContextSourceProvider.java | 0 .../org/eclipse/ui/internal/contexts/ContextActivation.java | 0 .../org/eclipse/ui/internal/contexts/ContextAuthority.java | 0 .../eclipse/ui/internal/contexts/ContextLegacyWrapper.java | 0 .../eclipse/ui/internal/contexts/ContextManagerFactory.java | 0 .../ui/internal/contexts/ContextManagerLegacyWrapper.java | 0 .../org/eclipse/ui/internal/contexts/ContextPersistence.java | 0 .../org/eclipse/ui/internal/contexts/ContextService.java | 0 .../eclipse/ui/internal/contexts/ContextServiceFactory.java | 0 .../ui/internal/contexts/LegacyContextListenerWrapper.java | 0 .../eclipse/ui/internal/contexts/NestableContextService.java | 0 .../org/eclipse/ui/internal/contexts/SlaveContextService.java | 0 .../eclipse/ui/internal/contexts/WorkbenchContextSupport.java | 0 .../eclipse/ui/internal/databinding/ActivePageProperty.java | 0 .../eclipse/ui/internal/databinding/ActivePartProperty.java | 0 .../eclipse/ui/internal/databinding/ActiveWindowProperty.java | 0 .../eclipse/ui/internal/databinding/AdaptedValueProperty.java | 0 .../eclipse/ui/internal/databinding/EditorInputProperty.java | 0 .../org/eclipse/ui/internal/databinding/ListeningValue.java | 0 .../ui/internal/databinding/MultiSelectionProperty.java | 0 .../ui/internal/databinding/SelectionServiceListener.java | 0 .../ui/internal/databinding/SingleSelectionProperty.java | 0 .../eclipse/ui/internal/decorators/DeclarativeDecorator.java | 0 .../org/eclipse/ui/internal/decorators/DecorationBuilder.java | 0 .../eclipse/ui/internal/decorators/DecorationReference.java | 0 .../org/eclipse/ui/internal/decorators/DecorationResult.java | 0 .../eclipse/ui/internal/decorators/DecorationScheduler.java | 0 .../eclipse/ui/internal/decorators/DecoratorDefinition.java | 0 .../org/eclipse/ui/internal/decorators/DecoratorManager.java | 0 .../ui/internal/decorators/DecoratorRegistryReader.java | 0 .../ui/internal/decorators/FullDecoratorDefinition.java | 0 .../eclipse/ui/internal/decorators/FullDecoratorRunnable.java | 0 .../ui/internal/decorators/FullImageDecoratorRunnable.java | 0 .../ui/internal/decorators/FullTextDecoratorRunnable.java | 0 .../ui/internal/decorators/LightweightActionDescriptor.java | 0 .../internal/decorators/LightweightDecoratorDefinition.java | 0 .../ui/internal/decorators/LightweightDecoratorManager.java | 0 .../org/eclipse/ui/internal/dialogs/AboutDialog.java | 0 .../org/eclipse/ui/internal/dialogs/AboutFeaturesDialog.java | 0 .../org/eclipse/ui/internal/dialogs/AboutPluginsDialog.java | 0 .../eclipse/ui/internal/dialogs/AbstractWorkingSetDialog.java | 0 .../org/eclipse/ui/internal/dialogs/AdaptableForwarder.java | 0 .../org/eclipse/ui/internal/dialogs/CapabilityFilter.java | 0 .../dialogs/ContentTypeFilenameAssociationDialog.java | 0 .../ui/internal/dialogs/ContentTypesPreferencePage.java | 0 .../dialogs/DataTransferWizardCollectionComparator.java | 0 .../eclipse/ui/internal/dialogs/DecoratorsPreferencePage.java | 0 .../org/eclipse/ui/internal/dialogs/DialogUtil.java | 0 .../eclipse/ui/internal/dialogs/EditorsPreferencePage.java | 0 .../org/eclipse/ui/internal/dialogs/EmptyPreferencePage.java | 0 .../org/eclipse/ui/internal/dialogs/EmptyPropertyPage.java | 0 .../org/eclipse/ui/internal/dialogs/ErrorPreferencePage.java | 0 .../eclipse/ui/internal/dialogs/EventLoopProgressMonitor.java | 0 .../org/eclipse/ui/internal/dialogs/ExportPage.java | 0 .../org/eclipse/ui/internal/dialogs/ExportWizard.java | 0 .../ui/internal/dialogs/FileEditorsPreferencePage.java | 0 .../org/eclipse/ui/internal/dialogs/FileExtensionDialog.java | 0 .../eclipse/ui/internal/dialogs/FilteredPreferenceDialog.java | 0 .../ui/internal/dialogs/GlobalizationPreferencePage.java | 0 .../eclipse/ui/internal/dialogs/IPropertyPageContributor.java | 0 .../org/eclipse/ui/internal/dialogs/ImportExportPage.java | 0 .../org/eclipse/ui/internal/dialogs/ImportExportWizard.java | 0 .../org/eclipse/ui/internal/dialogs/ImportPage.java | 0 .../org/eclipse/ui/internal/dialogs/ImportWizard.java | 0 .../org/eclipse/ui/internal/dialogs/NewContentTypeDialog.java | 0 .../org/eclipse/ui/internal/dialogs/NewWizard.java | 0 .../ui/internal/dialogs/NewWizardCollectionComparator.java | 0 .../org/eclipse/ui/internal/dialogs/NewWizardNewPage.java | 0 .../eclipse/ui/internal/dialogs/NewWizardSelectionPage.java | 0 .../org/eclipse/ui/internal/dialogs/PerspContentProvider.java | 0 .../ui/internal/dialogs/PerspectivesPreferencePage.java | 0 .../ui/internal/dialogs/PreferenceBoldLabelProvider.java | 0 .../eclipse/ui/internal/dialogs/PreferenceHistoryEntry.java | 0 .../org/eclipse/ui/internal/dialogs/PreferenceNodeFilter.java | 0 .../eclipse/ui/internal/dialogs/PreferencePageHistory.java | 0 .../eclipse/ui/internal/dialogs/PreferencePatternFilter.java | 0 .../org/eclipse/ui/internal/dialogs/PropertyDialog.java | 0 .../ui/internal/dialogs/PropertyPageContributorManager.java | 0 .../org/eclipse/ui/internal/dialogs/PropertyPageManager.java | 0 .../org/eclipse/ui/internal/dialogs/PropertyPageNode.java | 0 .../eclipse/ui/internal/dialogs/RegistryPageContributor.java | 0 .../eclipse/ui/internal/dialogs/SavePerspectiveDialog.java | 0 .../eclipse/ui/internal/dialogs/SelectPerspectiveDialog.java | 0 .../org/eclipse/ui/internal/dialogs/ShowViewDialog.java | 0 .../ui/internal/dialogs/SimpleWorkingSetSelectionDialog.java | 0 .../eclipse/ui/internal/dialogs/StartupPreferencePage.java | 0 .../org/eclipse/ui/internal/dialogs/ViewComparator.java | 0 .../org/eclipse/ui/internal/dialogs/ViewContentProvider.java | 0 .../org/eclipse/ui/internal/dialogs/ViewLabelProvider.java | 0 .../org/eclipse/ui/internal/dialogs/ViewPatternFilter.java | 0 .../org/eclipse/ui/internal/dialogs/ViewsPreferencePage.java | 0 .../org/eclipse/ui/internal/dialogs/WizardActivityFilter.java | 0 .../eclipse/ui/internal/dialogs/WizardCollectionElement.java | 0 .../eclipse/ui/internal/dialogs/WizardContentProvider.java | 0 .../org/eclipse/ui/internal/dialogs/WizardPatternFilter.java | 0 .../org/eclipse/ui/internal/dialogs/WizardTagFilter.java | 0 .../ui/internal/dialogs/WorkbenchDialogBlockedHandler.java | 0 .../eclipse/ui/internal/dialogs/WorkbenchEditorsDialog.java | 0 .../ui/internal/dialogs/WorkbenchPreferenceDialog.java | 0 .../ui/internal/dialogs/WorkbenchPreferenceManager.java | 0 .../eclipse/ui/internal/dialogs/WorkbenchPreferenceNode.java | 0 .../eclipse/ui/internal/dialogs/WorkbenchPreferencePage.java | 0 .../eclipse/ui/internal/dialogs/WorkbenchWizardElement.java | 0 .../ui/internal/dialogs/WorkbenchWizardListSelectionPage.java | 0 .../org/eclipse/ui/internal/dialogs/WorkbenchWizardNode.java | 0 .../ui/internal/dialogs/WorkbenchWizardSelectionPage.java | 0 .../org/eclipse/ui/internal/dialogs/WorkingSetEditWizard.java | 0 .../org/eclipse/ui/internal/dialogs/WorkingSetFilter.java | 0 .../eclipse/ui/internal/dialogs/WorkingSetLabelProvider.java | 0 .../org/eclipse/ui/internal/dialogs/WorkingSetNewWizard.java | 0 .../ui/internal/dialogs/WorkingSetSelectionDialog.java | 0 .../org/eclipse/ui/internal/dialogs/WorkingSetTypePage.java | 0 .../org/eclipse/ui/internal/dialogs/cpd/ActionSetFilter.java | 0 .../dialogs/cpd/ActionSetSelectionChangedListener.java | 0 .../ui/internal/dialogs/cpd/CategoryCheckProvider.java | 0 .../eclipse/ui/internal/dialogs/cpd/CustomizeActionBars.java | 0 .../ui/internal/dialogs/cpd/CustomizePerspectiveDialog.java | 0 .../ui/internal/dialogs/cpd/FilteredModelCheckListener.java | 0 .../ui/internal/dialogs/cpd/FilteredTreeCheckProvider.java | 0 .../ui/internal/dialogs/cpd/FilteredViewerCheckListener.java | 0 .../internal/dialogs/cpd/GrayOutUnavailableLabelProvider.java | 0 .../eclipse/ui/internal/dialogs/cpd/ItemDetailToolTip.java | 0 .../ui/internal/dialogs/cpd/NameAndDescriptionToolTip.java | 0 .../ui/internal/dialogs/cpd/ShortcutLabelProvider.java | 0 .../ui/internal/dialogs/cpd/ShowUsedActionSetsFilter.java | 0 .../org/eclipse/ui/internal/dialogs/cpd/TableToolTip.java | 0 .../org/eclipse/ui/internal/dialogs/cpd/TreeManager.java | 0 .../dialogs/cpd/UnavailableContributionItemCheckListener.java | 0 .../org/eclipse/ui/internal/e4/compatibility/ActionBars.java | 0 .../ui/internal/e4/compatibility/CompatibilityEditor.java | 0 .../ui/internal/e4/compatibility/CompatibilityPart.java | 0 .../ui/internal/e4/compatibility/CompatibilityView.java | 0 .../org/eclipse/ui/internal/e4/compatibility/E4Util.java | 0 .../ui/internal/e4/compatibility/ModeledFolderLayout.java | 0 .../ui/internal/e4/compatibility/ModeledPageLayout.java | 0 .../ui/internal/e4/compatibility/ModeledPageLayoutUtils.java | 0 .../e4/compatibility/ModeledPlaceholderFolderLayout.java | 0 .../ui/internal/e4/compatibility/ModeledViewLayout.java | 0 .../ui/internal/e4/compatibility/SelectionService.java | 0 .../org/eclipse/ui/internal/e4/migration/InfoReader.java | 0 .../org/eclipse/ui/internal/e4/migration/MementoReader.java | 0 .../eclipse/ui/internal/e4/migration/PerspectiveBuilder.java | 0 .../eclipse/ui/internal/e4/migration/PerspectiveReader.java | 0 .../eclipse/ui/internal/expressions/ActivePartExpression.java | 0 .../ui/internal/expressions/AlwaysEnabledExpression.java | 0 .../ui/internal/expressions/LegacyActionSetExpression.java | 0 .../internal/expressions/LegacyEditorActionBarExpression.java | 0 .../expressions/LegacyEditorContributionExpression.java | 0 .../internal/expressions/LegacySelectionEnablerWrapper.java | 0 .../expressions/LegacyViewContributionExpression.java | 0 .../ui/internal/expressions/WorkbenchWindowExpression.java | 0 .../org/eclipse/ui/internal/handlers/AbstractSaveHandler.java | 0 .../ui/internal/handlers/ActionCommandMappingService.java | 0 .../ui/internal/handlers/ActionDelegateHandlerProxy.java | 0 .../ui/internal/handlers/ActiveContextInfoHandler.java | 0 .../ui/internal/handlers/CloseAllPerspectivesHandler.java | 0 .../org/eclipse/ui/internal/handlers/ClosePartHandler.java | 0 .../eclipse/ui/internal/handlers/ClosePerspectiveHandler.java | 0 .../ui/internal/handlers/CommandLegacyActionWrapper.java | 0 .../org/eclipse/ui/internal/handlers/ContextMenuHandler.java | 0 .../org/eclipse/ui/internal/handlers/CyclePageHandler.java | 0 .../org/eclipse/ui/internal/handlers/DirtyStateTracker.java | 0 .../org/eclipse/ui/internal/handlers/DisplayHelpHandler.java | 0 .../org/eclipse/ui/internal/handlers/DynamicHelpHandler.java | 0 .../org/eclipse/ui/internal/handlers/E4HandlerProxy.java | 0 .../eclipse/ui/internal/handlers/EditActionSetsHandler.java | 0 .../ui/internal/handlers/ExecutableExtensionHandler.java | 0 .../org/eclipse/ui/internal/handlers/FullScreenHandler.java | 0 .../org/eclipse/ui/internal/handlers/HandlerActivation.java | 0 .../org/eclipse/ui/internal/handlers/HandlerPersistence.java | 0 .../org/eclipse/ui/internal/handlers/HandlerProxy.java | 0 .../org/eclipse/ui/internal/handlers/HelpContentsHandler.java | 0 .../org/eclipse/ui/internal/handlers/HelpSearchHandler.java | 0 .../org/eclipse/ui/internal/handlers/HideTrimBarsHandler.java | 0 .../ui/internal/handlers/IActionCommandMappingService.java | 0 .../ui/internal/handlers/IWorkbenchWindowHandlerDelegate.java | 0 .../org/eclipse/ui/internal/handlers/IntroHandler.java | 0 .../eclipse/ui/internal/handlers/LegacyHandlerService.java | 0 .../org/eclipse/ui/internal/handlers/LockToolBarHandler.java | 0 .../org/eclipse/ui/internal/handlers/MaximizePartHandler.java | 0 .../org/eclipse/ui/internal/handlers/MinimizePartHandler.java | 0 .../org/eclipse/ui/internal/handlers/NewEditorHandler.java | 0 .../eclipse/ui/internal/handlers/OpenInNewWindowHandler.java | 0 .../org/eclipse/ui/internal/handlers/PinEditorHandler.java | 0 .../eclipse/ui/internal/handlers/PropertyDialogHandler.java | 0 .../org/eclipse/ui/internal/handlers/QuickMenuHandler.java | 0 .../org/eclipse/ui/internal/handlers/QuitHandler.java | 0 .../eclipse/ui/internal/handlers/ResetPerspectiveHandler.java | 0 .../eclipse/ui/internal/handlers/RestartWorkbenchHandler.java | 0 .../org/eclipse/ui/internal/handlers/ReuseEditorTester.java | 0 .../org/eclipse/ui/internal/handlers/SaveAllHandler.java | 0 .../org/eclipse/ui/internal/handlers/SaveAsHandler.java | 0 .../org/eclipse/ui/internal/handlers/SaveHandler.java | 0 .../eclipse/ui/internal/handlers/SavePerspectiveHandler.java | 0 .../org/eclipse/ui/internal/handlers/SelectAllHandler.java | 0 .../eclipse/ui/internal/handlers/ShowKeyAssistHandler.java | 0 .../ui/internal/handlers/ShowPreferencePageHandler.java | 0 .../org/eclipse/ui/internal/handlers/SpyHandler.java | 0 .../eclipse/ui/internal/handlers/ToggleCoolbarHandler.java | 0 .../eclipse/ui/internal/handlers/ToggleStatusBarHandler.java | 0 .../org/eclipse/ui/internal/handlers/TraversePageHandler.java | 0 .../org/eclipse/ui/internal/handlers/WidgetMethodHandler.java | 0 .../org/eclipse/ui/internal/handlers/WizardHandler.java | 0 .../ui/internal/handlers/WorkbenchWindowHandlerDelegate.java | 0 .../org/eclipse/ui/internal/help/CommandHelpServiceImpl.java | 0 .../org/eclipse/ui/internal/help/HelpServiceImpl.java | 0 .../org/eclipse/ui/internal/help/WorkbenchHelpSystem.java | 0 .../org/eclipse/ui/internal/intro/IIntroConstants.java | 0 .../org/eclipse/ui/internal/intro/IIntroDescriptor.java | 0 .../org/eclipse/ui/internal/intro/IIntroRegistry.java | 0 .../org/eclipse/ui/internal/intro/IntroDescriptor.java | 0 .../org/eclipse/ui/internal/intro/IntroMessages.java | 0 .../org/eclipse/ui/internal/intro/IntroRegistry.java | 0 .../org/eclipse/ui/internal/intro/intro.properties | 0 .../org/eclipse/ui/internal/keys/AbstractKeyFormatter.java | 0 .../eclipse/ui/internal/keys/AbstractKeyFormatter.properties | 0 .../ui/internal/keys/AbstractModifierKeyComparator.java | 0 .../ui/internal/keys/AlphabeticModifierKeyComparator.java | 0 .../org/eclipse/ui/internal/keys/BindingPersistence.java | 0 .../org/eclipse/ui/internal/keys/BindingService.java | 0 .../org/eclipse/ui/internal/keys/CategoryPatternFilter.java | 0 .../org/eclipse/ui/internal/keys/CompactKeyFormatter.java | 0 .../org/eclipse/ui/internal/keys/EmacsKeyFormatter.java | 0 .../org/eclipse/ui/internal/keys/EmacsKeyFormatter.properties | 0 .../org/eclipse/ui/internal/keys/FormalKeyFormatter.java | 0 .../org/eclipse/ui/internal/keys/GlobalKeyAssistDialog.java | 0 .../org/eclipse/ui/internal/keys/GnomeKeyFormatter.properties | 0 .../org/eclipse/ui/internal/keys/ImageFactory.java | 0 .../org/eclipse/ui/internal/keys/KdeKeyFormatter.properties | 0 .../org/eclipse/ui/internal/keys/KeyAssistDialog.properties | 0 .../org/eclipse/ui/internal/keys/KeyAssistMessages.java | 0 .../eclipse/ui/internal/keys/KeysPreferenceFiltersDialog.java | 0 .../org/eclipse/ui/internal/keys/KeysPreferencePage.java | 0 .../eclipse/ui/internal/keys/KeysPreferencePage.properties | 0 .../org/eclipse/ui/internal/keys/MacKeyFormatter.java | 0 .../org/eclipse/ui/internal/keys/MacKeyFormatter.properties | 0 .../org/eclipse/ui/internal/keys/NativeKeyFormatter.java | 0 .../eclipse/ui/internal/keys/NativeKeyFormatter.properties | 0 .../eclipse/ui/internal/keys/NativeModifierKeyComparator.java | 0 .../eclipse/ui/internal/keys/NewKeysPreferenceMessages.java | 0 .../org/eclipse/ui/internal/keys/NewKeysPreferencePage.java | 0 .../eclipse/ui/internal/keys/NewKeysPreferencePage.properties | 0 .../org/eclipse/ui/internal/keys/NoKeysPreferencePage.java | 0 .../eclipse/ui/internal/keys/WindowsKeyFormatter.properties | 0 .../org/eclipse/ui/internal/keys/WorkbenchKeyboard.java | 0 .../org/eclipse/ui/internal/keys/WorkbenchKeyboard.properties | 0 .../org/eclipse/ui/internal/keys/model/BindingElement.java | 0 .../org/eclipse/ui/internal/keys/model/BindingModel.java | 0 .../org/eclipse/ui/internal/keys/model/CommonModel.java | 0 .../org/eclipse/ui/internal/keys/model/ConflictModel.java | 0 .../org/eclipse/ui/internal/keys/model/ContextElement.java | 0 .../org/eclipse/ui/internal/keys/model/ContextModel.java | 0 .../org/eclipse/ui/internal/keys/model/KeyController.java | 0 .../org/eclipse/ui/internal/keys/model/ModelElement.java | 0 .../org/eclipse/ui/internal/keys/model/SchemeElement.java | 0 .../org/eclipse/ui/internal/keys/model/SchemeModel.java | 0 .../org/eclipse/ui/internal/keys/show/ShowKeysListener.java | 0 .../eclipse/ui/internal/keys/show/ShowKeysToggleHandler.java | 0 .../org/eclipse/ui/internal/keys/show/ShowKeysUI.java | 0 .../org/eclipse/ui/internal/layout/CacheWrapper.java | 0 .../org/eclipse/ui/internal/layout/CellData.java | 0 .../org/eclipse/ui/internal/layout/CellLayout.java | 0 .../org/eclipse/ui/internal/layout/CellLayoutUtil.java | 0 .../org/eclipse/ui/internal/layout/GridInfo.java | 0 .../org/eclipse/ui/internal/layout/ICachingLayout.java | 0 .../org/eclipse/ui/internal/layout/LayoutCache.java | 0 .../org/eclipse/ui/internal/layout/LayoutUtil.java | 0 .../org/eclipse/ui/internal/layout/Row.java | 0 .../org/eclipse/ui/internal/layout/SizeCache.java | 0 .../org/eclipse/ui/internal/menus/CommandMessages.java | 0 .../CompatibilityWorkbenchWindowControlContribution.java | 0 .../ui/internal/menus/ContributionFactoryGenerator.java | 0 .../org/eclipse/ui/internal/menus/ContributionRoot.java | 0 .../ui/internal/menus/ControlContributionRegistry.java | 0 .../ui/internal/menus/DynamicMenuContributionItem.java | 0 .../ui/internal/menus/DynamicToolBarContributionItem.java | 0 .../eclipse/ui/internal/menus/FocusControlSourceProvider.java | 0 .../org/eclipse/ui/internal/menus/IActionSetsListener.java | 0 .../ui/internal/menus/InternalControlContribution.java | 0 .../eclipse/ui/internal/menus/LegacyActionPersistence.java | 0 .../org/eclipse/ui/internal/menus/MenuAdditionCacheEntry.java | 0 .../org/eclipse/ui/internal/menus/MenuFactoryGenerator.java | 0 .../org/eclipse/ui/internal/menus/MenuHelper.java | 0 .../org/eclipse/ui/internal/menus/MenuLocationURI.java | 0 .../org/eclipse/ui/internal/menus/MenuPersistence.java | 0 .../org/eclipse/ui/internal/menus/SlaveMenuService.java | 0 .../org/eclipse/ui/internal/menus/WorkbenchMenuService.java | 0 .../org/eclipse/ui/internal/menus/messages.properties | 0 .../org/eclipse/ui/internal/messages.properties | 0 .../org/eclipse/ui/internal/misc/ExternalEditor.java | 0 .../ui/internal/misc/ExternalProgramImageDescriptor.java | 0 .../org/eclipse/ui/internal/misc/Policy.java | 0 .../org/eclipse/ui/internal/misc/ProgramImageDescriptor.java | 0 .../org/eclipse/ui/internal/misc/StatusUtil.java | 0 .../org/eclipse/ui/internal/misc/TestPartListener.java | 0 .../org/eclipse/ui/internal/misc/TextMatcher.java | 0 .../org/eclipse/ui/internal/misc/UIListenerLogging.java | 0 .../org/eclipse/ui/internal/misc/UIStats.java | 0 .../org/eclipse/ui/internal/model/ContributionService.java | 0 .../internal/operations/AdvancedValidationUserApprover.java | 0 .../operations/TimeTriggeredProgressMonitorDialog.java | 0 .../ui/internal/operations/WorkbenchOperationSupport.java | 0 .../eclipse/ui/internal/part/IMultiPageEditorSiteHolder.java | 0 .../org/eclipse/ui/internal/part/IPageSiteHolder.java | 0 .../org/eclipse/ui/internal/part/NullEditorInput.java | 0 .../org/eclipse/ui/internal/part/StatusPart.java | 0 .../org/eclipse/ui/internal/preferences/Base64.java | 0 .../eclipse/ui/internal/preferences/IDynamicPropertyMap.java | 0 .../org/eclipse/ui/internal/preferences/IPropertyMap.java | 0 .../eclipse/ui/internal/preferences/IPropertyMapListener.java | 0 .../ui/internal/preferences/PreferenceTransferElement.java | 0 .../ui/internal/preferences/PreferenceTransferManager.java | 0 .../ui/internal/preferences/PreferencesSettingsTransfer.java | 0 .../eclipse/ui/internal/preferences/PropertyListenerList.java | 0 .../eclipse/ui/internal/preferences/PropertyMapAdapter.java | 0 .../org/eclipse/ui/internal/preferences/PropertyMapUnion.java | 0 .../internal/preferences/SettingsTransferRegistryReader.java | 0 .../org/eclipse/ui/internal/preferences/ThemeAdapter.java | 0 .../preferences/WorkbenchPreferenceExpressionNode.java | 0 .../preferences/WorkbenchPreferenceExtensionNode.java | 0 .../ui/internal/preferences/WorkbenchSettingsTransfer.java | 0 .../ui/internal/preferences/WorkingCopyPreferences.java | 0 .../ui/internal/preferences/WorkingSetPropertyPage.java | 0 .../ui/internal/preferences/WorkingSetSettingsTransfer.java | 0 .../eclipse/ui/internal/progress/AbstractProgressViewer.java | 0 .../org/eclipse/ui/internal/progress/AnimationItem.java | 0 .../org/eclipse/ui/internal/progress/AnimationManager.java | 0 .../org/eclipse/ui/internal/progress/BlockedJobsDialog.java | 0 .../eclipse/ui/internal/progress/DetailedProgressViewer.java | 0 .../org/eclipse/ui/internal/progress/FinishedJobs.java | 0 .../org/eclipse/ui/internal/progress/GroupInfo.java | 0 .../org/eclipse/ui/internal/progress/IAnimationProcessor.java | 0 .../org/eclipse/ui/internal/progress/IJobBusyListener.java | 0 .../ui/internal/progress/IJobProgressManagerListener.java | 0 .../ui/internal/progress/IProgressUpdateCollector.java | 0 .../org/eclipse/ui/internal/progress/JobInfo.java | 0 .../org/eclipse/ui/internal/progress/JobSnapshot.java | 0 .../org/eclipse/ui/internal/progress/JobTreeElement.java | 0 .../ui/internal/progress/JobsViewPreferenceDialog.java | 0 .../eclipse/ui/internal/progress/ProgressAnimationItem.java | 0 .../ui/internal/progress/ProgressAnimationProcessor.java | 0 .../eclipse/ui/internal/progress/ProgressCanvasViewer.java | 0 .../eclipse/ui/internal/progress/ProgressContentProvider.java | 0 .../org/eclipse/ui/internal/progress/ProgressInfoItem.java | 0 .../eclipse/ui/internal/progress/ProgressLabelProvider.java | 0 .../org/eclipse/ui/internal/progress/ProgressManager.java | 0 .../org/eclipse/ui/internal/progress/ProgressManagerUtil.java | 0 .../org/eclipse/ui/internal/progress/ProgressMessages.java | 0 .../ui/internal/progress/ProgressMonitorFocusJobDialog.java | 0 .../ui/internal/progress/ProgressMonitorJobsDialog.java | 0 .../org/eclipse/ui/internal/progress/ProgressRegion.java | 0 .../org/eclipse/ui/internal/progress/ProgressView.java | 0 .../org/eclipse/ui/internal/progress/ProgressViewUpdater.java | 0 .../ui/internal/progress/ProgressViewerContentProvider.java | 0 .../ui/internal/progress/ProgressViewerLabelProvider.java | 0 .../org/eclipse/ui/internal/progress/StatusAdapterHelper.java | 0 .../org/eclipse/ui/internal/progress/SubTaskInfo.java | 0 .../eclipse/ui/internal/progress/TaskBarProgressManager.java | 0 .../org/eclipse/ui/internal/progress/TaskInfo.java | 0 .../ui/internal/progress/WorkbenchSiteProgressService.java | 0 .../org/eclipse/ui/internal/progress/messages.properties | 0 .../provisional/application/IActionBarConfigurer2.java | 0 .../org/eclipse/ui/internal/quickaccess/CamelUtil.java | 0 .../ui/internal/quickaccess/PreviousPicksProvider.java | 0 .../eclipse/ui/internal/quickaccess/QuickAccessContents.java | 0 .../eclipse/ui/internal/quickaccess/QuickAccessDialog.java | 0 .../org/eclipse/ui/internal/quickaccess/QuickAccessEntry.java | 0 .../ui/internal/quickaccess/QuickAccessExtensionManager.java | 0 .../eclipse/ui/internal/quickaccess/QuickAccessHandler.java | 0 .../eclipse/ui/internal/quickaccess/QuickAccessMatcher.java | 0 .../eclipse/ui/internal/quickaccess/QuickAccessMessages.java | 0 .../eclipse/ui/internal/quickaccess/QuickAccessProvider.java | 0 .../org/eclipse/ui/internal/quickaccess/SearchField.java | 0 .../org/eclipse/ui/internal/quickaccess/messages.properties | 0 .../ui/internal/quickaccess/providers/ActionElement.java | 0 .../ui/internal/quickaccess/providers/ActionProvider.java | 0 .../ui/internal/quickaccess/providers/CommandElement.java | 0 .../ui/internal/quickaccess/providers/CommandProvider.java | 0 .../ui/internal/quickaccess/providers/EditorElement.java | 0 .../ui/internal/quickaccess/providers/EditorProvider.java | 0 .../ui/internal/quickaccess/providers/HelpSearchElement.java | 0 .../ui/internal/quickaccess/providers/HelpSearchProvider.java | 0 .../ui/internal/quickaccess/providers/PerspectiveElement.java | 0 .../internal/quickaccess/providers/PerspectiveProvider.java | 0 .../ui/internal/quickaccess/providers/PreferenceElement.java | 0 .../ui/internal/quickaccess/providers/PreferenceProvider.java | 0 .../ui/internal/quickaccess/providers/PropertiesElement.java | 0 .../ui/internal/quickaccess/providers/PropertiesProvider.java | 0 .../ui/internal/quickaccess/providers/ViewElement.java | 0 .../ui/internal/quickaccess/providers/ViewProvider.java | 0 .../ui/internal/quickaccess/providers/WizardElement.java | 0 .../ui/internal/quickaccess/providers/WizardProvider.java | 0 .../org/eclipse/ui/internal/registry/ActionSetDescriptor.java | 0 .../org/eclipse/ui/internal/registry/ActionSetRegistry.java | 0 .../ui/internal/registry/CategorizedPageRegistryReader.java | 0 .../org/eclipse/ui/internal/registry/Category.java | 0 .../org/eclipse/ui/internal/registry/EditorDescriptor.java | 0 .../org/eclipse/ui/internal/registry/EditorRegistry.java | 0 .../eclipse/ui/internal/registry/EditorRegistryReader.java | 0 .../org/eclipse/ui/internal/registry/FileEditorMapping.java | 0 .../org/eclipse/ui/internal/registry/IActionSet.java | 0 .../eclipse/ui/internal/registry/IActionSetDescriptor.java | 0 .../ui/internal/registry/IWorkbenchRegistryConstants.java | 0 .../ui/internal/registry/ImportExportPespectiveHandler.java | 0 .../org/eclipse/ui/internal/registry/KeywordRegistry.java | 0 .../eclipse/ui/internal/registry/PerspectiveDescriptor.java | 0 .../ui/internal/registry/PerspectiveParameterValues.java | 0 .../org/eclipse/ui/internal/registry/PerspectiveRegistry.java | 0 .../ui/internal/registry/PreferencePageParameterValues.java | 0 .../ui/internal/registry/PreferencePageRegistryReader.java | 0 .../internal/registry/PreferenceTransferRegistryReader.java | 0 .../ui/internal/registry/PropertyPagesRegistryReader.java | 0 .../org/eclipse/ui/internal/registry/RegistryReader.java | 0 .../eclipse/ui/internal/registry/StickyViewDescriptor.java | 0 .../org/eclipse/ui/internal/registry/ViewCategory.java | 0 .../org/eclipse/ui/internal/registry/ViewDescriptor.java | 0 .../org/eclipse/ui/internal/registry/ViewParameterValues.java | 0 .../org/eclipse/ui/internal/registry/ViewRegistry.java | 0 .../eclipse/ui/internal/registry/WizardParameterValues.java | 0 .../eclipse/ui/internal/registry/WizardsRegistryReader.java | 0 .../eclipse/ui/internal/registry/WorkingSetDescriptor.java | 0 .../org/eclipse/ui/internal/registry/WorkingSetRegistry.java | 0 .../ui/internal/registry/WorkingSetRegistryReader.java | 0 .../eclipse/ui/internal/services/ActionSetSourceProvider.java | 0 .../org/eclipse/ui/internal/services/EvaluationReference.java | 0 .../eclipse/ui/internal/services/EvaluationResultCache.java | 0 .../org/eclipse/ui/internal/services/EvaluationService.java | 0 .../ui/internal/services/EvaluationServiceFactory.java | 0 .../org/eclipse/ui/internal/services/ExpressionAuthority.java | 0 .../eclipse/ui/internal/services/IEvaluationResultCache.java | 0 .../org/eclipse/ui/internal/services/INestable.java | 0 .../eclipse/ui/internal/services/IServiceLocatorCreator.java | 0 .../ui/internal/services/IWorkbenchLocationService.java | 0 .../org/eclipse/ui/internal/services/LogThrottle.java | 0 .../org/eclipse/ui/internal/services/MenuSourceProvider.java | 0 .../eclipse/ui/internal/services/PreferencePersistence.java | 0 .../org/eclipse/ui/internal/services/RegistryPersistence.java | 0 .../org/eclipse/ui/internal/services/ServiceLocator.java | 0 .../eclipse/ui/internal/services/ServiceLocatorCreator.java | 0 .../eclipse/ui/internal/services/SlaveEvaluationService.java | 0 .../ui/internal/services/SourcePriorityNameMapping.java | 0 .../eclipse/ui/internal/services/SourceProviderService.java | 0 .../ui/internal/services/WorkbenchLocationService.java | 0 .../ui/internal/services/WorkbenchServiceRegistry.java | 0 .../eclipse/ui/internal/services/WorkbenchSourceProvider.java | 0 .../org/eclipse/ui/internal/splash/EclipseSplashHandler.java | 0 .../org/eclipse/ui/internal/splash/SplashHandlerFactory.java | 0 .../ui/internal/statushandlers/DefaultDetailsArea.java | 0 .../ui/internal/statushandlers/DetailsAreaManager.java | 0 .../ui/internal/statushandlers/IStatusDialogConstants.java | 0 .../eclipse/ui/internal/statushandlers/InternalDialog.java | 0 .../ui/internal/statushandlers/LabelProviderWrapper.java | 0 .../ui/internal/statushandlers/StackTraceSupportArea.java | 0 .../ui/internal/statushandlers/StatusHandlerDescriptor.java | 0 .../internal/statushandlers/StatusHandlerDescriptorsMap.java | 0 .../statushandlers/StatusHandlerProductBindingDescriptor.java | 0 .../ui/internal/statushandlers/StatusHandlerRegistry.java | 0 .../org/eclipse/ui/internal/statushandlers/SupportTray.java | 0 .../statushandlers/WorkbenchStatusDialogManagerImpl.java | 0 .../org/eclipse/ui/internal/statushandlers/package.html | 0 .../eclipse/ui/internal/testing/ContributionInfoMessages.java | 0 .../ui/internal/testing/PluginContributionAdapterFactory.java | 0 .../eclipse/ui/internal/testing/WorkbenchPartTestable.java | 0 .../org/eclipse/ui/internal/testing/WorkbenchTestable.java | 0 .../org/eclipse/ui/internal/testing/messages.properties | 0 .../eclipse/ui/internal/themes/CascadingColorRegistry.java | 0 .../org/eclipse/ui/internal/themes/CascadingFontRegistry.java | 0 .../org/eclipse/ui/internal/themes/CascadingMap.java | 0 .../org/eclipse/ui/internal/themes/CascadingTheme.java | 0 .../eclipse/ui/internal/themes/ColorAndFontProviderImpl.java | 0 .../org/eclipse/ui/internal/themes/ColorDefinition.java | 0 .../ui/internal/themes/ColorsAndFontsPreferencePage.java | 0 .../internal/themes/ColorsAndFontsPreferencePage.properties | 0 .../org/eclipse/ui/internal/themes/FontDefinition.java | 0 .../internal/themes/ICategorizedThemeElementDefinition.java | 0 .../org/eclipse/ui/internal/themes/IEditable.java | 0 .../ui/internal/themes/IHierarchalThemeElementDefinition.java | 0 .../org/eclipse/ui/internal/themes/IThemeDescriptor.java | 0 .../eclipse/ui/internal/themes/IThemeElementDefinition.java | 0 .../org/eclipse/ui/internal/themes/IThemeRegistry.java | 0 .../org/eclipse/ui/internal/themes/LightColorFactory.java | 0 .../eclipse/ui/internal/themes/RGBBrightnessColorFactory.java | 0 .../org/eclipse/ui/internal/themes/RGBContrastFactory.java | 0 .../org/eclipse/ui/internal/themes/RGBInfoColorFactory.java | 0 .../ui/internal/themes/RGBVisibleContrastColorFactory.java | 0 .../org/eclipse/ui/internal/themes/Theme.java | 0 .../org/eclipse/ui/internal/themes/Theme.properties | 0 .../org/eclipse/ui/internal/themes/ThemeDescriptor.java | 0 .../org/eclipse/ui/internal/themes/ThemeElementCategory.java | 0 .../eclipse/ui/internal/themes/ThemeElementDefinition.java | 0 .../org/eclipse/ui/internal/themes/ThemeElementHelper.java | 0 .../org/eclipse/ui/internal/themes/ThemeRegistry.java | 0 .../org/eclipse/ui/internal/themes/ThemeRegistryReader.java | 0 .../eclipse/ui/internal/themes/ThemeRegistryReader.properties | 0 .../org/eclipse/ui/internal/themes/ThemesExtension.java | 0 .../org/eclipse/ui/internal/themes/WorkbenchPreview.java | 0 .../org/eclipse/ui/internal/themes/WorkbenchThemeManager.java | 0 .../eclipse/ui/internal/tweaklets/DummyTitlePathUpdater.java | 0 .../eclipse/ui/internal/tweaklets/InterceptContributions.java | 0 .../org/eclipse/ui/internal/tweaklets/TabBehaviour.java | 0 .../org/eclipse/ui/internal/tweaklets/TabBehaviourMRU.java | 0 .../org/eclipse/ui/internal/tweaklets/TitlePathUpdater.java | 0 .../org/eclipse/ui/internal/tweaklets/Tweaklets.java | 0 .../org/eclipse/ui/internal/util/BundleUtility.java | 0 .../eclipse/ui/internal/util/ConfigurationElementMemento.java | 0 .../org/eclipse/ui/internal/util/Descriptors.java | 0 .../org/eclipse/ui/internal/util/ImageSupport.java | 0 .../org/eclipse/ui/internal/util/PrefUtil.java | 0 .../org/eclipse/ui/internal/util/Util.java | 0 .../ui/internal/wizards/AbstractExtensionWizardRegistry.java | 0 .../eclipse/ui/internal/wizards/AbstractWizardRegistry.java | 0 .../org/eclipse/ui/internal/wizards/ExportWizardRegistry.java | 0 .../org/eclipse/ui/internal/wizards/ImportWizardRegistry.java | 0 .../org/eclipse/ui/internal/wizards/NewWizardRegistry.java | 0 .../wizards/preferences/PreferencesContentProvider.java | 0 .../internal/wizards/preferences/PreferencesExportWizard.java | 0 .../internal/wizards/preferences/PreferencesImportWizard.java | 0 .../ui/internal/wizards/preferences/PreferencesMessages.java | 0 .../wizards/preferences/WizardPreferencesExportPage1.java | 0 .../wizards/preferences/WizardPreferencesImportPage1.java | 0 .../internal/wizards/preferences/WizardPreferencesPage.java | 0 .../ui/internal/wizards/preferences/messages.properties | 0 .../org/eclipse/ui/intro/IIntroManager.java | 0 .../org/eclipse/ui/intro/IIntroPart.java | 0 .../org/eclipse/ui/intro/IIntroSite.java | 0 .../org/eclipse/ui/intro/IntroContentDetector.java | 0 .../org/eclipse/ui/intro/package.html | 0 .../org/eclipse/ui/keys/CharacterKey.java | 0 .../org/eclipse/ui/keys/IBindingService.java | 0 .../org/eclipse/ui/keys/IKeyFormatter.java | 0 .../{Eclipse UI => eclipseui}/org/eclipse/ui/keys/Key.java | 0 .../org/eclipse/ui/keys/KeyFormatterFactory.java | 0 .../org/eclipse/ui/keys/KeySequence.java | 0 .../org/eclipse/ui/keys/KeyStroke.java | 0 .../org/eclipse/ui/keys/ModifierKey.java | 0 .../org/eclipse/ui/keys/NaturalKey.java | 0 .../org/eclipse/ui/keys/ParseException.java | 0 .../org/eclipse/ui/keys/SWTKeySupport.java | 0 .../org/eclipse/ui/keys/SpecialKey.java | 0 .../org/eclipse/ui/keys/package.html | 0 .../org/eclipse/ui/menus/AbstractContributionFactory.java | 0 .../org/eclipse/ui/menus/AbstractWorkbenchTrimWidget.java | 0 .../org/eclipse/ui/menus/CommandContributionItem.java | 0 .../eclipse/ui/menus/CommandContributionItemParameter.java | 0 .../org/eclipse/ui/menus/ExtensionContributionFactory.java | 0 .../org/eclipse/ui/menus/IContributionRoot.java | 0 .../org/eclipse/ui/menus/IMenuService.java | 0 .../org/eclipse/ui/menus/IWorkbenchContribution.java | 0 .../org/eclipse/ui/menus/IWorkbenchWidget.java | 0 .../org/eclipse/ui/menus/MenuUtil.java | 0 .../org/eclipse/ui/menus/UIElement.java | 0 .../eclipse/ui/menus/WorkbenchWindowControlContribution.java | 0 .../org/eclipse/ui/menus/package.html | 0 .../org/eclipse/ui/model/AdaptableList.java | 0 .../org/eclipse/ui/model/BaseWorkbenchContentProvider.java | 0 .../org/eclipse/ui/model/ContributionComparator.java | 0 .../org/eclipse/ui/model/IComparableContribution.java | 0 .../org/eclipse/ui/model/IContributionService.java | 0 .../org/eclipse/ui/model/IWorkbenchAdapter.java | 0 .../org/eclipse/ui/model/IWorkbenchAdapter2.java | 0 .../org/eclipse/ui/model/IWorkbenchAdapter3.java | 0 .../org/eclipse/ui/model/PerspectiveLabelProvider.java | 0 .../org/eclipse/ui/model/WorkbenchAdapter.java | 0 .../org/eclipse/ui/model/WorkbenchLabelProvider.java | 0 .../org/eclipse/ui/model/WorkbenchPartLabelProvider.java | 0 .../org/eclipse/ui/model/WorkbenchViewerComparator.java | 0 .../org/eclipse/ui/model/WorkbenchViewerSorter.java | 0 .../org/eclipse/ui/model/package.html | 0 .../org/eclipse/ui/operations/IWorkbenchOperationSupport.java | 0 .../ui/operations/LinearUndoViolationUserApprover.java | 0 .../org/eclipse/ui/operations/NonLocalUndoUserApprover.java | 0 .../eclipse/ui/operations/OperationHistoryActionHandler.java | 0 .../org/eclipse/ui/operations/RedoActionHandler.java | 0 .../org/eclipse/ui/operations/UndoActionHandler.java | 0 .../org/eclipse/ui/operations/UndoRedoActionGroup.java | 0 .../org/eclipse/ui/operations/package.html | 0 .../{Eclipse UI => eclipseui}/org/eclipse/ui/package.html | 0 .../org/eclipse/ui/part/AbstractMultiEditor.java | 0 .../org/eclipse/ui/part/CellEditorActionHandler.java | 0 .../org/eclipse/ui/part/CoolItemGroupMarker.java | 0 .../org/eclipse/ui/part/DrillDownAdapter.java | 0 .../org/eclipse/ui/part/DrillDownComposite.java | 0 .../org/eclipse/ui/part/DrillFrame.java | 0 .../org/eclipse/ui/part/DrillStack.java | 0 .../org/eclipse/ui/part/EditorActionBarContributor.java | 0 .../org/eclipse/ui/part/EditorInputTransfer.java | 0 .../org/eclipse/ui/part/EditorPart.java | 0 .../org/eclipse/ui/part/IContributedContentsView.java | 0 .../org/eclipse/ui/part/IDropActionDelegate.java | 0 .../{Eclipse UI => eclipseui}/org/eclipse/ui/part/IPage.java | 0 .../org/eclipse/ui/part/IPageBookViewPage.java | 0 .../org/eclipse/ui/part/IPageSite.java | 0 .../org/eclipse/ui/part/ISetSelectionTarget.java | 0 .../org/eclipse/ui/part/IShowInSource.java | 0 .../org/eclipse/ui/part/IShowInTarget.java | 0 .../org/eclipse/ui/part/IShowInTargetList.java | 0 .../org/eclipse/ui/part/IWorkbenchPartOrientation.java | 0 .../org/eclipse/ui/part/IntroPart.java | 0 .../org/eclipse/ui/part/MessagePage.java | 0 .../org/eclipse/ui/part/MultiEditor.java | 0 .../org/eclipse/ui/part/MultiEditorInput.java | 0 .../eclipse/ui/part/MultiPageEditorActionBarContributor.java | 0 .../org/eclipse/ui/part/MultiPageEditorPart.java | 0 .../org/eclipse/ui/part/MultiPageEditorSite.java | 0 .../org/eclipse/ui/part/MultiPageSelectionProvider.java | 0 .../{Eclipse UI => eclipseui}/org/eclipse/ui/part/Page.java | 0 .../org/eclipse/ui/part/PageBook.java | 0 .../org/eclipse/ui/part/PageBookView.java | 0 .../org/eclipse/ui/part/PageSite.java | 0 .../org/eclipse/ui/part/PageSwitcher.java | 0 .../org/eclipse/ui/part/PluginDropAdapter.java | 0 .../org/eclipse/ui/part/PluginTransfer.java | 0 .../org/eclipse/ui/part/PluginTransferData.java | 0 .../org/eclipse/ui/part/ShowInContext.java | 0 .../org/eclipse/ui/part/ViewPart.java | 0 .../org/eclipse/ui/part/WorkbenchPart.java | 0 .../org/eclipse/ui/part/package.html | 0 .../org/eclipse/ui/plugin/AbstractUIPlugin.java | 0 .../org/eclipse/ui/plugin/package.html | 0 .../eclipse/ui/preferences/IWorkbenchPreferenceContainer.java | 0 .../org/eclipse/ui/preferences/IWorkingCopyManager.java | 0 .../org/eclipse/ui/preferences/ScopedPreferenceStore.java | 0 .../org/eclipse/ui/preferences/SettingsTransfer.java | 0 .../org/eclipse/ui/preferences/ViewPreferencesAction.java | 0 .../org/eclipse/ui/preferences/ViewSettingsDialog.java | 0 .../org/eclipse/ui/preferences/WizardPropertyPage.java | 0 .../org/eclipse/ui/preferences/WorkingCopyManager.java | 0 .../org/eclipse/ui/preferences/package.html | 0 .../org/eclipse/ui/progress/DeferredTreeContentManager.java | 0 .../org/eclipse/ui/progress/IDeferredWorkbenchAdapter.java | 0 .../org/eclipse/ui/progress/IElementCollector.java | 0 .../org/eclipse/ui/progress/IJobRunnable.java | 0 .../org/eclipse/ui/progress/IProgressConstants.java | 0 .../org/eclipse/ui/progress/IProgressConstants2.java | 0 .../org/eclipse/ui/progress/IProgressService.java | 0 .../eclipse/ui/progress/IWorkbenchSiteProgressService.java | 0 .../org/eclipse/ui/progress/PendingUpdateAdapter.java | 0 .../org/eclipse/ui/progress/UIJob.java | 0 .../org/eclipse/ui/progress/WorkbenchJob.java | 0 .../org/eclipse/ui/progress/package.html | 0 .../org/eclipse/ui/quickaccess/IQuickAccessComputer.java | 0 .../eclipse/ui/quickaccess/IQuickAccessComputerExtension.java | 0 .../org/eclipse/ui/quickaccess/QuickAccessElement.java | 0 .../org/eclipse/ui/services/AbstractServiceFactory.java | 0 .../org/eclipse/ui/services/IDisposable.java | 0 .../org/eclipse/ui/services/IEvaluationReference.java | 0 .../org/eclipse/ui/services/IEvaluationService.java | 0 .../org/eclipse/ui/services/IServiceLocator.java | 0 .../org/eclipse/ui/services/IServiceScopes.java | 0 .../org/eclipse/ui/services/IServiceWithSources.java | 0 .../org/eclipse/ui/services/ISourceProviderService.java | 0 .../org/eclipse/ui/services/package.html | 0 .../org/eclipse/ui/splash/AbstractSplashHandler.java | 0 .../org/eclipse/ui/splash/BasicSplashHandler.java | 0 .../org/eclipse/ui/splash/package.html | 0 .../eclipse/ui/statushandlers/AbstractStatusAreaProvider.java | 0 .../org/eclipse/ui/statushandlers/AbstractStatusHandler.java | 0 .../eclipse/ui/statushandlers/IStatusAdapterConstants.java | 0 .../org/eclipse/ui/statushandlers/StatusAdapter.java | 0 .../org/eclipse/ui/statushandlers/StatusManager.java | 0 .../org/eclipse/ui/statushandlers/WorkbenchErrorHandler.java | 0 .../ui/statushandlers/WorkbenchStatusDialogManager.java | 0 .../org/eclipse/ui/statushandlers/package.html | 0 .../org/eclipse/ui/swt/IFocusService.java | 0 .../{Eclipse UI => eclipseui}/org/eclipse/ui/swt/package.html | 0 .../org/eclipse/ui/themes/ColorUtil.java | 0 .../org/eclipse/ui/themes/IColorFactory.java | 0 .../org/eclipse/ui/themes/ITheme.java | 0 .../org/eclipse/ui/themes/IThemeManager.java | 0 .../org/eclipse/ui/themes/IThemePreview.java | 0 .../org/eclipse/ui/themes/RGBBlendColorFactory.java | 0 .../org/eclipse/ui/themes/package.html | 0 .../org/eclipse/ui/views/IStickyViewDescriptor.java | 0 .../org/eclipse/ui/views/IViewCategory.java | 0 .../org/eclipse/ui/views/IViewDescriptor.java | 0 .../org/eclipse/ui/views/IViewRegistry.java | 0 .../org/eclipse/ui/views/WorkbenchViewerSetup.java | 0 .../org/eclipse/ui/views/package.html | 0 .../org/eclipse/ui/wizards/IWizardCategory.java | 0 .../org/eclipse/ui/wizards/IWizardDescriptor.java | 0 .../org/eclipse/ui/wizards/IWizardRegistry.java | 0 .../org/eclipse/ui/wizards/package.html | 0 .../eclipse/ui/internal/editorsupport/ComponentSupport.java | 0 1220 files changed, 4 insertions(+), 4 deletions(-) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/e4/ui/workbench/addons/perspectiveswitcher/PerspectiveSwitcher.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/AbstractSourceProvider.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/ActiveShellExpression.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/BasicWorkingSetElementAdapter.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/ExtensionFactory.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/IActionBars.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/IActionBars2.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/IActionDelegate.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/IActionDelegate2.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/IActionDelegateWithEvent.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/IActionFilter.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/IAggregateWorkingSet.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/IContainmentAdapter.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/IDecoratorManager.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/IEditorActionBarContributor.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/IEditorActionDelegate.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/IEditorDescriptor.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/IEditorInput.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/IEditorLauncher.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/IEditorMatchingStrategy.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/IEditorPart.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/IEditorReference.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/IEditorRegistry.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/IEditorSite.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/IElementFactory.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/IExportWizard.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/IFileEditorMapping.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/IFolderLayout.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/IImportWizard.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/IInPlaceEditor.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/IInPlaceEditorInput.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/IKeyBindingService.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/ILocalWorkingSetManager.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/IMemento.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/INavigationHistory.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/INavigationLocation.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/INavigationLocationProvider.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/INestableKeyBindingService.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/INewWizard.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/INullSelectionListener.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/IObjectActionDelegate.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/IPageLayout.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/IPageListener.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/IPageService.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/IPartListener.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/IPartListener2.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/IPartService.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/IPathEditorInput.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/IPersistable.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/IPersistableEditor.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/IPersistableElement.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/IPerspectiveDescriptor.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/IPerspectiveFactory.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/IPerspectiveListener.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/IPerspectiveListener2.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/IPerspectiveListener3.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/IPerspectiveListener4.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/IPerspectiveRegistry.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/IPlaceholderFolderLayout.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/IPluginContribution.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/IPropertyListener.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/IReusableEditor.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/ISaveableFilter.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/ISaveablePart.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/ISaveablePart2.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/ISaveablesLifecycleListener.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/ISaveablesSource.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/ISecondarySaveableSource.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/ISelectionListener.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/ISelectionService.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/ISharedImages.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/IShowEditorInput.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/ISizeProvider.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/ISourceProvider.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/ISourceProviderListener.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/ISources.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/IStartup.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/IViewActionDelegate.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/IViewLayout.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/IViewPart.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/IViewReference.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/IViewSite.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/IWindowListener.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/IWorkbench.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/IWorkbenchActionConstants.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/IWorkbenchCommandConstants.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/IWorkbenchListener.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/IWorkbenchPage.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/IWorkbenchPart.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/IWorkbenchPart2.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/IWorkbenchPart3.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/IWorkbenchPartConstants.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/IWorkbenchPartDescriptor.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/IWorkbenchPartReference.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/IWorkbenchPartSite.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/IWorkbenchPreferenceConstants.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/IWorkbenchPreferencePage.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/IWorkbenchPropertyPage.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/IWorkbenchPropertyPageMulti.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/IWorkbenchSite.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/IWorkbenchWindow.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/IWorkbenchWindowActionDelegate.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/IWorkbenchWindowPulldownDelegate.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/IWorkbenchWindowPulldownDelegate2.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/IWorkbenchWizard.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/IWorkingSet.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/IWorkingSetElementAdapter.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/IWorkingSetManager.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/IWorkingSetUpdater.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/IWorkingSetUpdater2.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/LegacyHandlerSubmissionExpression.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/MultiPartInitException.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/NavigationLocation.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/OpenAndLinkWithEditorHelper.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/PartInitException.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/PerspectiveAdapter.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/PlatformUI.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/Saveable.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/SaveablesLifecycleEvent.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/SelectionEnabler.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/SelectionListenerFactory.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/SubActionBars.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/SubActionBars2.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/WorkbenchEncoding.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/WorkbenchException.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/XMLMemento.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/about/IInstallationPageContainer.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/about/ISystemSummarySection.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/about/InstallationPage.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/about/package.html (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/actions/ActionContext.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/actions/ActionDelegate.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/actions/ActionFactory.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/actions/ActionGroup.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/actions/BaseNewWizardMenu.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/actions/BaseSelectionListenerAction.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/actions/CommandNotMappedException.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/actions/CompoundContributionItem.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/actions/ContributedAction.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/actions/ContributionItemFactory.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/actions/ExportResourcesAction.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/actions/ImportResourcesAction.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/actions/LabelRetargetAction.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/actions/NewWizardAction.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/actions/NewWizardDropDownAction.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/actions/OpenInNewWindowAction.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/actions/OpenNewPageMenu.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/actions/OpenNewWindowMenu.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/actions/OpenPerspectiveAction.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/actions/OpenPerspectiveMenu.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/actions/PartEventAction.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/actions/PerspectiveMenu.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/actions/QuickMenuCreator.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/actions/RetargetAction.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/actions/SelectionProviderAction.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/actions/SimpleWildcardTester.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/actions/WorkingSetFilterActionGroup.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/actions/package.html (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/activities/ActivitiesPreferencePage.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/activities/ActivityCategoryPreferencePage.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/activities/ActivityEvent.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/activities/ActivityManagerEvent.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/activities/CategoryEvent.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/activities/IActivity.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/activities/IActivityListener.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/activities/IActivityManager.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/activities/IActivityManagerListener.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/activities/IActivityPatternBinding.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/activities/IActivityRequirementBinding.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/activities/ICategory.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/activities/ICategoryActivityBinding.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/activities/ICategoryListener.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/activities/IIdentifier.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/activities/IIdentifierListener.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/activities/IMutableActivityManager.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/activities/ITriggerPoint.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/activities/ITriggerPointAdvisor.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/activities/ITriggerPointManager.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/activities/IWorkbenchActivitySupport.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/activities/IdentifierEvent.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/activities/NotDefinedException.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/activities/WorkbenchActivityHelper.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/activities/WorkbenchTriggerPointAdvisor.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/activities/package.html (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/application/ActionBarAdvisor.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/application/DisplayAccess.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/application/IActionBarConfigurer.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/application/IWorkbenchConfigurer.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/application/IWorkbenchWindowConfigurer.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/application/WorkbenchAdvisor.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/application/WorkbenchWindowAdvisor.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/application/package.html (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/branding/IBundleGroupConstants.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/branding/IProductConstants.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/branding/package.html (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/browser/AbstractWebBrowser.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/browser/AbstractWorkbenchBrowserSupport.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/browser/IWebBrowser.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/browser/IWorkbenchBrowserSupport.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/browser/package.html (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/commands/ExtensionParameterValues.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/commands/ICommandImageService.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/commands/ICommandService.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/commands/IElementReference.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/commands/IElementUpdater.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/commands/package.html (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/contexts/ContextEvent.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/contexts/ContextException.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/contexts/ContextManagerEvent.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/contexts/EnabledSubmission.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/contexts/IContext.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/contexts/IContextActivation.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/contexts/IContextListener.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/contexts/IContextManager.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/contexts/IContextManagerListener.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/contexts/IContextService.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/contexts/IWorkbenchContextSupport.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/contexts/NotDefinedException.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/contexts/package.html (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/databinding/typed/WorkbenchProperties.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/dialogs/AbstractElementListSelectionDialog.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/dialogs/CheckedTreeSelectionDialog.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/dialogs/ContainerCheckedTreeViewer.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/dialogs/EditorSelectionDialog.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/dialogs/ElementListSelectionDialog.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/dialogs/ElementTreeSelectionDialog.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/dialogs/FileEditorMappingContentProvider.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/dialogs/FileEditorMappingLabelProvider.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/dialogs/FileSystemElement.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/dialogs/FilteredItemsSelectionDialog.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/dialogs/FilteredList.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/dialogs/FilteredTree.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/dialogs/IOverwriteQuery.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/dialogs/ISelectionStatusValidator.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/dialogs/ISelectionValidator.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/dialogs/IStyledStringHighlighter.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/dialogs/IWorkingSetEditWizard.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/dialogs/IWorkingSetNewWizard.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/dialogs/IWorkingSetPage.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/dialogs/IWorkingSetSelectionDialog.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/dialogs/ListDialog.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/dialogs/ListSelectionDialog.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/dialogs/PatternFilter.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/dialogs/PreferenceLinkArea.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/dialogs/PreferencesUtil.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/dialogs/PropertyDialogAction.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/dialogs/PropertyPage.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/dialogs/SearchPattern.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/dialogs/SelectionDialog.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/dialogs/SelectionStatusDialog.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/dialogs/StyledStringHighlighter.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/dialogs/TwoArrayQuickSorter.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/dialogs/TwoPaneElementSelector.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/dialogs/TypeFilteringDialog.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/dialogs/WorkingSetConfigurationBlock.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/dialogs/WorkingSetGroup.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/dialogs/YesNoCancelListSelectionDialog.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/dialogs/package.html (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/dnd/IDragAndDropService.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/dnd/package.html (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/fieldassist/ContentAssistCommandAdapter.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/fieldassist/ContentAssistField.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/fieldassist/package.html (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/handlers/CollapseAllHandler.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/handlers/ExpandAllHandler.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/handlers/HandlerUtil.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/handlers/IHandlerActivation.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/handlers/IHandlerService.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/handlers/RadioState.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/handlers/RegistryRadioState.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/handlers/RegistryToggleState.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/handlers/ShowPerspectiveHandler.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/handlers/ShowViewHandler.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/handlers/package.html (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/help/AbstractHelpUI.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/help/IWorkbenchHelpSystem.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/help/package.html (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/AbstractEnabledHandler.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/AbstractEvaluationHandler.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/AbstractWorkingSet.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/AbstractWorkingSetManager.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/ActionDescriptor.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/ActionExpression.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/ActionPresentation.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/ActionSetActionBars.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/ActionSetContributionItem.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/ActionSetManager.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/ActionSetMenuManager.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/ActionSetSeparator.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/ActionSetsEvent.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/ActivateEditorHandler.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/ActivityPersistanceHelper.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/AggregateWorkingSet.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/BindingToModelProcessor.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/BrandingProperties.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/BundleGroupProperties.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/ChangeToPerspectiveMenu.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/CloseAllHandler.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/CloseAllSavedAction.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/CloseEditorHandler.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/CloseOthersHandler.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/CommandToModelProcessor.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/ConfigurationInfo.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/ContextToModelProcessor.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/CoolBarToTrimManager.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/CycleEditorHandler.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/CyclePerspectiveHandler.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/CycleViewHandler.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/DefaultSaveable.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/DirtyPerspectiveMarker.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/E4PartWrapper.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/EarlyStartupRunnable.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/EditorActionBars.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/EditorActionBuilder.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/EditorHistory.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/EditorHistoryItem.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/EditorMenuManager.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/EditorPluginAction.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/EditorReference.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/EditorSite.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/EditorSiteDragAndDropServiceImpl.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/ErrorEditorPart.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/ErrorViewPart.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/ExceptionHandler.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/ExtensionEventHandler.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/ExtensionEventHandler.properties (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/ExtensionEventHandlerMessages.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/FilteredTableBaseHandler.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/HeapStatus.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/IActionSetContributionItem.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/IBackgroundSaveListener.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/IChangeListener.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/IHeapStatusConstants.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/IMenuServiceWorkaround.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/IObjectActionContributor.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/IObjectContributor.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/IPreferenceConstants.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/ISelectionConversionService.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/IWorkbenchConstants.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/IWorkbenchGraphicConstants.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/IWorkbenchHelpContextIds.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/IWorkbenchThemeConstants.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/InternalHandlerUtil.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/InternalSaveable.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/JFaceUtil.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/KeyBindingService.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/LargeFileLimitsPreferenceHandler.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/LegacyResourceSupport.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/LegacyTrim.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/LocalWorkingSetManager.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/NavigationHistory.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/NavigationHistoryAction.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/NavigationHistoryEditorInfo.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/NavigationHistoryEntry.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/ObjectActionContributor.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/ObjectActionContributorManager.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/ObjectActionContributorReader.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/ObjectContributorManager.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/ObjectFilterTest.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/ObjectPluginAction.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/OpenPerspectivePropertyTester.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/OpenPreferencesAction.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/PageEventAction.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/PageListenerList.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/PagePartSelectionTracker.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/PartPane.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/PartPluginAction.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/PartSelectionListener.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/PartService.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/PartSite.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/PartTaggedAsEditorPropertyTester.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/PendingSyncExec.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/Perspective.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/PerspectiveAction.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/PerspectiveExtensionReader.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/PerspectiveListenerList.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/PerspectiveTagger.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/PerspectiveTracker.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/PlaceholderContributionItem.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/PlatformUIPreferenceListener.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/PluginAction.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/PluginActionBuilder.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/PluginActionContributionItem.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/PluginActionCoolBarContributionItem.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/PluginActionSet.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/PluginActionSetBuilder.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/PopupMenuExtender.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/ProductInfo.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/ProductProperties.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/ReopenEditorMenu.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/SaveableHelper.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/SaveablesList.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/SelectionAdapterFactory.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/SelectionConversionService.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/SharedImages.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/ShowInHandler.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/ShowInMenu.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/ShowPartPaneMenuHandler.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/ShowViewMenu.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/ShowViewMenuHandler.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/SlavePageService.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/SlavePartService.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/SlaveSelectionService.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/SplitHandler.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/SplitValues.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/StandardTrim.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/StartupThreading.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/SwitchToWindowMenu.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/ToggleEditorsVisibilityAction.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/TrimUtil.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/UILockListener.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/UISynchronizer.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/ViewActionBuilder.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/ViewIntroAdapterPart.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/ViewIntroAdapterSite.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/ViewPluginAction.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/ViewReference.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/ViewSite.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/ViewerActionBuilder.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/WWinActionBars.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/WWinPluginAction.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/WWinPluginPulldown.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/WindowsDefenderConfigurator.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/Workbench.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/WorkbenchConfigurer.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/WorkbenchEditorsHandler.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/WorkbenchErrorHandlerProxy.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/WorkbenchHandlerServiceHandler.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/WorkbenchImages.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/WorkbenchIntroManager.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/WorkbenchLayoutSettingsTransfer.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/WorkbenchMessages.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/WorkbenchPage.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/WorkbenchPartReference.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/WorkbenchPlugin.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/WorkbenchPreferenceInitializer.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/WorkbenchSupportFactory.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/WorkbenchWindow.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/WorkbenchWindowConfigurer.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/WorkbookEditorsHandler.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/WorkingSet.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/WorkingSetComparator.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/WorkingSetFactory.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/WorkingSetManager.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/WorkingSetMenuContributionItem.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/about/AboutBundleData.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/about/AboutBundleGroupData.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/about/AboutData.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/about/AboutFeaturesButtonManager.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/about/AboutFeaturesPage.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/about/AboutHandler.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/about/AboutItem.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/about/AboutPluginsPage.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/about/AboutSystemPage.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/about/AboutTextManager.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/about/AboutUtils.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/about/BundleSigningInfo.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/about/ConfigurationLogDefaultSection.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/about/CopyTableSelectionHandler.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/about/InstallationDialog.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/about/InstallationHandler.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/about/ProductInfoDialog.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/about/ProductInfoPage.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/actions/AbstractWorkingSetPulldownDelegate.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/actions/ClearWorkingSetAction.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/actions/CommandAction.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/actions/DynamicHelpAction.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/actions/EditWorkingSetAction.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/actions/HelpContentsAction.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/actions/HelpSearchAction.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/actions/HelpSearchContributionItem.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/actions/ModifyWorkingSetDelegate.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/actions/NewWizardShortcutAction.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/actions/SelectWorkingSetAction.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/actions/SelectWorkingSetsAction.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/activities/AbstractActivityManager.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/activities/AbstractActivityRegistry.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/activities/Activity.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/activities/ActivityDefinition.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/activities/ActivityPatternBinding.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/activities/ActivityPatternBindingDefinition.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/activities/ActivityPropertyTester.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/activities/ActivityRegistryEvent.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/activities/ActivityRequirementBinding.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/activities/ActivityRequirementBindingDefinition.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/activities/Category.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/activities/CategoryActivityBinding.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/activities/CategoryActivityBindingDefinition.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/activities/CategoryDefinition.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/activities/ExtensionActivityRegistry.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/activities/IActivityRegistry.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/activities/IActivityRegistryListener.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/activities/Identifier.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/activities/InternalActivityHelper.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/activities/MutableActivityManager.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/activities/PatternUtil.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/activities/Persistence.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/activities/ProxyActivityManager.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/activities/ws/AbstractTriggerPoint.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/activities/ws/ActivityCategoryContentProvider.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/activities/ws/ActivityCategoryLabelProvider.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/activities/ws/ActivityContentProvider.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/activities/ws/ActivityEnabler.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/activities/ws/ActivityLabelProvider.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/activities/ws/ActivityMessages.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/activities/ws/ActivityViewerFilter.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/activities/ws/CategorizedActivity.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/activities/ws/EnablementDialog.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/activities/ws/EnablementDialog.properties (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/activities/ws/ImageBindingRegistry.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/activities/ws/RegistryTriggerPoint.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/activities/ws/TriggerPointAdvisorDescriptor.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/activities/ws/TriggerPointAdvisorRegistry.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/activities/ws/TriggerPointManager.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/activities/ws/WorkbenchActivitySupport.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/activities/ws/WorkbenchTriggerPoints.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/activities/ws/messages.properties (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/application/CompatibilityActionBarAdvisor.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/application/CompatibilityWorkbenchWindowAdvisor.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/browser/DefaultWebBrowser.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/browser/DefaultWorkbenchBrowserSupport.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/browser/WorkbenchBrowserSupport.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/commands/CommandImageManager.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/commands/CommandImageManagerEvent.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/commands/CommandImagePersistence.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/commands/CommandImageService.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/commands/CommandPersistence.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/commands/CommandService.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/commands/CommandServiceFactory.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/commands/CommandStateProxy.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/commands/ElementReference.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/commands/ICommandImageManagerListener.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/commands/ILegacyAttributeNames.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/commands/ParameterValueConverterProxy.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/commands/SlaveCommandService.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/contexts/ActiveContextSourceProvider.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/contexts/ContextActivation.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/contexts/ContextAuthority.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/contexts/ContextLegacyWrapper.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/contexts/ContextManagerFactory.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/contexts/ContextManagerLegacyWrapper.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/contexts/ContextPersistence.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/contexts/ContextService.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/contexts/ContextServiceFactory.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/contexts/LegacyContextListenerWrapper.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/contexts/NestableContextService.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/contexts/SlaveContextService.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/contexts/WorkbenchContextSupport.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/databinding/ActivePageProperty.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/databinding/ActivePartProperty.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/databinding/ActiveWindowProperty.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/databinding/AdaptedValueProperty.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/databinding/EditorInputProperty.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/databinding/ListeningValue.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/databinding/MultiSelectionProperty.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/databinding/SelectionServiceListener.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/databinding/SingleSelectionProperty.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/decorators/DeclarativeDecorator.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/decorators/DecorationBuilder.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/decorators/DecorationReference.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/decorators/DecorationResult.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/decorators/DecorationScheduler.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/decorators/DecoratorDefinition.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/decorators/DecoratorManager.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/decorators/DecoratorRegistryReader.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/decorators/FullDecoratorDefinition.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/decorators/FullDecoratorRunnable.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/decorators/FullImageDecoratorRunnable.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/decorators/FullTextDecoratorRunnable.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/decorators/LightweightActionDescriptor.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/decorators/LightweightDecoratorDefinition.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/decorators/LightweightDecoratorManager.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/AboutDialog.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/AboutFeaturesDialog.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/AboutPluginsDialog.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/AbstractWorkingSetDialog.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/AdaptableForwarder.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/CapabilityFilter.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/ContentTypeFilenameAssociationDialog.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/ContentTypesPreferencePage.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/DataTransferWizardCollectionComparator.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/DecoratorsPreferencePage.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/DialogUtil.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/EditorsPreferencePage.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/EmptyPreferencePage.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/EmptyPropertyPage.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/ErrorPreferencePage.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/EventLoopProgressMonitor.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/ExportPage.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/ExportWizard.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/FileEditorsPreferencePage.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/FileExtensionDialog.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/FilteredPreferenceDialog.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/GlobalizationPreferencePage.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/IPropertyPageContributor.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/ImportExportPage.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/ImportExportWizard.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/ImportPage.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/ImportWizard.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/NewContentTypeDialog.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/NewWizard.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/NewWizardCollectionComparator.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/NewWizardNewPage.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/NewWizardSelectionPage.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/PerspContentProvider.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/PerspectivesPreferencePage.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/PreferenceBoldLabelProvider.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/PreferenceHistoryEntry.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/PreferenceNodeFilter.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/PreferencePageHistory.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/PreferencePatternFilter.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/PropertyDialog.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/PropertyPageContributorManager.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/PropertyPageManager.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/PropertyPageNode.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/RegistryPageContributor.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/SavePerspectiveDialog.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/SelectPerspectiveDialog.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/ShowViewDialog.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/SimpleWorkingSetSelectionDialog.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/StartupPreferencePage.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/ViewComparator.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/ViewContentProvider.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/ViewLabelProvider.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/ViewPatternFilter.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/ViewsPreferencePage.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/WizardActivityFilter.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/WizardCollectionElement.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/WizardContentProvider.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/WizardPatternFilter.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/WizardTagFilter.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/WorkbenchDialogBlockedHandler.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/WorkbenchEditorsDialog.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/WorkbenchPreferenceDialog.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/WorkbenchPreferenceManager.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/WorkbenchPreferenceNode.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/WorkbenchPreferencePage.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/WorkbenchWizardElement.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/WorkbenchWizardListSelectionPage.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/WorkbenchWizardNode.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/WorkbenchWizardSelectionPage.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/WorkingSetEditWizard.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/WorkingSetFilter.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/WorkingSetLabelProvider.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/WorkingSetNewWizard.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/WorkingSetSelectionDialog.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/WorkingSetTypePage.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/cpd/ActionSetFilter.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/cpd/ActionSetSelectionChangedListener.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/cpd/CategoryCheckProvider.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/cpd/CustomizeActionBars.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/cpd/CustomizePerspectiveDialog.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/cpd/FilteredModelCheckListener.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/cpd/FilteredTreeCheckProvider.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/cpd/FilteredViewerCheckListener.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/cpd/GrayOutUnavailableLabelProvider.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/cpd/ItemDetailToolTip.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/cpd/NameAndDescriptionToolTip.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/cpd/ShortcutLabelProvider.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/cpd/ShowUsedActionSetsFilter.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/cpd/TableToolTip.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/cpd/TreeManager.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/dialogs/cpd/UnavailableContributionItemCheckListener.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/e4/compatibility/ActionBars.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/e4/compatibility/CompatibilityEditor.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/e4/compatibility/CompatibilityPart.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/e4/compatibility/CompatibilityView.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/e4/compatibility/E4Util.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/e4/compatibility/ModeledFolderLayout.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/e4/compatibility/ModeledPageLayout.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/e4/compatibility/ModeledPageLayoutUtils.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/e4/compatibility/ModeledPlaceholderFolderLayout.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/e4/compatibility/ModeledViewLayout.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/e4/compatibility/SelectionService.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/e4/migration/InfoReader.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/e4/migration/MementoReader.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/e4/migration/PerspectiveBuilder.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/e4/migration/PerspectiveReader.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/expressions/ActivePartExpression.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/expressions/AlwaysEnabledExpression.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/expressions/LegacyActionSetExpression.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/expressions/LegacyEditorActionBarExpression.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/expressions/LegacyEditorContributionExpression.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/expressions/LegacySelectionEnablerWrapper.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/expressions/LegacyViewContributionExpression.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/expressions/WorkbenchWindowExpression.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/handlers/AbstractSaveHandler.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/handlers/ActionCommandMappingService.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/handlers/ActionDelegateHandlerProxy.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/handlers/ActiveContextInfoHandler.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/handlers/CloseAllPerspectivesHandler.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/handlers/ClosePartHandler.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/handlers/ClosePerspectiveHandler.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/handlers/CommandLegacyActionWrapper.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/handlers/ContextMenuHandler.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/handlers/CyclePageHandler.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/handlers/DirtyStateTracker.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/handlers/DisplayHelpHandler.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/handlers/DynamicHelpHandler.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/handlers/E4HandlerProxy.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/handlers/EditActionSetsHandler.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/handlers/ExecutableExtensionHandler.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/handlers/FullScreenHandler.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/handlers/HandlerActivation.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/handlers/HandlerPersistence.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/handlers/HandlerProxy.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/handlers/HelpContentsHandler.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/handlers/HelpSearchHandler.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/handlers/HideTrimBarsHandler.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/handlers/IActionCommandMappingService.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/handlers/IWorkbenchWindowHandlerDelegate.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/handlers/IntroHandler.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/handlers/LegacyHandlerService.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/handlers/LockToolBarHandler.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/handlers/MaximizePartHandler.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/handlers/MinimizePartHandler.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/handlers/NewEditorHandler.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/handlers/OpenInNewWindowHandler.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/handlers/PinEditorHandler.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/handlers/PropertyDialogHandler.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/handlers/QuickMenuHandler.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/handlers/QuitHandler.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/handlers/ResetPerspectiveHandler.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/handlers/RestartWorkbenchHandler.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/handlers/ReuseEditorTester.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/handlers/SaveAllHandler.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/handlers/SaveAsHandler.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/handlers/SaveHandler.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/handlers/SavePerspectiveHandler.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/handlers/SelectAllHandler.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/handlers/ShowKeyAssistHandler.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/handlers/ShowPreferencePageHandler.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/handlers/SpyHandler.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/handlers/ToggleCoolbarHandler.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/handlers/ToggleStatusBarHandler.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/handlers/TraversePageHandler.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/handlers/WidgetMethodHandler.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/handlers/WizardHandler.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/handlers/WorkbenchWindowHandlerDelegate.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/help/CommandHelpServiceImpl.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/help/HelpServiceImpl.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/help/WorkbenchHelpSystem.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/intro/IIntroConstants.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/intro/IIntroDescriptor.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/intro/IIntroRegistry.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/intro/IntroDescriptor.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/intro/IntroMessages.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/intro/IntroRegistry.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/intro/intro.properties (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/keys/AbstractKeyFormatter.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/keys/AbstractKeyFormatter.properties (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/keys/AbstractModifierKeyComparator.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/keys/AlphabeticModifierKeyComparator.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/keys/BindingPersistence.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/keys/BindingService.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/keys/CategoryPatternFilter.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/keys/CompactKeyFormatter.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/keys/EmacsKeyFormatter.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/keys/EmacsKeyFormatter.properties (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/keys/FormalKeyFormatter.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/keys/GlobalKeyAssistDialog.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/keys/GnomeKeyFormatter.properties (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/keys/ImageFactory.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/keys/KdeKeyFormatter.properties (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/keys/KeyAssistDialog.properties (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/keys/KeyAssistMessages.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/keys/KeysPreferenceFiltersDialog.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/keys/KeysPreferencePage.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/keys/KeysPreferencePage.properties (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/keys/MacKeyFormatter.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/keys/MacKeyFormatter.properties (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/keys/NativeKeyFormatter.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/keys/NativeKeyFormatter.properties (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/keys/NativeModifierKeyComparator.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/keys/NewKeysPreferenceMessages.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/keys/NewKeysPreferencePage.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/keys/NewKeysPreferencePage.properties (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/keys/NoKeysPreferencePage.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/keys/WindowsKeyFormatter.properties (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/keys/WorkbenchKeyboard.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/keys/WorkbenchKeyboard.properties (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/keys/model/BindingElement.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/keys/model/BindingModel.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/keys/model/CommonModel.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/keys/model/ConflictModel.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/keys/model/ContextElement.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/keys/model/ContextModel.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/keys/model/KeyController.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/keys/model/ModelElement.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/keys/model/SchemeElement.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/keys/model/SchemeModel.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/keys/show/ShowKeysListener.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/keys/show/ShowKeysToggleHandler.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/keys/show/ShowKeysUI.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/layout/CacheWrapper.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/layout/CellData.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/layout/CellLayout.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/layout/CellLayoutUtil.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/layout/GridInfo.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/layout/ICachingLayout.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/layout/LayoutCache.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/layout/LayoutUtil.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/layout/Row.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/layout/SizeCache.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/menus/CommandMessages.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/menus/CompatibilityWorkbenchWindowControlContribution.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/menus/ContributionFactoryGenerator.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/menus/ContributionRoot.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/menus/ControlContributionRegistry.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/menus/DynamicMenuContributionItem.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/menus/DynamicToolBarContributionItem.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/menus/FocusControlSourceProvider.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/menus/IActionSetsListener.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/menus/InternalControlContribution.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/menus/LegacyActionPersistence.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/menus/MenuAdditionCacheEntry.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/menus/MenuFactoryGenerator.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/menus/MenuHelper.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/menus/MenuLocationURI.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/menus/MenuPersistence.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/menus/SlaveMenuService.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/menus/WorkbenchMenuService.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/menus/messages.properties (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/messages.properties (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/misc/ExternalEditor.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/misc/ExternalProgramImageDescriptor.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/misc/Policy.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/misc/ProgramImageDescriptor.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/misc/StatusUtil.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/misc/TestPartListener.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/misc/TextMatcher.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/misc/UIListenerLogging.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/misc/UIStats.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/model/ContributionService.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/operations/AdvancedValidationUserApprover.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/operations/TimeTriggeredProgressMonitorDialog.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/operations/WorkbenchOperationSupport.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/part/IMultiPageEditorSiteHolder.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/part/IPageSiteHolder.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/part/NullEditorInput.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/part/StatusPart.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/preferences/Base64.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/preferences/IDynamicPropertyMap.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/preferences/IPropertyMap.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/preferences/IPropertyMapListener.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/preferences/PreferenceTransferElement.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/preferences/PreferenceTransferManager.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/preferences/PreferencesSettingsTransfer.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/preferences/PropertyListenerList.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/preferences/PropertyMapAdapter.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/preferences/PropertyMapUnion.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/preferences/SettingsTransferRegistryReader.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/preferences/ThemeAdapter.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/preferences/WorkbenchPreferenceExpressionNode.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/preferences/WorkbenchPreferenceExtensionNode.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/preferences/WorkbenchSettingsTransfer.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/preferences/WorkingCopyPreferences.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/preferences/WorkingSetPropertyPage.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/preferences/WorkingSetSettingsTransfer.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/progress/AbstractProgressViewer.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/progress/AnimationItem.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/progress/AnimationManager.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/progress/BlockedJobsDialog.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/progress/DetailedProgressViewer.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/progress/FinishedJobs.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/progress/GroupInfo.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/progress/IAnimationProcessor.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/progress/IJobBusyListener.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/progress/IJobProgressManagerListener.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/progress/IProgressUpdateCollector.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/progress/JobInfo.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/progress/JobSnapshot.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/progress/JobTreeElement.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/progress/JobsViewPreferenceDialog.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/progress/ProgressAnimationItem.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/progress/ProgressAnimationProcessor.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/progress/ProgressCanvasViewer.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/progress/ProgressContentProvider.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/progress/ProgressInfoItem.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/progress/ProgressLabelProvider.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/progress/ProgressManager.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/progress/ProgressManagerUtil.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/progress/ProgressMessages.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/progress/ProgressMonitorFocusJobDialog.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/progress/ProgressMonitorJobsDialog.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/progress/ProgressRegion.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/progress/ProgressView.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/progress/ProgressViewUpdater.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/progress/ProgressViewerContentProvider.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/progress/ProgressViewerLabelProvider.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/progress/StatusAdapterHelper.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/progress/SubTaskInfo.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/progress/TaskBarProgressManager.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/progress/TaskInfo.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/progress/WorkbenchSiteProgressService.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/progress/messages.properties (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/provisional/application/IActionBarConfigurer2.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/quickaccess/CamelUtil.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/quickaccess/PreviousPicksProvider.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/quickaccess/QuickAccessContents.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/quickaccess/QuickAccessDialog.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/quickaccess/QuickAccessEntry.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/quickaccess/QuickAccessExtensionManager.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/quickaccess/QuickAccessHandler.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/quickaccess/QuickAccessMatcher.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/quickaccess/QuickAccessMessages.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/quickaccess/QuickAccessProvider.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/quickaccess/SearchField.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/quickaccess/messages.properties (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/quickaccess/providers/ActionElement.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/quickaccess/providers/ActionProvider.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/quickaccess/providers/CommandElement.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/quickaccess/providers/CommandProvider.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/quickaccess/providers/EditorElement.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/quickaccess/providers/EditorProvider.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/quickaccess/providers/HelpSearchElement.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/quickaccess/providers/HelpSearchProvider.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/quickaccess/providers/PerspectiveElement.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/quickaccess/providers/PerspectiveProvider.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/quickaccess/providers/PreferenceElement.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/quickaccess/providers/PreferenceProvider.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/quickaccess/providers/PropertiesElement.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/quickaccess/providers/PropertiesProvider.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/quickaccess/providers/ViewElement.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/quickaccess/providers/ViewProvider.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/quickaccess/providers/WizardElement.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/quickaccess/providers/WizardProvider.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/registry/ActionSetDescriptor.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/registry/ActionSetRegistry.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/registry/CategorizedPageRegistryReader.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/registry/Category.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/registry/EditorDescriptor.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/registry/EditorRegistry.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/registry/EditorRegistryReader.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/registry/FileEditorMapping.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/registry/IActionSet.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/registry/IActionSetDescriptor.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/registry/IWorkbenchRegistryConstants.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/registry/ImportExportPespectiveHandler.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/registry/KeywordRegistry.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/registry/PerspectiveDescriptor.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/registry/PerspectiveParameterValues.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/registry/PerspectiveRegistry.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/registry/PreferencePageParameterValues.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/registry/PreferencePageRegistryReader.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/registry/PreferenceTransferRegistryReader.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/registry/PropertyPagesRegistryReader.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/registry/RegistryReader.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/registry/StickyViewDescriptor.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/registry/ViewCategory.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/registry/ViewDescriptor.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/registry/ViewParameterValues.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/registry/ViewRegistry.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/registry/WizardParameterValues.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/registry/WizardsRegistryReader.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/registry/WorkingSetDescriptor.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/registry/WorkingSetRegistry.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/registry/WorkingSetRegistryReader.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/services/ActionSetSourceProvider.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/services/EvaluationReference.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/services/EvaluationResultCache.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/services/EvaluationService.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/services/EvaluationServiceFactory.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/services/ExpressionAuthority.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/services/IEvaluationResultCache.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/services/INestable.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/services/IServiceLocatorCreator.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/services/IWorkbenchLocationService.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/services/LogThrottle.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/services/MenuSourceProvider.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/services/PreferencePersistence.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/services/RegistryPersistence.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/services/ServiceLocator.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/services/ServiceLocatorCreator.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/services/SlaveEvaluationService.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/services/SourcePriorityNameMapping.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/services/SourceProviderService.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/services/WorkbenchLocationService.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/services/WorkbenchServiceRegistry.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/services/WorkbenchSourceProvider.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/splash/EclipseSplashHandler.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/splash/SplashHandlerFactory.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/statushandlers/DefaultDetailsArea.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/statushandlers/DetailsAreaManager.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/statushandlers/IStatusDialogConstants.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/statushandlers/InternalDialog.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/statushandlers/LabelProviderWrapper.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/statushandlers/StackTraceSupportArea.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/statushandlers/StatusHandlerDescriptor.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/statushandlers/StatusHandlerDescriptorsMap.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/statushandlers/StatusHandlerProductBindingDescriptor.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/statushandlers/StatusHandlerRegistry.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/statushandlers/SupportTray.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/statushandlers/WorkbenchStatusDialogManagerImpl.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/statushandlers/package.html (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/testing/ContributionInfoMessages.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/testing/PluginContributionAdapterFactory.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/testing/WorkbenchPartTestable.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/testing/WorkbenchTestable.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/testing/messages.properties (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/themes/CascadingColorRegistry.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/themes/CascadingFontRegistry.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/themes/CascadingMap.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/themes/CascadingTheme.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/themes/ColorAndFontProviderImpl.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/themes/ColorDefinition.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/themes/ColorsAndFontsPreferencePage.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/themes/ColorsAndFontsPreferencePage.properties (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/themes/FontDefinition.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/themes/ICategorizedThemeElementDefinition.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/themes/IEditable.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/themes/IHierarchalThemeElementDefinition.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/themes/IThemeDescriptor.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/themes/IThemeElementDefinition.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/themes/IThemeRegistry.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/themes/LightColorFactory.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/themes/RGBBrightnessColorFactory.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/themes/RGBContrastFactory.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/themes/RGBInfoColorFactory.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/themes/RGBVisibleContrastColorFactory.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/themes/Theme.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/themes/Theme.properties (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/themes/ThemeDescriptor.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/themes/ThemeElementCategory.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/themes/ThemeElementDefinition.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/themes/ThemeElementHelper.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/themes/ThemeRegistry.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/themes/ThemeRegistryReader.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/themes/ThemeRegistryReader.properties (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/themes/ThemesExtension.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/themes/WorkbenchPreview.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/themes/WorkbenchThemeManager.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/tweaklets/DummyTitlePathUpdater.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/tweaklets/InterceptContributions.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/tweaklets/TabBehaviour.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/tweaklets/TabBehaviourMRU.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/tweaklets/TitlePathUpdater.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/tweaklets/Tweaklets.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/util/BundleUtility.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/util/ConfigurationElementMemento.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/util/Descriptors.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/util/ImageSupport.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/util/PrefUtil.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/util/Util.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/wizards/AbstractExtensionWizardRegistry.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/wizards/AbstractWizardRegistry.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/wizards/ExportWizardRegistry.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/wizards/ImportWizardRegistry.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/wizards/NewWizardRegistry.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/wizards/preferences/PreferencesContentProvider.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/wizards/preferences/PreferencesExportWizard.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/wizards/preferences/PreferencesImportWizard.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/wizards/preferences/PreferencesMessages.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/wizards/preferences/WizardPreferencesExportPage1.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/wizards/preferences/WizardPreferencesImportPage1.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/wizards/preferences/WizardPreferencesPage.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/internal/wizards/preferences/messages.properties (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/intro/IIntroManager.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/intro/IIntroPart.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/intro/IIntroSite.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/intro/IntroContentDetector.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/intro/package.html (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/keys/CharacterKey.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/keys/IBindingService.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/keys/IKeyFormatter.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/keys/Key.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/keys/KeyFormatterFactory.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/keys/KeySequence.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/keys/KeyStroke.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/keys/ModifierKey.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/keys/NaturalKey.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/keys/ParseException.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/keys/SWTKeySupport.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/keys/SpecialKey.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/keys/package.html (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/menus/AbstractContributionFactory.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/menus/AbstractWorkbenchTrimWidget.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/menus/CommandContributionItem.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/menus/CommandContributionItemParameter.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/menus/ExtensionContributionFactory.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/menus/IContributionRoot.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/menus/IMenuService.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/menus/IWorkbenchContribution.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/menus/IWorkbenchWidget.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/menus/MenuUtil.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/menus/UIElement.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/menus/WorkbenchWindowControlContribution.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/menus/package.html (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/model/AdaptableList.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/model/BaseWorkbenchContentProvider.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/model/ContributionComparator.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/model/IComparableContribution.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/model/IContributionService.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/model/IWorkbenchAdapter.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/model/IWorkbenchAdapter2.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/model/IWorkbenchAdapter3.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/model/PerspectiveLabelProvider.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/model/WorkbenchAdapter.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/model/WorkbenchLabelProvider.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/model/WorkbenchPartLabelProvider.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/model/WorkbenchViewerComparator.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/model/WorkbenchViewerSorter.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/model/package.html (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/operations/IWorkbenchOperationSupport.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/operations/LinearUndoViolationUserApprover.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/operations/NonLocalUndoUserApprover.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/operations/OperationHistoryActionHandler.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/operations/RedoActionHandler.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/operations/UndoActionHandler.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/operations/UndoRedoActionGroup.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/operations/package.html (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/package.html (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/part/AbstractMultiEditor.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/part/CellEditorActionHandler.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/part/CoolItemGroupMarker.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/part/DrillDownAdapter.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/part/DrillDownComposite.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/part/DrillFrame.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/part/DrillStack.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/part/EditorActionBarContributor.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/part/EditorInputTransfer.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/part/EditorPart.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/part/IContributedContentsView.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/part/IDropActionDelegate.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/part/IPage.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/part/IPageBookViewPage.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/part/IPageSite.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/part/ISetSelectionTarget.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/part/IShowInSource.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/part/IShowInTarget.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/part/IShowInTargetList.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/part/IWorkbenchPartOrientation.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/part/IntroPart.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/part/MessagePage.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/part/MultiEditor.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/part/MultiEditorInput.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/part/MultiPageEditorActionBarContributor.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/part/MultiPageEditorPart.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/part/MultiPageEditorSite.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/part/MultiPageSelectionProvider.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/part/Page.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/part/PageBook.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/part/PageBookView.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/part/PageSite.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/part/PageSwitcher.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/part/PluginDropAdapter.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/part/PluginTransfer.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/part/PluginTransferData.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/part/ShowInContext.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/part/ViewPart.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/part/WorkbenchPart.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/part/package.html (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/plugin/AbstractUIPlugin.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/plugin/package.html (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/preferences/IWorkbenchPreferenceContainer.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/preferences/IWorkingCopyManager.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/preferences/ScopedPreferenceStore.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/preferences/SettingsTransfer.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/preferences/ViewPreferencesAction.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/preferences/ViewSettingsDialog.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/preferences/WizardPropertyPage.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/preferences/WorkingCopyManager.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/preferences/package.html (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/progress/DeferredTreeContentManager.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/progress/IDeferredWorkbenchAdapter.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/progress/IElementCollector.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/progress/IJobRunnable.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/progress/IProgressConstants.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/progress/IProgressConstants2.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/progress/IProgressService.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/progress/IWorkbenchSiteProgressService.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/progress/PendingUpdateAdapter.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/progress/UIJob.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/progress/WorkbenchJob.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/progress/package.html (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/quickaccess/IQuickAccessComputer.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/quickaccess/IQuickAccessComputerExtension.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/quickaccess/QuickAccessElement.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/services/AbstractServiceFactory.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/services/IDisposable.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/services/IEvaluationReference.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/services/IEvaluationService.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/services/IServiceLocator.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/services/IServiceScopes.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/services/IServiceWithSources.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/services/ISourceProviderService.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/services/package.html (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/splash/AbstractSplashHandler.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/splash/BasicSplashHandler.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/splash/package.html (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/statushandlers/AbstractStatusAreaProvider.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/statushandlers/AbstractStatusHandler.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/statushandlers/IStatusAdapterConstants.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/statushandlers/StatusAdapter.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/statushandlers/StatusManager.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/statushandlers/WorkbenchErrorHandler.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/statushandlers/WorkbenchStatusDialogManager.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/statushandlers/package.html (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/swt/IFocusService.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/swt/package.html (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/themes/ColorUtil.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/themes/IColorFactory.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/themes/ITheme.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/themes/IThemeManager.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/themes/IThemePreview.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/themes/RGBBlendColorFactory.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/themes/package.html (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/views/IStickyViewDescriptor.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/views/IViewCategory.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/views/IViewDescriptor.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/views/IViewRegistry.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/views/WorkbenchViewerSetup.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/views/package.html (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/wizards/IWizardCategory.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/wizards/IWizardDescriptor.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/wizards/IWizardRegistry.java (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI => eclipseui}/org/eclipse/ui/wizards/package.html (100%) rename bundles/org.eclipse.ui.workbench/{Eclipse UI Editor Support => eclipseuieditorsupport}/org/eclipse/ui/internal/editorsupport/ComponentSupport.java (100%) 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/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 100% 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 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 100% 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 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 100% 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 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 100% 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 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 100% 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 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 100% 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 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 100% 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 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 100% 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 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/Eclipse UI/org/eclipse/ui/internal/CloseAllHandler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/CloseAllHandler.java similarity index 100% rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/CloseAllHandler.java rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/CloseAllHandler.java 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/Eclipse UI/org/eclipse/ui/internal/CloseEditorHandler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/CloseEditorHandler.java similarity index 100% rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/CloseEditorHandler.java rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/CloseEditorHandler.java 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 100% 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 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 100% 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 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/Eclipse UI/org/eclipse/ui/internal/PartTaggedAsEditorPropertyTester.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/PartTaggedAsEditorPropertyTester.java similarity index 100% rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PartTaggedAsEditorPropertyTester.java rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/PartTaggedAsEditorPropertyTester.java 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 100% 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 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 100% 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 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 100% 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 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 100% 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 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 100% 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 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 100% 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 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 100% 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 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 100% 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 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 100% 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 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 100% 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 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 100% 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 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 100% 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 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 100% 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 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 100% 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 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 100% 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 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 100% 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 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/TextMatcher.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/misc/TextMatcher.java similarity index 100% rename from bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/misc/TextMatcher.java rename to bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/misc/TextMatcher.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 100% 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 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 100% 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 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 100% 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 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 100% 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 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 100% 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 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 100% 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 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 100% 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 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 100% 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 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 From 908db0fb1d57c9c3c9e083deccbc876e121cb5d4 Mon Sep 17 00:00:00 2001 From: Hannes Wellmann Date: Sat, 19 Oct 2024 12:22:47 +0200 Subject: [PATCH 117/232] Clean-up and simplify E4 ModelAssembler --- .../ui/internal/workbench/ModelAssembler.java | 259 ++++++++---------- 1 file changed, 108 insertions(+), 151 deletions(-) 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 l = (List) interalTarget.eGet(internalFeature); - int index = l.indexOf(internalImportObject); + List l = (List) target.eGet(feature); + int index = l.indexOf(importObject); if (index >= 0) { - l.set(index, internalElement); + l.set(index, element); } } else { - interalTarget.eSet(internalFeature, internalElement); + target.eSet(feature, element); } }); } @@ -834,36 +798,29 @@ public void resolveImports(List imports, List Date: Thu, 7 Nov 2024 13:02:57 +0100 Subject: [PATCH 118/232] Impl #2402 - Migrate model processors from extension point to OSGi DS Signed-off-by: Dirk Fauth --- .../.project | 5 ++++ .../org.eclipse.pde.ds.annotations.prefs | 7 +++++ .../META-INF/MANIFEST.MF | 4 +++ .../build.properties | 4 +-- .../plugin.xml | 26 ------------------- .../addons/swt/CleanupProcessor.java | 7 +++-- .../ui/workbench/addons/swt/DnDProcessor.java | 7 +++-- .../workbench/addons/swt/MinMaxProcessor.java | 7 +++-- .../addons/swt/SplitterProcessor.java | 8 +++--- .../META-INF/MANIFEST.MF | 5 +++- .../ui/internal/BindingToModelProcessor.java | 18 +++++++++++-- .../ui/internal/CommandToModelProcessor.java | 7 +++-- .../ui/internal/ContextToModelProcessor.java | 7 +++-- bundles/org.eclipse.ui.workbench/plugin.xml | 16 ------------ .../tests/pluginchecks/PluginWalkerTest.java | 12 ++++----- 15 files changed, 74 insertions(+), 66 deletions(-) create mode 100644 bundles/org.eclipse.e4.ui.workbench.addons.swt/.settings/org.eclipse.pde.ds.annotations.prefs delete mode 100644 bundles/org.eclipse.e4.ui.workbench.addons.swt/plugin.xml 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..96bf7818898 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 @@ -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.ui.workbench/META-INF/MANIFEST.MF b/bundles/org.eclipse.ui.workbench/META-INF/MANIFEST.MF index 36729f7f926..b43589cf1f6 100644 --- a/bundles/org.eclipse.ui.workbench/META-INF/MANIFEST.MF +++ b/bundles/org.eclipse.ui.workbench/META-INF/MANIFEST.MF @@ -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/eclipseui/org/eclipse/ui/internal/BindingToModelProcessor.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/BindingToModelProcessor.java index 9def779f0de..15d160e95d5 100644 --- a/bundles/org.eclipse.ui.workbench/eclipseui/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/eclipseui/org/eclipse/ui/internal/CommandToModelProcessor.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/CommandToModelProcessor.java index dceb328dde1..d295b399c5f 100644 --- a/bundles/org.eclipse.ui.workbench/eclipseui/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/eclipseui/org/eclipse/ui/internal/ContextToModelProcessor.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/ContextToModelProcessor.java index be8c2bea3f8..1b1db7ff996 100644 --- a/bundles/org.eclipse.ui.workbench/eclipseui/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/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 @@ - - - - - - - - Date: Thu, 7 Nov 2024 14:34:02 +0000 Subject: [PATCH 119/232] Version bump(s) for 4.34 stream --- .../org.eclipse.e4.ui.workbench.addons.swt/META-INF/MANIFEST.MF | 2 +- tests/org.eclipse.ui.tests.pluginchecks/META-INF/MANIFEST.MF | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) 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 96bf7818898..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 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", From 5a4c904327de29038e8b9deda9cc73853952d850 Mon Sep 17 00:00:00 2001 From: Lars Vogel Date: Tue, 5 Nov 2024 11:31:43 +0100 Subject: [PATCH 120/232] Adding new Notification API snippet to demonstrate the usage of user interaction This new notification example will show a button which the user can press and another dialog is opened. --- docs/JFaceSnippets.md | 11 +++ ...85NotificationPopupWithUserInteraction.png | Bin 0 -> 3808 bytes ...5NotificationPopupWithUserInteraction.java | 74 ++++++++++++++++++ 3 files changed, 85 insertions(+) create mode 100644 docs/images/Snippet085NotificationPopupWithUserInteraction.png create mode 100644 examples/org.eclipse.jface.snippets/Eclipse JFace Snippets/org/eclipse/jface/snippets/notifications/Snippet085NotificationPopupWithUserInteraction.java diff --git a/docs/JFaceSnippets.md b/docs/JFaceSnippets.md index 47e965b386d..f4cda73a3af 100644 --- a/docs/JFaceSnippets.md +++ b/docs/JFaceSnippets.md @@ -23,6 +23,7 @@ Contents * [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) @@ -141,6 +142,16 @@ Demonstrates the creation of notification popups that include function callbacks 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/vogella/eclipse-jface-snippets/blob/main/src/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/vogella/eclipse-jface-snippets/blob/main/src/org/eclipse/jface/snippets/notifications/Snippet085NotificationPopupWithUserInteraction.java). + + +![Snippet085.png](https://raw.githubusercontent.com/eclipse-platform/eclipse.platform.ui/master/docs/images/Snippet085NotificationPopupWithUserInteraction.png) + + Layout ------ diff --git a/docs/images/Snippet085NotificationPopupWithUserInteraction.png b/docs/images/Snippet085NotificationPopupWithUserInteraction.png new file mode 100644 index 0000000000000000000000000000000000000000..7937c23b66554eb0bb65bb64a9ba52e76ff57023 GIT binary patch literal 3808 zcmbtXX*3iL*B^{M3^GJ^qbOU7P#8zd7(`{88B})4 zZVakX%rLy3_rr7E^Pcm3dOrN_y}u9lo_o*v-FwbWH8as;W8r53003+T`Z^Zpe&8H| zObq9i<{G=szg&=oo)(}1dwKhu06n2FC;-ry$$H{Uf6kc$^lgIx0QL|60?jA?D!20> z#6SmX74EQG2=fw{27fYD-zqK0x6t+VF1bCJ7WD;MtScgb5t}ZC^#oX6EtyLM%B6FK z(-+95T|j2>%NQFgv6tYj(%wJsZ}nPkOTw0;r|o&t-W_Lc=m0n6rijEk zihTn-SwpO9+q(?QP+AZ|Hx*Vgl4&;Rkaj&bC>1+;;mN z4CyjCzH{ocA5u1=>(l=D@HDtXeO95Y*c&gqzfvujQWsYFfJ4!?`QM z!}9L=``lYfE|=EoL~@}z@~Wy2ZGcZA5Em~Q)EdaJt{_?g;-1OK&LB!Vd{Wjb=PB;q z)ly<)wzZ$_#205$bsIn8FsH9#vAb%$-fIY31#e-}U7pO2Da2Y zvfvJL51eUzK;@>z`&Hr5(of#0DWU~!4a(C8<}4{clu>(I@{Q~*0b|zHb)Ofsl_+0{ z;Gw4}n*rMUsK2WrVO?XA-I`6svx6$s8ogC@T`!68Wx@7Oa%^)+$4=KhpT2taDxcA7 zbYe025We?Gwq7HfDq~0?K3Xih^|-UJ(7IptE0O44^Hcs#cU`kM`lOFN$(iJAxtGB^ zyPgE+tV&*a83Hjr7SpVY^PMM^jwnzshR(iv5!>3@%(}?cU>ca=Vh&qYMxM)={XOGq z1f!SoBTm#cUcEPD@53JtmYuFF$zFu+787EEtdFer1G2NtA?dA=Z?C8~A1$qDli-J6 zs3)C=I$tMlR-U)7EI$(rjs(}o-|Y4bal()wLlQbUl!k*^&#>PZ%oSaOc^ z`fd2<)WNB3kq>Ud~1I#e9nc`Df2>h&7$TsyyAOJ=DhPr*Zlgy zhvD|^+wHiVWgHbczjx4X(hCb(e!H1mjqyX`Dt#PaNX*|ijpz|{4f^*goVC;Hxu=Tj z?wjtKHme4e{bv4X)zfcYzdW8aRf1ClOoEn}G$9+9%r?D|swA#$-ieC(Q?b-`v$}j(L)TMc99Lw)YciQt z-UIAeM(=_vG4`lt?~t@M$hI`PiQDp~EIBvM)v`UxjL@1XxU3?yqxHf|rEo(qQtK}I z?egpX#>X!R;5;`D+|&!dx)^JGCxS+hd*J)p=Aasc121hi%r|tIw2i|yv;Em87>_Ar zH(pZcsBIZ4^CcmiN!Yg*%`=Zr=Jt{uj}tOr#}qVtU}g|D$8R_}pq1fP&EOGW%o_AK z6^`RmD)B#4c>B_IP6D!-sc)wH3z2YZTUQ--B{*;lpupFZOLx?tOJg=A?cbkM% zehIUb258k^YJ`VaYdegqI(gl}$eni4blsTR^+>X{Wb~ut7LB{T`}}jqc`80S4Nd5U z{AX)Bj z8(PNyw_g27I4KS#QY0j@gqay)*|^b`pMkkWTg*>tOOdf{Vig040P*lINE3(7kF)&2 zBk+2L22Q|*>;LiI1e-G*r%2M?CyrH)ntPGB8owc2=jTa_HeebJuvz9EcTceQEtENp zDS0?9_UpU{#k-fH$D~H(1TG02^l@CV8n^L3d#%kRdPHxSmw=zz_DH~MGsGX$*Q5@Z+1=mpMeaYmo zmr3a?8zoj)qIBRHa2$Vooh2$(RL>KP6utd&+av2^@EwsiN1P)&-ycjiLMs}E6iwi( zg#BaqOE7Q`ccj$=M>oYL**{D6(PHGFk3J$ ziAafjW~b^cNB7v1&C$^q%0k3LIiS!Z!9i?7iPlf!M-BcUq?kRZ!x7(=oB>SjE~|b2 z+LO4$$UtDgADg)n-K(@LCooy0^?w$l*$wotOk6<(;goSTU;(xm`aK4^b3a%`e?h$r zyc-h}N#Ia+bWl~;aNbG*l{fds&opWORAuJ}?(w!bJa08yWaeteRq1vYE$33Sv3YqW z=}0~;CQ+y2o5C|qguxHV;@n>Kr5Usg*^KP8hpZ3Ly2=TIF637C%;C1>Ls7v z5^P!CQ%{yi1RZ1$1g;92PT(i+qt^I1Lf_tiCVbXrjNj?o3xNJwyudY0-N$lV2%tvY zZg-7sm5#%tp6;r7Vb15!V-^20(ZEGlv_uzORGqoIh20J?;Wp>WRzNZjs4=6k6 zsb8y~#(4r>Gedx!{b5}DOU86+(dgO8n5>p+|$J8-oBmhDiuD>8+HX@FLG*c)thN= zIw=@oJe|BSU56;gICh6-kJ_*14BN?S=%E@5UqyxW0KQb*YM4lxvWi{Z&{Zv$c^dep zt+(_~`TX?eP%k+fYuBZfi9SmsYa#U z6)3e~*Mmz2z16NRZ4@#*@@+lEFH*@NvXwLo%+7Oa311dtIpNOp=pV6`9;EM)E=!{RBOa4 z-FH~+{X2&s_;S)7#>WZMFvRuSiT_)$|4+aFhl)`&_-}OArv>6@&%aWDfv$;8gO<~i F{{i*zVB!D( literal 0 HcmV?d00001 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(); + } +} From 10d96b54680a11f746067e5c4213772df64aa834 Mon Sep 17 00:00:00 2001 From: Lars Vogel Date: Fri, 8 Nov 2024 11:34:39 +0100 Subject: [PATCH 121/232] Fix link to new Notification JFace Snippet --- docs/JFaceSnippets.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/JFaceSnippets.md b/docs/JFaceSnippets.md index f4cda73a3af..d871e4bec46 100644 --- a/docs/JFaceSnippets.md +++ b/docs/JFaceSnippets.md @@ -142,11 +142,11 @@ Demonstrates the creation of notification popups that include function callbacks 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/vogella/eclipse-jface-snippets/blob/main/src/org/eclipse/jface/snippets/notifications/Snippet085NotificationPopupWithUserInteraction.java) +### [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/vogella/eclipse-jface-snippets/blob/main/src/org/eclipse/jface/snippets/notifications/Snippet085NotificationPopupWithUserInteraction.java). +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). ![Snippet085.png](https://raw.githubusercontent.com/eclipse-platform/eclipse.platform.ui/master/docs/images/Snippet085NotificationPopupWithUserInteraction.png) From 2c07aa7c6b074315e4c17836f22497c0fc5b32b8 Mon Sep 17 00:00:00 2001 From: Heiko Klare Date: Tue, 16 Jul 2024 12:12:50 +0200 Subject: [PATCH 122/232] Improve and add assertions for random failing HoverTest #926 #1808 This contributes to fixing the randomly failing HoverTests: - Removes unnecessary focus enforcing: The code checks for the text editor having focus and afterwards uses different methods to force focus to the widget's shell again. This is unnecessary and is only prone to introduce further problems. - Introduces further assertions: in order to better locate the cause of the failing tests, assertions are added for the conditions, on which the execution waits, to be actually fulfilled. - Adds a retry functionality for simulating the hover event. Contributes to https://github.com/eclipse-platform/eclipse.platform.ui/issues/926 Contributes to https://github.com/eclipse-platform/eclipse.platform.ui/issues/1808 --- .../ui/genericeditor/tests/HoverTest.java | 67 ++++++++++--------- 1 file changed, 37 insertions(+), 30 deletions(-) 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; } } From beb991800cde73ba826b835542c0c61a146cd601 Mon Sep 17 00:00:00 2001 From: Heiko Klare Date: Tue, 16 Jul 2024 12:45:05 +0200 Subject: [PATCH 123/232] Bump version of org.eclipse.ui.genericeditor.tests for 4.34 stream --- tests/org.eclipse.ui.genericeditor.tests/META-INF/MANIFEST.MF | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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..a3dd34a3a53 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.600.qualifier Bundle-Vendor: %Plugin.providerName Bundle-Localization: plugin Export-Package: org.eclipse.ui.genericeditor.tests, From 7ae20058c2e590addd22b6d888b0c979c9490015 Mon Sep 17 00:00:00 2001 From: Holger Voormann Date: Fri, 8 Nov 2024 18:13:24 +0100 Subject: [PATCH 124/232] Require o.e.core.resources version 3.21.0 in o.e.search.core org.eclipse.search.internal.core.text.FileCharSequenceProvider.toShortString(...) requires the method 'byte[] org.eclipse.core.resources.IFile.readNBytes(int)' which was introduced in org.eclipse.core.resources 3.21.100. See also commit 906371db294e0d090180248d673d0c84f7b2d2b9 --- bundles/org.eclipse.search.core/META-INF/MANIFEST.MF | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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)", From 64af72a43163641a38c0ad1158a7b7d3ff206165 Mon Sep 17 00:00:00 2001 From: Heiko Klare Date: Mon, 11 Nov 2024 16:19:22 +0100 Subject: [PATCH 125/232] Find/replace overlay: allow pasting into replace input field #2509 While actions of the target editor are properly deactivated when the find input field of the FindReplaceOverlay has focus, the same does not happen for the replace input field. In consequence, for example, you cannot paste clipboard content into the replace input field via the according keyboard shortcut (CTRL+V). With this change, the functionality to deactivate target editor actions is also applied when the the replace input field has focus, in addition to the find input field. Contributes to https://github.com/eclipse-platform/eclipse.platform.ui/issues/2509 --- .../overlay/FindReplaceOverlay.java | 57 +++++++++++-------- 1 file changed, 33 insertions(+), 24 deletions(-) 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 9586c243543..235b584a566 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 @@ -147,6 +147,37 @@ private final class KeyboardShortcuts { private ControlDecoration searchBarDecoration; private ContentAssistCommandAdapter contentAssistSearchField, contentAssistReplaceField; + private FocusListener targetActionActivationHandling = new FocusListener() { + @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)) { + return; + } + try { + Method method = AbstractTextEditor.class.getDeclaredMethod("setActionActivation", boolean.class); //$NON-NLS-1$ + method.setAccessible(true); + method.invoke(targetPart, Boolean.valueOf(state)); + } catch (IllegalArgumentException | InvocationTargetException | IllegalAccessException | SecurityException | NoSuchMethodException ex) { + TextEditorPlugin.getDefault().getLog() + .log(Status.error("cannot (de-)activate actions for text editor", ex)); //$NON-NLS-1$ + } + } + }; + public FindReplaceOverlay(Shell parent, IWorkbenchPart part, IFindReplaceTarget target) { targetPart = part; targetControl = getTargetControl(parent, part); @@ -561,39 +592,16 @@ private void createSearchBar() { updateIncrementalSearch(); }); searchBar.addFocusListener(new FocusListener() { - @Override public void focusGained(FocusEvent e) { findReplaceLogic.resetIncrementalBaseLocation(); - setTextEditorActionsActivated(false); } - @Override public void focusLost(FocusEvent e) { showUserFeedback(normalTextForegroundColor, false); - setTextEditorActionsActivated(true); } - - /* - * Adapted from - * org.eclipse.jdt.internal.ui.javaeditor.JavaEditor#setActionsActivated( - * boolean) - */ - private void setTextEditorActionsActivated(boolean state) { - if (!(targetPart instanceof AbstractTextEditor)) { - return; - } - try { - Method method = AbstractTextEditor.class.getDeclaredMethod("setActionActivation", boolean.class); //$NON-NLS-1$ - method.setAccessible(true); - method.invoke(targetPart, Boolean.valueOf(state)); - } catch (IllegalArgumentException | InvocationTargetException | IllegalAccessException | SecurityException | NoSuchMethodException ex) { - TextEditorPlugin.getDefault().getLog() - .log(Status.error("cannot (de-)activate actions for text editor", ex)); //$NON-NLS-1$ - } - } - }); + searchBar.addFocusListener(targetActionActivationHandling); searchBar.setMessage(FindReplaceMessages.FindReplaceOverlay_searchBar_message); contentAssistSearchField = createContentAssistField(searchBar, true); searchBar.addModifyListener(Event -> { @@ -618,6 +626,7 @@ private void createReplaceBar() { replaceBar.addModifyListener(e -> { findReplaceLogic.setReplaceString(replaceBar.getText()); }); + replaceBar.addFocusListener(targetActionActivationHandling); replaceBar.addFocusListener(FocusListener.focusLostAdapter(e -> { replaceBar.setForeground(normalTextForegroundColor); searchBar.setForeground(normalTextForegroundColor); From 69f6e45a6a3cc74f553fd827c7fb86dbfe7ed7e9 Mon Sep 17 00:00:00 2001 From: Heiko Klare Date: Tue, 12 Nov 2024 11:23:36 +0100 Subject: [PATCH 126/232] Find/replace overlay: allow pasting in multi-page editors #2509 While actions of the target editor are properly deactivated when the target is an ordinary, single-page editor, the same does not happen when the target is a multi-page editor. In consequence, for example, you cannot paste clipboard content into the overlay via the according keyboard shortcut (CTRL+V), but it will paste into the target editor instead. With this change, the functionality to deactivate target editor actions is extended to also deactivate the relevant global actions (cut, copy, paste, etc.) that editors like multi-page editors fall back to. Fixes to https://github.com/eclipse-platform/eclipse.platform.ui/issues/2509 --- .../overlay/FindReplaceOverlay.java | 44 ++++++++++++++++++- 1 file changed, 42 insertions(+), 2 deletions(-) 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 235b584a566..80466fcd7f6 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,9 +13,10 @@ *******************************************************************************/ package org.eclipse.ui.internal.findandreplace.overlay; -import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.concurrent.atomic.AtomicReference; import org.osgi.framework.FrameworkUtil; @@ -46,6 +47,7 @@ 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; @@ -60,6 +62,7 @@ import org.eclipse.jface.text.IFindReplaceTarget; import org.eclipse.jface.text.ITextViewer; +import org.eclipse.ui.IActionBars; import org.eclipse.ui.IWorkbenchPart; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.fieldassist.ContentAssistCommandAdapter; @@ -70,10 +73,12 @@ 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; @@ -148,6 +153,8 @@ private final class KeyboardShortcuts { private ContentAssistCommandAdapter contentAssistSearchField, contentAssistReplaceField; private FocusListener targetActionActivationHandling = new FocusListener() { + private DeactivateGlobalActionHandlers globalActionHandlerDeaction; + @Override public void focusGained(FocusEvent e) { setTextEditorActionsActivated(false); @@ -167,15 +174,48 @@ private void setTextEditorActionsActivated(boolean state) { if (!(targetPart instanceof AbstractTextEditor)) { 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 | InvocationTargetException | IllegalAccessException | SecurityException | NoSuchMethodException ex) { + } 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)); + } + } + } + }; public FindReplaceOverlay(Shell parent, IWorkbenchPart part, IFindReplaceTarget target) { From f5354b71335e0815a0b254da8d3a1d146cd7072b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 22 Nov 2024 20:50:30 +0530 Subject: [PATCH 127/232] Update for release 4.35 (#2531) Co-authored-by: MohananRahul <121536011+MohananRahul@users.noreply.github.com> --- examples/pom.xml | 2 +- pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) 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.platform eclipse.platform.ui - 4.34.0-SNAPSHOT + 4.35.0-SNAPSHOT eclipse.platform.ui.examples pom diff --git a/pom.xml b/pom.xml index f3691ecb8e5..35b05d7c590 100644 --- a/pom.xml +++ b/pom.xml @@ -16,7 +16,7 @@ org.eclipse eclipse-platform-parent - 4.34.0-SNAPSHOT + 4.35.0-SNAPSHOT ../eclipse-platform-parent From 7aaa014a1d1053e012f2bc0b50eddff30cb2b50c Mon Sep 17 00:00:00 2001 From: Rahul Mohanan <121536011+MohananRahul@users.noreply.github.com> Date: Mon, 25 Nov 2024 15:54:19 +0530 Subject: [PATCH 128/232] Update feature product version to 4.35 (#2535) --- features/org.eclipse.e4.rcp/feature.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/features/org.eclipse.e4.rcp/feature.xml b/features/org.eclipse.e4.rcp/feature.xml index 1c784e56640..0b345ae6218 100644 --- a/features/org.eclipse.e4.rcp/feature.xml +++ b/features/org.eclipse.e4.rcp/feature.xml @@ -2,7 +2,7 @@ From 78fa7e1b16af6a7b1e959dbe5fb99caf74766d9b Mon Sep 17 00:00:00 2001 From: "Kellner, Niklas" Date: Thu, 12 Sep 2024 07:07:09 +0200 Subject: [PATCH 129/232] Use LTK Refactoring when copying (duplicating) a Project. The Idea is that currently it is not possible to modify a project when it is copied and renamed. This leads to usability issues for example in PDE, where the rename of a project modifies the MANIFEST.MF but a copy does not. This solves this by providing a copy project refactoring that can be extended using a copy participant. --- .../META-INF/MANIFEST.MF | 2 +- .../plugin.xml | 4 + .../resource/CopyProjectChange.java | 153 ++++++++++ .../resource/CopyProjectDescriptor.java | 145 ++++++++++ .../refactoring/RefactoringCoreMessages.java | 14 + .../RefactoringCoreMessages.properties | 7 + .../resource/CopyProjectProcessor.java | 265 ++++++++++++++++++ .../CopyProjectRefactoringContribution.java | 95 +++++++ .../META-INF/MANIFEST.MF | 2 +- .../org.eclipse.ltk.ui.refactoring/plugin.xml | 16 ++ .../actions/CopyProjectHandler.java | 88 ++++++ .../eclipse/ui/actions/CopyProjectAction.java | 5 + .../ui/actions/CopyProjectOperation.java | 5 + .../ui/internal/ide/actions/LTKLauncher.java | 14 + .../META-INF/MANIFEST.MF | 2 +- .../resource/ResourceRefactoringTests.java | 28 ++ 16 files changed, 842 insertions(+), 3 deletions(-) create mode 100644 bundles/org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/core/refactoring/resource/CopyProjectChange.java create mode 100644 bundles/org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/core/refactoring/resource/CopyProjectDescriptor.java create mode 100644 bundles/org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/internal/core/refactoring/resource/CopyProjectProcessor.java create mode 100644 bundles/org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/internal/core/refactoring/resource/CopyProjectRefactoringContribution.java create mode 100644 bundles/org.eclipse.ltk.ui.refactoring/src/org/eclipse/ltk/internal/ui/refactoring/actions/CopyProjectHandler.java 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/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.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/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/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); From 6a3eb3541f95c101700064497f03bc9435665b1c Mon Sep 17 00:00:00 2001 From: Eclipse Platform Bot Date: Mon, 25 Nov 2024 15:12:07 +0000 Subject: [PATCH 130/232] Version bump(s) for 4.35 stream --- bundles/org.eclipse.ui.ide/META-INF/MANIFEST.MF | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 From dceb0126d61549219040033649d2c8eab638e623 Mon Sep 17 00:00:00 2001 From: Simeon Andreev Date: Wed, 27 Nov 2024 09:19:53 +0100 Subject: [PATCH 131/232] Updated bundles with comparator errors Changes to ecj are for handling of switch on String. See: https://github.com/eclipse-platform/eclipse.platform.releng.aggregator/issues/2595 --- bundles/org.eclipse.e4.ui.css.swt/META-INF/MANIFEST.MF | 2 +- bundles/org.eclipse.e4.ui.css.swt/forceQualifierUpdate.txt | 3 ++- bundles/org.eclipse.text/META-INF/MANIFEST.MF | 2 +- bundles/org.eclipse.text/forceQualifierUpdate.txt | 3 ++- .../org.eclipse.ui.workbench.texteditor/META-INF/MANIFEST.MF | 2 +- .../forceQualifierUpdate.txt | 3 ++- bundles/org.eclipse.ui.workbench/META-INF/MANIFEST.MF | 2 +- bundles/org.eclipse.ui.workbench/forceQualifierUpdate.txt | 3 ++- tests/org.eclipse.ui.tests/META-INF/MANIFEST.MF | 2 +- tests/org.eclipse.ui.tests/forceQualifierUpdate.txt | 3 ++- 10 files changed, 15 insertions(+), 10 deletions(-) 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.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.ui.workbench.texteditor/META-INF/MANIFEST.MF b/bundles/org.eclipse.ui.workbench.texteditor/META-INF/MANIFEST.MF index c904670b20c..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.19.0.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/META-INF/MANIFEST.MF b/bundles/org.eclipse.ui.workbench/META-INF/MANIFEST.MF index b43589cf1f6..c0d826a9b67 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.134.0.qualifier +Bundle-Version: 3.134.100.qualifier Bundle-Activator: org.eclipse.ui.internal.WorkbenchPlugin Bundle-ActivationPolicy: lazy Bundle-Vendor: %providerName 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/tests/org.eclipse.ui.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.ui.tests/META-INF/MANIFEST.MF index d1081e4f6d3..4832c6b1d13 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 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 From d69caf3c98ffa18d6f5126ed662715faea48b3c5 Mon Sep 17 00:00:00 2001 From: Mehmet Emin Karaman Date: Mon, 25 Nov 2024 16:19:14 +0100 Subject: [PATCH 132/232] Bugfix for Hover which is visible above other application windows. #2534 This patch is fixing the problem, where the HoverManagers listeners are deregistered but the hover is still visibile on top. This happens when the hover was sticky eclipse was minimized and put back on foreground after it. THe shell visibility was set to false explicitly. Originally the isVisible() was returning false and it won't be set to visible explicitly. Version bump(s) for 4.35 stream --- bundles/org.eclipse.jface.text/META-INF/MANIFEST.MF | 2 +- .../jface/internal/text/html/BrowserInformationControl.java | 4 ++-- .../org/eclipse/jface/text/AbstractInformationControl.java | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/bundles/org.eclipse.jface.text/META-INF/MANIFEST.MF b/bundles/org.eclipse.jface.text/META-INF/MANIFEST.MF index f0f37e01f5e..146f03a2a43 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.26.0.qualifier +Bundle-Version: 3.26.100.qualifier Bundle-Vendor: %providerName Bundle-Localization: plugin Export-Package: 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/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); From 5ed97ff528a0629a923e8c76ea8f3ffaf6ad5090 Mon Sep 17 00:00:00 2001 From: Madhumitha M V Date: Wed, 27 Nov 2024 12:53:26 +0530 Subject: [PATCH 133/232] [Dark Theme] Visual refresh for eclipse --- .../css/dark/e4-dark_ide_colorextensions.css | 25 +++++----- .../css/dark/e4-dark_preferencestyle.css | 2 +- .../css/e4-dark_linux.css | 48 +++++++++++++++++++ .../org.eclipse.ui.themes/css/e4-dark_mac.css | 48 +++++++++++++++++++ .../org.eclipse.ui.themes/css/e4-dark_win.css | 47 ++++++++++++++++++ 5 files changed, 157 insertions(+), 13 deletions(-) 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/e4-dark_linux.css b/bundles/org.eclipse.ui.themes/css/e4-dark_linux.css index 3f9bf6cd768..a26136e27e0 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,51 @@ ImageBasedFrame, #org-eclipse-ui-ProgressBar Canvas { color:'#org-eclipse-ui-workbench-DARK_FOREGROUND'; } + +/* 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; +} + +/*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-tab-highlight: '#a6a6a6'; + 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; +} + +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-selected-tab-fill: #1E1F22; + swt-unselected-tabs-color: #48484c; + swt-unselected-hot-tab-color-background: #2f2f2f; + swt-selected-tab-highlight: #2b79d7; + swt-selected-highlight-top: false; +} + +.MPart Form Composite, +.MPart Form Composite Tree, +.MPartStack.active .MPart Form Composite Tree +{ + background-color: #1E1F22; +} 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..2bb33eab710 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,51 @@ 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; +} + +/*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-tab-highlight: '#a6a6a6'; + 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; +} + +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-selected-tab-fill: #1E1F22; + swt-unselected-tabs-color: #48484c; + swt-unselected-hot-tab-color-background: #2f2f2f; + swt-selected-tab-highlight: #2b79d7; + swt-selected-highlight-top: false; +} + +.MPart Form Composite, +.MPart Form Composite Tree, +.MPartStack.active .MPart Form Composite Tree +{ + background-color: #1E1F22; +} + 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..a2ba03abeee 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,50 @@ 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; +} + +/*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-tab-highlight: '#a6a6a6'; + 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; +} + +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-selected-tab-fill: #1E1F22; + swt-unselected-tabs-color: #48484c; + swt-unselected-hot-tab-color-background: #2f2f2f; + swt-selected-tab-highlight: #2b79d7; + swt-selected-highlight-top: false; +} + +.MPart Form Composite, +.MPart Form Composite Tree, +.MPartStack.active .MPart Form Composite Tree +{ + background-color: #1E1F22; +} From 54adc6ae7a7c8db9333b95d728c786b93446a359 Mon Sep 17 00:00:00 2001 From: Eclipse Platform Bot Date: Wed, 27 Nov 2024 08:50:52 +0000 Subject: [PATCH 134/232] Version bump(s) for 4.35 stream --- bundles/org.eclipse.ui.themes/META-INF/MANIFEST.MF | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 From 5930e6bef30f8ee6e98472e06ab31290cbd26c9a Mon Sep 17 00:00:00 2001 From: Matthias Becker Date: Wed, 27 Nov 2024 14:41:56 +0100 Subject: [PATCH 135/232] Move "Light (Preview)" Theme to the "Light" Theme - Copies over all changes done in the "Light (Preview)" theme to the "Light" theme. So the changes done in the preview theme are now the default. - Delete the "Light (Preview)" theme as it's no longer needed. Also: - Simplify the plugin.properties file to remove duplicated strings. See: https://github.com/eclipse-platform/eclipse.platform.ui/issues/2114 --- .../css/e4_basestyle_preview.css | 20 -- .../css/e4_default_gtk.css | 184 ++++++++++++-- .../css/e4_default_mac.css | 183 +++++++++++--- .../css/e4_default_win.css | 176 +++++++++++-- .../css/e4_preview_gtk.css | 239 ------------------ .../css/e4_preview_mac.css | 212 ---------------- .../css/e4_preview_win.css | 213 ---------------- .../css/light/e4-light_tabstyle.css | 3 +- .../css/light/e4-light_tabstyle_preview.css | 79 ------ .../org.eclipse.ui.themes/plugin.properties | 7 +- bundles/org.eclipse.ui.themes/plugin.xml | 24 +- 11 files changed, 475 insertions(+), 865 deletions(-) delete mode 100644 bundles/org.eclipse.ui.themes/css/e4_basestyle_preview.css delete mode 100644 bundles/org.eclipse.ui.themes/css/e4_preview_gtk.css delete mode 100644 bundles/org.eclipse.ui.themes/css/e4_preview_mac.css delete mode 100644 bundles/org.eclipse.ui.themes/css/e4_preview_win.css delete mode 100644 bundles/org.eclipse.ui.themes/css/light/e4-light_tabstyle_preview.css 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..659561134ac 100644 --- a/bundles/org.eclipse.ui.themes/css/e4_default_gtk.css +++ b/bundles/org.eclipse.ui.themes/css/e4_default_gtk.css @@ -13,62 +13,91 @@ * 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; } ColorDefinition#org-eclipse-ui-workbench-ACTIVE_UNSELECTED_TABS_COLOR_END { - color: #E1DEDB; + color: #F8F8F8; } 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; } 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; } ColorDefinition#org-eclipse-ui-workbench-INACTIVE_UNSELECTED_TABS_COLOR_END { - color: #EAE8E6; + color: #F8F8F8; } 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; } 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; } ColorDefinition#org-eclipse-ui-workbench-INACTIVE_TAB_BG_END { - color: #F6F5F4; + 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: #EAE8E6; + color: #f8f8f8; } ColorDefinition#org-eclipse-ui-workbench-INACTIVE_NOFOCUS_TAB_BG_END { - color: #EAE8E6; + 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 { @@ -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: #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: #F8F7F6; + background-color: #f8f8f8; +} + +.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_default_mac.css b/bundles/org.eclipse.ui.themes/css/e4_default_mac.css index 157aaff6450..ab00a5b773c 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; } ColorDefinition#org-eclipse-ui-workbench-ACTIVE_UNSELECTED_TABS_COLOR_END { - color: rgb(255, 255, 255); + color: #F8F8F8; } ColorDefinition#org-eclipse-ui-workbench-INACTIVE_UNSELECTED_TABS_COLOR_START { - color: rgb(255, 255, 255); + color: #F8F8F8; } ColorDefinition#org-eclipse-ui-workbench-INACTIVE_UNSELECTED_TABS_COLOR_END { - color: rgb(255, 255, 255); + color: #F8F8F8; } 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; } ColorDefinition#org-eclipse-ui-workbench-ACTIVE_TAB_BG_END { - color: rgb(255, 255, 255); + 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: rgb(240, 240, 240); + color: #F8F8F8; } ColorDefinition#org-eclipse-ui-workbench-INACTIVE_TAB_BG_END { - color: rgb(255, 255, 255); + 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: rgb(255, 255, 255); + background-color: #f8f8f8; } .MTrimBar { - background-color: rgb(255, 255, 255); + background-color: #f8f8f8; } .MTrimBar#org-eclipse-ui-main-toolbar { - background-color: rgb(255, 255, 255); + background-color: #f8f8f8; +} + +CTabFolder Canvas { + background-color: #f8f8f8; +} + +.MTrimBar#org-eclipse-ui-trim-status { + background-color: #f8f8f8; +} + +.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: #f8f8f8; } -.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:#f8f8f8; } -.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:#f8f8f8; +} + +.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: #f8f8f8; +} + +.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: #f8f8f8; } -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: #f8f8f8; +} + +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..5eaf9892fb7 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; } ColorDefinition#org-eclipse-ui-workbench-ACTIVE_UNSELECTED_TABS_COLOR_END { - color: #F0F0F0; + color: #F8F8F8; } 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; } ColorDefinition#org-eclipse-ui-workbench-INACTIVE_UNSELECTED_TABS_COLOR_END { - color: #E4E4E4; + color: #F8F8F8; } 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; } ColorDefinition#org-eclipse-ui-workbench-INACTIVE_TAB_BG_END { - color: #F0F0F0; + 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 { @@ -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: #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: #F8F8F8; + background-color: #f8f8f8; +} + +.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/e4_preview_gtk.css b/bundles/org.eclipse.ui.themes/css/e4_preview_gtk.css deleted file mode 100644 index afa55f73283..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: #f8f8f8; -} - -.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 fe8cb0a1003..00000000000 --- a/bundles/org.eclipse.ui.themes/css/e4_preview_mac.css +++ /dev/null @@ -1,212 +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: #f8f8f8; -} - -.MTrimBar#org-eclipse-ui-trim-status { - background-color: #f8f8f8; -} - -.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: #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 Tree[swt-lines-visible=false]{ - background-color: #f8f8f8; -} - -.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 9b30f814d06..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: #f8f8f8; -} - -.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_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..d784c2fcdfe 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 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 @@ - - - - - - Date: Thu, 28 Nov 2024 09:42:02 +0100 Subject: [PATCH 136/232] Add Keywords to "Appearance" Preference Page Add "Icons" and "Titles" as keywords to the preference page so that user can search for the "Hide Icons" and "Show full Titles" settings. Fixes: https://github.com/eclipse-platform/eclipse.platform.ui/issues/2553 --- bundles/org.eclipse.ui.ide/plugin.properties | 2 ++ bundles/org.eclipse.ui.ide/plugin.xml | 8 ++++++++ 2 files changed, 10 insertions(+) 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 @@ + + Date: Thu, 28 Nov 2024 13:20:37 +0100 Subject: [PATCH 137/232] Fix undo / redo icons according to standard Contributes to: https://github.com/eclipse-platform/eclipse.platform.images/issues/113 --- .../icons/full/dtool16/redo_edit.png | Bin 496 -> 515 bytes .../icons/full/dtool16/redo_edit@2x.png | Bin 925 -> 1048 bytes .../icons/full/dtool16/undo_edit.png | Bin 477 -> 510 bytes .../icons/full/dtool16/undo_edit@2x.png | Bin 921 -> 1058 bytes .../icons/full/etool16/redo_edit.png | Bin 607 -> 657 bytes .../icons/full/etool16/redo_edit@2x.png | Bin 1386 -> 1477 bytes .../icons/full/etool16/undo_edit.png | Bin 627 -> 661 bytes .../icons/full/etool16/undo_edit@2x.png | Bin 1331 -> 1505 bytes 8 files changed, 0 insertions(+), 0 deletions(-) diff --git a/bundles/org.eclipse.ui/icons/full/dtool16/redo_edit.png b/bundles/org.eclipse.ui/icons/full/dtool16/redo_edit.png index 621cc365f299a6e0f3d33e54d4f8c63f4024b2a3..b8d99e3345cf604138c0ecb839d2beeba4df714f 100644 GIT binary patch delta 489 zcmV(V7Ub+2wg-@{{{qE8?M zow|tlZhDctxOfOe#Drv3kPs0!U)Oct%4DbiEUf676twW)-RGH^-^??!>+$(~p8v?c z#bU9ucs#B|qtRox!*8;0iA3T)l}cH7-ntzCzw-P2Tkic80DppCOQjOwSz9&+0)ZV= zMvu7o-5tCDB$G+G+wC&IK)|VE42Q$pSX=pgUI*hDYwwQ$IL*i7G1Y1{3yvL>edIVW zK-YCD6bdF1h>=KSe+_`Me~d;Wnog%AisBp)Bb`o*&QwMhsZ=akmhE5$Z4%q- z^*T>X1?1cY;9M6dR~-xn#7ALqPuy~B!{Ly7Vgc~JXa>$DG>e+eCP|XCA|ACM2s~;r6k-Y;EPAjk%=!`zDU>H6!)G>| zopM84trlf684decB->q?!X^Q*hfG$Z(I9+m8rFCGaV`6-1ucvJ0RRYDbp+nH?SBFw fumxSaZH~SH7gt0AuY(m300000NkvXXu0mjfW18RG delta 470 zcmV;{0V)221n>ipB!9O_L_t(|+MScTY64LZhAmQ9q)d?qu*d_XOr17esz91xnI?6r z6nTM=(%==v`=wGyp&*1Tf-I&I1s7d(FS@#}5dxEc7FN9HQv4kD%sJng`DfPU_xnA; zVDR1N^SQlVuj{XJg+ignL?ST{1OnIVLG0cA2*BmHdc96q%YW-Zz$q4sy+otYgPnkQ zJg(`wPMJ(b!@-l~U@Dc8tJSIr_-i;EKHLhxA!RfgQK!?PWHKoMa_R*0`Fz{5ED}ZW z6EQIoi5zbL(&@Bj7zT~UW0GZ=ip8ReJ%t5;Ih)OhAkj+Y#u3RoB_If>X zAd|_&UWdaWO@F6TTc&B+`64Y7m{jULN)fHYo+WRy8=NDeqH%cBlwWdKfD*ylh M07*qoM6N<$g2fcv{r~^~ diff --git a/bundles/org.eclipse.ui/icons/full/dtool16/redo_edit@2x.png b/bundles/org.eclipse.ui/icons/full/dtool16/redo_edit@2x.png index 1377ef566a0c289223c2e4d76a3f1a7eeb0e482f..237fbf5f16a9966508541ba943eda18c7e505fbd 100644 GIT binary patch delta 1026 zcmV+d1pWJ+2bc(uB!AyYL_t(|Ud5J6NR&|&$E}d;A+!s6tb!IHfvffv(Xv(hD5PlJ zIw)ENK|&jo5PUyJQ+!R1jw3RlhK`C492{TcIOB74w3NJ^|K&R$ch2YN%)(mynD4vy zJpT9GbMH4<1qB6J{}ac+zb5IWuC6YRm?wS`SEcc3kn}=H+kXiKYHMphOXJhPeyFOd zx=e`=SO5`{#;1Y(Kr4QT#2pR-!zaJN6`~Ax6 z^>P(nNCy-0xnxw#)6me6D{W4~exLwf5omODRE>>|anSG5!NlcqTeH!1D64qCGva7p!@;x3{OZx3^VKPY?UV ziTl!CVg}Mj5G#Rzcs#BqCnq`BA@T00PN(rdEC3`D34hh!-_L%($mgl_NhKfwr?s^; zTL4ysrsP!;QKFc5YXEV!fZg3)En;wRkbNNVwM^^~KuUvz3WvkC02VPfH>aBn^GDIx z*r*e8aIwIJ2{}daEoEz4Yz5A}f$fBKBbrjYf4dLWn8G6m%S>J;y-2`T2SMouND+ zP+eVpEvX@B@CPPGMn=@?>Z*1!;b7??eGw0L41fBlrKQCdktBc=JtDM9TtskS5Wqwx z;3SOc3s6;ny9ND#JVbkv082zKCcC=2R3s9y9VIe>nM8tb3&5$t%B|#8Wo2bK4gq9v zng?=P3kwTc2nWdo_yJTCx1*I9d?+j|JcE1=0ag|AsY}Czq9dbw0%sk8G6j2% zYJVaYu}?fRb2*Y5mAFa9UdvGn@pwFHU|>K^O-<>*5GBFalnI4Gs7xFh4AD8PgQhgO4QSthARn1~LIXf@D}Rz9ClP1LCE$O@(716Yyy@R;;MpapJMGI}XP{CQ!0$ wL%;&P-<38e;TXsiD!-4C`>83f%ei#;3m{YAQWrZqssI2007*qoM6N<$f}B&(W&i*H delta 902 zcmV;119|+I2%QIzB!6T{L_t(|+QpYGPn%H`#}SAL1OkDWKujPeCJ__JiHXSx1Y#kG zi3!Byl6?RK0Tp!#l^*;rKP2p{QO+v(ATfJ)eF zMovZ*{O061J3HH>Z2Q{=Fw;+KYiqQ!vceD_oE#No%GkbdcLv50Xm4+iLZJ`?OgTA< z8GBGMKDRRiQwS7^MCjz?goCD+mzQ5S06Yi?Xrfhs00JZu3A(+#C7;j70Y{rz0x@gQ zq{rjwekwo$&VLsd7nINEDI5-Su!QOheGO(H3A=1IOGigXq-_5fKQ9XODF78XV)TVV zK`RglFho?1^i?B(o0}WDzrUwcDn)L$oBhJdZ=hKK?ZnB8#Uf=g8S?x694v<-vu6W! z!r+xkMMGR&T~+x?fUvUS$~D5f#kCUxVyX4&)Cw!cGw9Z z2;;M}vnl{Xl*?tkz8f1GW)Lr+1M z#o){ml-1vnM@wKJJ}Ui&5vmu&aBfxbhmMbr$$#th@~F`l-u`nV5)k7`I9_RWb(NCI zBwb!!YH`3uVp}MkPE#}*mFteyJy`QfWe!fRJ{NUM;!gQiV2ZO;Xl&zhe9qBXO=x*V3>p^jj8kk@$AY5W_5<;h^ zr+@k+74N?`bt`UG7|Gn+92(arPJ)XJ5~J8~HkjY@veG*SU@cP;$zrh>9UdO)yMRd^ zY33O27y#B=6x*g!|C2vV+5upx=NYGqY)1jC)rGF{R5xRcW5Gwu-R-&NIIF12LgeMP$;AYgTX74NPmajZeO{< zbUH2Yel!UQx7)oA?R`8RS7D%Gy{vOsA3!*2G#UaG^h{!p$Fqfmd?Jx}RTM?gKH zTy8uZ4h54~L4UK^6xC`~)a!LI7z`$H^0iuxGkDU)M-a;_t=H=bmdE5pAfL@g9x7(uA=?F=ZCSaNKV4OKfo9@PY1i- zQ9GT1%jMdJNj?^fjo2@b$%t~fEHGU5&7-|_I-RRC23>^1;aEdE(MTksR4SFpprX+z zOMOSY0bvL&pBXhX1_Un+1edrZN~u&5s7%9pV?J-8fx+k;yQ(k{{3qu5Uk$!ZPJ!p2 a488zuzeM;PdV_5M00009>2+EvvWW$wkF47u|O)7dVd7O@cOVXx7%%zPN(lT zCZj?S&gWLEHBTm!hR1hUtyWFLFhnMkdD$d;KbOm?ola*lolaS04Z!*Y(oJ30h2uB` zm|kfI#bQzK^?HKIv)PP*PXLW_x%}2>G)9(X3D(`tAWLT;p8UU@#D@VB7Z6DAQ{zpCm~R6rWP|9ssY+W^>NQ z&?t{anAf;J91bb}9mn;r8W+gt^MFb&RWN{!+GO2sS5zt$i%0%3iKGE?TdUP)up2JM6{tEh!U;HE#IB3ibpbp;j# z?b-z`qE!$iw8;X&yN)*$O~pYQ5y1;y@tTU4@$Tq&>!zpYIm|m9&v9nH7S`g&IOja? z`#j(I&NiYZpRbOA9)MYusL|`c|p>T{1 zYHMp1zUyW=Ie$6FZLLvr0h;gBE-o&r@$qp9;CICFz>=k-Xr9Fl4Gk(33Pl5CXJ;R? z^#bNUQq$7XqSn{f)$Hu71Q>M0v4Hpn2(z%MsY!*yVYR)z9eoA1UO?!FoX4I~^Yin% zZh3iG>OxMzL7>S!h`+I@wY61kZfN*Lqy1FWLTaKY+{t8c_#l5|~ zx`_l3Dk>^?oDPKhWO{mfpE(HzgQEHBm=bO%Onwk^K7kaokr{-|c&xg+yQ2&Y45+!e zImehAkbjJhj!J+A$DHRG6Xg_ehmVboMGJ{ElQ6L`b!I)^e`jZ>1bDm89C!0s41VDx zmv&-eLLW84LSi=aiquLkz8ZQI7Z=}+nimxnox?yc(D(J!)RbCTSgsB}ah8^rG(58s#D5Ot1-rJZtBdBOk={B$etv#3Rv>_P z9>n#!%QMTQf`lRiEool>l9`!#6qBzbB7N)eI5D|khVshH%#5n9uNU(rJm3}a+!sJVx(DC~ z(0{4ffajeskXNYh>FLqS&R!sh0O_WeV{U}F2|_Hasj1ONlK;g_B$U9Q!^6Y+%J%#H zrZH*8lV7xb9Ahg)8kk@M-U}lmBl?60G~_Kvv#P2py~Kv0FaRF$_1gUt28e`61#N7` zYng_;BLr?(!)y=qfKT8tNVEIdI0FZPV}E+0prF79v{8F|yPBMw)USnOU=Li+%gZ}y z*CxUlhy{$3VDctnr~-k286f5ll0-NIiGbM?@RO#z)43x2JJvf+gfrj;yplU0EKg73 z{U(fuGvE~jxCY~C34rf0e-+2W8TcEp>CVHPCnR9cdF40e594uLN~T)?0000ot11M5N zCm*Vicjt18aI^-P{2Hq!hY27i7)+#>NL2GCOA(m+ZX zKo=UGqNOO7auNFuu|q>cG&MCP23j8@{!yMMa1q~*IEXJSEJzo=KUBPlxz+7-krP4O z>gpwhuCEG{n6`T04eQYp#HxDvOD1d-(T`|lEogb}~Gy85pH>(B{dJroL2 zCX=Cyiwk2y^4y+WVFU+*K{`4*vc<2jukAwUki+mN>~(96lF20Ha=FS3SX(EKz>$%W zJ3K##7c)?ba5zjSCnuE8=WPS1Bipy!;H0?&G(J8~>3?+E6am@<1crx)v8Qb?Y?G6d zw6(QmM721;5F(E2|1Q<`X66P#)6>)TvjbAlX-1>hwJ=%_uoW${zGC8S%pU|`YR}Hj zD4WgN$x=)kDu#}cT!30LGc#hKqd>g3xA!Z9g}YcRX2bzHfJ8wTEQiiR9f0E)I?M-q zkMkd&b$^l8*VoN6$FKk~B4z|#+=-6U`SEyM#1qh!w%756TP$FJuw`&q2-=KB7cPb~ z9(6`XN5w!#!RxrEr{_JBX0YXGcX!upA3+-uQ{`~xEG;b&>N7W9ulM!6?*Vr8mKUQ4 z;uFub3*FFYQ+qGWFgNOsaNz&}>EFB&m-b0LO_V)J75YNxgoAV!cY}LszpPf48UP51(8x+7@ z-~>B3I4A&b#ksjT8XFsd;49Doo$_nATKny(e z+p?lykH_=U`|oE&@$9Q=K+Q!vbF124T?3YhCMNrA1^^Fc!?PLyot>R^l}`SX8h9*! Y0bVl9a|PQ!Q2+n{07*qoM6N<$f?rCh9{>OV diff --git a/bundles/org.eclipse.ui/icons/full/etool16/redo_edit.png b/bundles/org.eclipse.ui/icons/full/etool16/redo_edit.png index 5e40a43ae4762f971691ef2284a5067da740b59c..e2b48dbd2ec899b19d4f24c404d6596e38453e03 100644 GIT binary patch delta 632 zcmV-;0*C$I1d#=hB!5^*L_t(|UagbgOH*MO$4@~wAy_tT#W^&$p&->wU3F7|7eW04 z(p3>&Nc(-Z<`D5hB*D5{xJ-wd6Q{-9o0M;-PW zPYA=!H#VPH>0x(OVP1A$2Cqq$+FJ@@CfF$WtLZt9Azyi*kqHE0dl92ucecm@VYeo) zFuQjjpZVnWZh!P85POHnU}K82(h0ss9qy}9zx7$tP_29s6ptlFdHs|{D1PkL8o4R#aCOlA#e=WxH7#iDo;E$tHaJJ zg*?-oO>wLC%+(IIgllKj^G>}o8ECo`!;}@t_eSsy7vk+kb-$zX^igTwZ*l4s#~gQ+ z!um)BT-9aqR$Yl*{J5mg{SomWAO>(6OE+6IDy>xiE22S*RyE_$D6dPk1AYSNMsZ_u SA?NM@00001>XdaB!4DJL_t(|+MSa@NRwe0$9L$^!NXF_;aq+>Z9zeYggS-LA+TG= z3WB7I9dh6Nw(lcq1E~&CM5L!cTx)ah=G%pImuW)U-Mv&^mO=C)?8?ce)t z!XzA=!d~;3ejDj;RuI}=-0O=8yM=@o)^vlC5 z$!0I4+G=l2xI7qB`Bqt<807*qoM6N<$f>)g(Q~&?~ diff --git a/bundles/org.eclipse.ui/icons/full/etool16/redo_edit@2x.png b/bundles/org.eclipse.ui/icons/full/etool16/redo_edit@2x.png index 2d9232b671760773abeb7a2461d7fb8c22953eb3..6b8812ae4d0ae34f6e614e2507912edad7b1a081 100644 GIT binary patch delta 1459 zcmV;k1x)(t3dIYMB!7%aL_t(|UhS59OqF#Q$4@oaeJKYKxnG)_=3J~+ZEZHKxz^U! zT3P?(ayh1Q?jV+0qNX!ZOdSDoIf5kDb40uW+9AOU;ibS3M39>v#3QIj4S_h{p67kf zi-#X%TJm4t?K8&v`##U}eSh!oeLVGqP^gffs^)VL>FCoAb zn!L7%>tm|?#S@>S!2_0PwG@D86+L4ri&6a!54OceVBd;hDa7t2FNBLeQM6OrDRkli zt?Ef}?V(g?oUnw4*8DgZRVj1iU5NHtAo@I&6*K8s<&jxT6Ks28y`L974=ieu%8i;! zO}Kb?sXKtWSby|+${ZK+)V%=Ae>l8+2i&CV)c3gCQ4DL$L~hz=iS-H)y^2yIRpYpZ zy=CiORzfsA$fFw}Dz4`S&ctAYM*4BT$R(SM}(l@LyAjC!`{|65u36{JE} z&v6QH8n{)1*2;}aGZ(RXw3ANP2ib#xTf_|v_I9E=Yo78r?iL!o=883=ip+Ni^mp0h z0L~iV_Bk|`t%5b0&jWuS)K@Jg?=)(@@*Zjzuek=CQULT{1Mb>UQ)p0X2CXJ_lsIpM z3QXS31b>`O1r(r~0{lw5aF#;UqwDt^l&*gbygnL5%R+%Z2XR#zj@}O7j}|nPu0#Qa zmweIcHR8-+$~Sr+$~R8L--ov#2E@vOCjojJLl2eP>c(<4XE3;D3sZDzf22iLWZu7u;d7XXicb=B&?bTaR7#jfYpJ(#f&EF4kzG|1j=Yt&MB>c2_ zCUC73=srwA%83dJb4(6%;}_`-k5f zb15kLdMaoRQ=6ml_8S%=+vs~Z+b|gyN({giI*eUbqKJx%-GTPY%^W4vm?`z3M857g zAp6+QbzIMVxL;=;J*^}Zubu&(lWp*;9e*A`J9*Ady&tUKOv6BHI$+PHBKk6R=2C-v zxyhA6!a_|M4ya&}uS@IlFsY8~xzFV+Vh8NUmLYdZD0oh`-mhd>09KYRpdw4}58KvR zaJ3}^m(qv~DmF_Ea5+&^gGPS`GW?hh-K;BnVaq-{+xSH1kE%C%gYPiWwf(P__3$xMfqu?#y;m^izQNC>! zxEIl%p$nWZ&Kp%3rtrXYUC@zqU4Jl`912pNI16=_PvAJNrN%3P<~1IymT6k$CJw!| zOR;y|t5Q92Jxv$%wm9d$;%!RT1b>mH4XGpGNrpZYyH`b^B55|-56uG_za*9d=b2bs zuUd$_Elm?zm8uW@cmE~bPbrap&!j|!yq=;7a}gMenDBNd+!X`nU?wk>Zc!v~TzVGBj?n27(hDt9aq z73NG{9R9B88#ARuzB0}uKrBb}4g6rzbvobfUj=LI*HxvgBJ#Zpiq;Eiz+q9P3Og6Lq@Sx2$l zsoaF{-}9VvT2FLRWs2FG{6f#$=l?wa^StkSdN3HYktd?w%706ViZi^3k!v?C&KJf( zhK)?PfqZFd85IV@pC`2V5!;k0+MPpVfafCV+^eG}yOX11o=N+;aQUtUDB1CbV!|UE zKa8ZylcIb|$HdeR{%iYJaiXj46}XnaQtQIhw1@^CbZpoo8P|;402kv#-jWmq>h^?^ z`W>m}mm(M#)_<9xPDI(qXF!fR%?bSHcVe`?6vw}QO-pJ_dXgo$oVNx#BfHB|4U?X> z15GRrHoJlDvuHZGKC}!?h4Ra$F*@MoxW1NZcq{kdX!5jCW&a3cA#c#9Fc3As!jbk0 zpr;0--L)wDZei$-8r@Q~bxZ?yF9AaV1g;mLaDyeJyMIC_$^4`S6cM_s$-wVG@G|;* zzv1N8xuIlTyvZK!2JaKaK%fyA?gs9+qvv)d>C}_NOY}JN4;yG>!Tr_}%>doey=&n-5rw(<_ zByesfS2k|>*AtQ}OtxGRjcUh7Kxa9bs3a5TRDUD9B)#>@zCiG*vNTF(xJZ~rb)LWH zIPM_pSWl(|B0Kz<+Kl5GVxN zihoIXf;goaqC}mVDTOmSLUUzm9LKYc^=(CJzPm?pr*aeW)+K=J5a*8A%nyF>Tq4$< zBVtiPyLYt31+;odl&=U8D9}t5sm2tJ>j=$h#W3|9`NWs5Mu^qa!ruR^vFHb&8(y{GE=WKYyT` zdmEhJCCA-!invElMUE7|+$G{iTp|wju8#rVPr#j@iC>6cDUm}-rjntNuEU|mDe(tY zz3)eK)^0*UY9csqj)?1W%F`D<_DH&<_*G6ZeVD+hoo}M|(q`bVeMA~?dq4607=P?n zb{ZUgjtMfpV`-oSZFY96Tgu3=`0EZ1Y@H zq%FcV&oTrmzW|yysWg2>Y$P_|Vt>}s2O4?ifk^KbkMD*&+mtCRNm;^jFiXs=A%+R) z>91b{+^_@JWsEeeMd_Y*!rxKxb8;>wth~=zyzz4fQD7*t67QS9rKmB zEZNeXA*?H&>)UjOWbtN5R`i}-PS2rb$lI6*zNW%gvm}ev@VrOJz?DNwkWig6TPdC? zS<4*B<`~07jF5p4>C!CMxHsGQ4Csp6tn@Ovc#>fvN7#U{roNDWXdSjW=FBfGuN(gF Z;~!4%bN|Uc$YcNj002ovPDHLkV1nE;vULCe diff --git a/bundles/org.eclipse.ui/icons/full/etool16/undo_edit.png b/bundles/org.eclipse.ui/icons/full/etool16/undo_edit.png index 41f4f2701a3fab9223e91f2df5eba0b5e7a62840..fa9b6cc92e58a53e225c9fc02dbc2f68be07c22e 100644 GIT binary patch delta 636 zcmV-?0)zeY1eFDlB!656A(*!1s!irRC|Gz?H(eEU6A9f5 z-4rAw&V3y>oh1_CMVJ>s;Yu5RY}7tH#~qW2U6iIlrD4(hKsHk|UCz&)`8CheITP2m zi|Vc)JiO=sf6nuN-xtmyi2s2@Bgv-?l2w;ZaxT?N0t9iOLw}cfIknGF(tE5~!84|; z##AqkrGz--G0ADSJ`>_|qUSNoM}727u;%P9iTyZ^QfXRerF>wZv54!?ALDCliG%x| zi^?eUn6o2XzzxQDVmUDv!=X--dd#PMA8pq+_{a=|6Y%?cHY!4sy){v+jR4^>AmYc`bRU8~28$Cf5nb`^^#y-v)CR_^^vA+>o$P|ss92xw zzsn=^3Rvm`R^9=t9|R2vf#JPXti`_Ik9F&Lr&0Nguz%gk&afNgp%KS59&>hJ-U%!) zK#&D~b_0uEK|On`SO>en&(ol53f9}SvWu}3w3aK**eh~^BQJ`#G1CalHUZzQf?9yN zw%-zJex@03pIqUdn{s>O_ZP92DrM~zr0>n+OOf5lIv{XgP(3j9Ag1M^YD};<;H*B) zwNs?`p>>)(oHRhhQgZT0i=OOZ>&}L^K5Kz-6TJ23*R5LBRtrV`Xr=O)=CYitsktP? zkEU6Z_sCvV5MCWDhNVo!TeZrgsqg)jr|R5tt3IC-20;8LQvH9zqE;0(mFEWjG~gFv WfO6DocZ3rF0000B* zE=;z-UU+!;p7(toUcT=mh#HEqDGqq_l8zGB;wL=XLv3E21b<%L!Q1-|3Paa?hQn)r z>myb&xX^pPIAUpZ?`a;UrN&`n;}4%v%2tHZ61mX(zP;3gfQ8(sGS1kDx`0LYbn@Zp zeEPi~ehZoU({pPY>iuT%8CZ}e*FYf%zMv+g3;G?B^uU4Y> z>Lm{XmZQmcj(;|;$VR~@=TWhp+t48OnaFUExyluDVSw8Jb~mv;_XI0r_xROu8#3!t zf*uEUBFMyE!f!oRzMnz8?1abIw6*MQ=aHEQvOyrX1hC7(a8y97%4D>n?8 zRQXi!KCsCETTUS15-4$`AAmHQM*si-07*qoM6N<$f+)}^LI3~& diff --git a/bundles/org.eclipse.ui/icons/full/etool16/undo_edit@2x.png b/bundles/org.eclipse.ui/icons/full/etool16/undo_edit@2x.png index b8bc4a9188d0a9a669ebd4657a1b1a92bd92a414..ecc25d00d24a9f026eb609778856105a273766c1 100644 GIT binary patch delta 1488 zcmV;>1uy!u3gHWoBYy>`NklPwAjO*Ks) z>O=6xYXGWZEp5FVb*;{_F)FkBBw@O1t$g<7ikM?JP-L6J?F?c%035E(wG!<^}mK z7&UK*b)(kyNcTr`O|CZemZpb$JuKD?Rh~%`%5~+5Z=o`CmegZ4x<-g~qtcMWq&`oW zqk|q0>xPP-Ie*vL_kD%NJ>hC!vRL>t7VqZn?h04JI*&n#vC)TT?^%Sl-WS$9J zK7_6Yi+Tr6h_$y=UbtokHFR-fS^T@`@3sSd9qNgOSbwjI4(O-6Ua;63-OaxMU4Npt z-KGX`i1j1NYIK`PxBa@bi}a5$aP<_KpC=sZpaHQ*dP9twCA`Kp&1LI>o*JOL5>7{j z+IK_j`Zj-8Iq z69sZ#&k5T7ap@6s+4I$!M$uCeAE+FoXHvG&gNnS-RI*mOb?B+4VYS3b3PNY#S_>{V z7NK^}Dpc=WGDw3h1`d0XTz92T?(421^P|!sJbzQZ9y~kS=)PCW%NQ`R4_V^#Q_)g0T=fZCDeRS9&+gq8dyObmUlIj%M2S<$aRwGLAjsj(7fXB zr+c~=oASo$O`*K7hhwi7#nPI`UL7s+8R*pxsAlu)G#WeTN= z8LzXUP444Cj+0%)bja4LaFqChD`8U->d!L}&jwvIr$vVYEX zW~tBFngrX18Ia~1{0>J)yWBf00E@n-_m~a-t2P__!5q$bA84YFNDI9QEgOi96e>;* z)*4U27!D{BFRx2=ap}v@6 z9yEPR#1P*R>wsn^Rzdx}PFi<1u78ES@N-zACWB`YZCmt#Q$)WJl@c28dTMB(gTT+L zr{Y>=1aNX05lt+YXJzD79X_1c#b=lVP(_TDw|Ym=Z0iBSwuVV(w5eXIt!XAM3$qH4BYy^vX=sxd0HDYj~X#Z8E^mj(=lvBfKy_Sb~Y>^VSZu+ALgt(C!6p87F3iI-{-Zdtjz(RRih4&M(n= zBgfp$Q2`TmnCmaJ=8f4T&P9wG$6QXj80KLas80sw28f{*4e;xrwE|u*I{GH&N9uqF zHv|*59-UZ(&WeNc5Bg%fy;u}~WCrHP7YlKRmhakeFMq#vUdxNxh6i0Gz*HkJd5a8O zv&{fM9ol&-fx;tiSZ0Q32QxjAfnhQ*23}i<(wKKK*>f3q*h&WO3I-kxnuN7XjnnXo z7sse|HfLy@P;v4j%-pY}A}zplJDKPPX8Xy=AWCBVk$-q6IL=B=qz@|3eu0jvSXdsm zN#eZw+kbQf^%!eT6Jxbb^-mQ~(`??8uHHPGrglcPem53Iswwd%6}Ur%n#6+B_sB@6 za1n*BEYdB`vr$2q;-?zK)<3vT?XN{!Nffv?k@19hs>Vf?s&-vSRlA_!q8t`;1u#|x zjMq@|RbdB0F~LlOxHCb-N~6^3JCf)P;mlbW<9}DERwZf@cZ2Jvsa+zLi5rw|#|$c0 zq^R93ou==A;X=Snmu{pC7&TGyWywsnWT;LwB?wr#D$Uo5aU4&gLjFiOQG(nJa>z)YWTr?cAQ<9eqZMM|(La}9lIF{$xDqkX zOn>>q`534@4oRnD@#Pq_?oP=n_jv+Yk-k{yP5}Dptq-ISX=KJoX0rYVND>Y8 z8zfVyR4iR0L&CV^?+kH`%?t4cA-_3qKYzG>lFD;dA1rfy;sTymd;0vQ^t??VJ^WRe zYa@W}SfJ+&5l86AR6KExOz9;OpMhSC<4yGHaNGC|lGIzkwTWkc4e3=f`$UCju3qsn zlC|EJ_QD{b^GD(Y(Df5>k~l@2CUeX$PlwkjZoK{=%1?g?t|y?}5@yr?e+oQtPJi(V zm}|)az`Y|t`%&T;5lzsKQ3rE;8FNjC(Pxt5X8M=Ni}pjJ(hE|ZNh0uH{q!b;$o9o6 zWV7*d8BDPs;IEc&pp}lLHIj$|+M>``7KD1k=P3R8eWXXePC{Pb_{YfB$$dQ6^zoq! zk@-^rvrg`XOVMv*`uev(lZMa=B!4Kp!E2Av7%%tM$1A)7*DSnr{HoZxBW}NUM_hk3E6su#q^r(=r0O@<<{4W2G-@fUcXoN zB8jC~MH^B-US9*&L4sk#{9^mp+kj|dYXAw4ZIKugCZs XdKO^dE^OrY00000NkvXXu0mjfL!^G3 From a1fd060b9d46a7abd0af83f6c7cbf0f82492421c Mon Sep 17 00:00:00 2001 From: Eclipse Platform Bot Date: Thu, 28 Nov 2024 12:35:49 +0000 Subject: [PATCH 138/232] Version bump(s) for 4.35 stream --- bundles/org.eclipse.ui/META-INF/MANIFEST.MF | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bundles/org.eclipse.ui/META-INF/MANIFEST.MF b/bundles/org.eclipse.ui/META-INF/MANIFEST.MF index c19e9d63918..61b1d803779 100644 --- a/bundles/org.eclipse.ui/META-INF/MANIFEST.MF +++ b/bundles/org.eclipse.ui/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %Plugin.name Bundle-SymbolicName: org.eclipse.ui; singleton:=true -Bundle-Version: 3.207.0.qualifier +Bundle-Version: 3.207.100.qualifier Bundle-Activator: org.eclipse.ui.internal.UIPlugin Bundle-ActivationPolicy: lazy Bundle-Vendor: %Plugin.providerName From 55329ed555412bf11eb387cad47f6d2819e5f276 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=8A?= =?UTF-8?q?=D1=80=20=D0=9A=D1=83=D1=80=D1=82=D0=B0=D0=BA=D0=BE=D0=B2?= Date: Mon, 2 Dec 2024 13:34:04 +0200 Subject: [PATCH 139/232] Update tycho-build to 4.0.10 --- .mvn/extensions.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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.tycho tycho-build - 4.0.6 + 4.0.10 From 6c459ccbb59d9b18bd9e2df71a9fcfbcd9ba2374 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Kubitz?= Date: Mon, 2 Dec 2024 13:00:31 +0100 Subject: [PATCH 140/232] PropertyPageNode: log full exception if any instead of popup only This issue did not show the root exception: https://github.com/eclipse-jdt/eclipse.jdt.debug/issues/570 --- .../org/eclipse/ui/internal/dialogs/PropertyPageNode.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/PropertyPageNode.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/PropertyPageNode.java index 3bd3e29cceb..109e0482f45 100644 --- a/bundles/org.eclipse.ui.workbench/eclipseui/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); From 98ff2aa8d6b8487c882e3e24fd73ce80284ecc53 Mon Sep 17 00:00:00 2001 From: Matthias Becker Date: Tue, 29 Oct 2024 10:28:52 +0100 Subject: [PATCH 141/232] CSS: Allow Color And Font Definitions To Be Marked As Not Editable Color and Fonts can be defined as not editable if done via the extensions point. Provide the same possibility if they are defined via CSS. --- bundles/org.eclipse.e4.ui.css.swt/plugin.xml | 1 + .../CSSPropertyThemeElementDefinitionHandler.java | 6 ++++++ .../swt/definition/IThemeElementDefinitionOverridable.java | 2 ++ .../org/eclipse/ui/internal/themes/ColorDefinition.java | 6 ++++++ .../org/eclipse/ui/internal/themes/FontDefinition.java | 6 ++++++ 5 files changed, 21 insertions(+) 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/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.ui.workbench/eclipseui/org/eclipse/ui/internal/themes/ColorDefinition.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/themes/ColorDefinition.java index 3a5fcb2b7a8..35e00089bc6 100644 --- a/bundles/org.eclipse.ui.workbench/eclipseui/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/eclipseui/org/eclipse/ui/internal/themes/FontDefinition.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/themes/FontDefinition.java index 71c92d402a8..a1d1b077198 100644 --- a/bundles/org.eclipse.ui.workbench/eclipseui/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; + } + } From 2f68c396556ccdeb766b0d5eb47c074bee526873 Mon Sep 17 00:00:00 2001 From: Lars Vogel Date: Tue, 3 Dec 2024 14:45:15 +0100 Subject: [PATCH 142/232] Use SubMonintor in TextChange done() call not necessary here and convert can also handle null. See https://www.eclipse.org/articles/Article-Progress-Monitors/article.html --- .../src/org/eclipse/ltk/core/refactoring/TextChange.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/bundles/org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/core/refactoring/TextChange.java b/bundles/org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/core/refactoring/TextChange.java index e9f64c62bcb..11c73cf168e 100644 --- a/bundles/org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/core/refactoring/TextChange.java +++ b/bundles/org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/core/refactoring/TextChange.java @@ -247,7 +247,6 @@ public Change perform(IProgressMonitor pm) throws CoreException { throw Changes.asCoreException(e); } finally { releaseDocument(document, subMon.newChild(1)); - subMon.done(); } } @@ -311,7 +310,6 @@ public IDocument getCurrentDocument(IProgressMonitor pm) throws CoreException { } finally { releaseDocument(result, subMon.newChild(1)); } - subMon.done(); return result; } From 90ae1519870fc1d142a6bfe7701e497616402442 Mon Sep 17 00:00:00 2001 From: Lars Vogel Date: Tue, 3 Dec 2024 15:58:52 +0100 Subject: [PATCH 143/232] DeferredTreeContentManager mark deprecated methods for deletion --- .../org/eclipse/ui/progress/DeferredTreeContentManager.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/progress/DeferredTreeContentManager.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/progress/DeferredTreeContentManager.java index c5f6bffab5b..1defb7d61ad 100644 --- a/bundles/org.eclipse.ui.workbench/eclipseui/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); } From ce9874fdd4494e501df9ef462ba73fc7406e3cc9 Mon Sep 17 00:00:00 2001 From: Madhumitha M V Date: Tue, 3 Dec 2024 15:11:40 +0530 Subject: [PATCH 144/232] [Linux-Dark Theme]Bg color issue fix in form editor Labels in form editor was not inheriting colors from the parent control which later led to too many background colors in section, label and other controls in linux. This has been fixed with this change. --- .../css/e4-dark_linux.css | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) 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 a26136e27e0..a3a738d2b8d 100644 --- a/bundles/org.eclipse.ui.themes/css/e4-dark_linux.css +++ b/bundles/org.eclipse.ui.themes/css/e4-dark_linux.css @@ -46,6 +46,27 @@ ImageBasedFrame, 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; From 97881bf49a5297b7f2d7baf70c3c6a4352d614dd Mon Sep 17 00:00:00 2001 From: Christopher Hermann Date: Wed, 4 Dec 2024 14:05:14 +0100 Subject: [PATCH 145/232] [StickyScrolling] Use source viewer to calculate the sticky lines Use the source viewer instead of the text widget to calculate the sticky lines. The source viewer is the standard instance for source code operations in JDT and other editors. Preparation for #2398 --- .../DefaultStickyLinesProvider.java | 27 +++++-- .../stickyscroll/IStickyLinesProvider.java | 16 ++--- .../stickyscroll/StickyScrollingControl.java | 18 ++--- .../stickyscroll/StickyScrollingHandler.java | 15 ++-- .../DefaultStickyLinesProviderTest.java | 70 ++++++++++++++++--- .../StickyScrollingControlTest.java | 49 ------------- .../StickyScrollingHandlerTest.java | 30 ++++---- 7 files changed, 117 insertions(+), 108 deletions(-) diff --git a/bundles/org.eclipse.ui.editors/src/org/eclipse/ui/internal/texteditor/stickyscroll/DefaultStickyLinesProvider.java b/bundles/org.eclipse.ui.editors/src/org/eclipse/ui/internal/texteditor/stickyscroll/DefaultStickyLinesProvider.java index bf53911a148..2153768f643 100644 --- a/bundles/org.eclipse.ui.editors/src/org/eclipse/ui/internal/texteditor/stickyscroll/DefaultStickyLinesProvider.java +++ b/bundles/org.eclipse.ui.editors/src/org/eclipse/ui/internal/texteditor/stickyscroll/DefaultStickyLinesProvider.java @@ -19,6 +19,9 @@ import org.eclipse.swt.custom.StyledText; +import org.eclipse.jface.text.ITextViewerExtension5; +import org.eclipse.jface.text.source.ISourceViewer; + /** * This class provides sticky lines for the given source code in the source viewer. The * implementation is completely based on indentation and therefore works by default for several @@ -33,14 +36,16 @@ public class DefaultStickyLinesProvider implements IStickyLinesProvider { private StickyLinesProperties fProperties; @Override - public List getStickyLines(StyledText textWidget, int lineNumber, StickyLinesProperties properties) { + public List getStickyLines(ISourceViewer sourceViewer, int lineNumber, StickyLinesProperties properties) { this.fProperties= properties; LinkedList stickyLines= new LinkedList<>(); + StyledText textWidget= sourceViewer.getTextWidget(); + int textWidgetLineNumber= mapLineNumberToWidget(sourceViewer, lineNumber); try { - int startIndetation= getStartIndentation(lineNumber, textWidget); + int startIndetation= getStartIndentation(textWidgetLineNumber, textWidget); - for (int i= lineNumber, previousIndetation= startIndetation; i >= 0; i--) { + for (int i= textWidgetLineNumber, previousIndetation= startIndetation; i >= 0; i--) { String line= textWidget.getLine(i); int indentation= getIndentation(line); @@ -50,7 +55,7 @@ public List getStickyLines(StyledText textWidget, int lineNumber, S if (indentation < previousIndetation) { previousIndetation= indentation; - stickyLines.addFirst(new StickyLine(i, textWidget)); + stickyLines.addFirst(new StickyLine(mapLineNumberToViewer(sourceViewer, i), textWidget)); } } } catch (IllegalArgumentException e) { @@ -101,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/IStickyLinesProvider.java b/bundles/org.eclipse.ui.editors/src/org/eclipse/ui/internal/texteditor/stickyscroll/IStickyLinesProvider.java index 06dc804ef31..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,12 +15,10 @@ import java.util.List; -import org.eclipse.swt.custom.StyledText; - import org.eclipse.jface.text.source.ISourceViewer; /** - * A sticky lines provider calculates the sticky lines for a given text widget. The sticky lines + * A sticky lines provider calculates the sticky lines for a given source viewer. The sticky lines * will be displayed in the top area of the editor. * * TODO move to public package and add since 3.19 @@ -28,24 +26,24 @@ public interface IStickyLinesProvider { /** - * Calculate the sticky lines for the source code of the given textWidget. Specific properties, - * such as the tabWidht and the source viewer, can be retrieved from the + * Calculate the sticky lines for the source code of the given sourceViewer. Specific + * properties, such as the tabWidht, can be retrieved from the * properties. * - * @param textWidget The text widget containing the source code + * @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 */ - public List getStickyLines(StyledText textWidget, int lineNumber, StickyLinesProperties properties); + public List getStickyLines(ISourceViewer sourceViewer, int lineNumber, StickyLinesProperties properties); /** * Additional properties and access in order to calculate the sticky lines. * * @param tabWith The with of a tab - * @param sourceViewer The sourceViewer to access additional information */ - record StickyLinesProperties(int tabWith, ISourceViewer sourceViewer) { + record StickyLinesProperties(int tabWith) { } } 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 0e02cbd4980..7375afadfc4 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 @@ -206,7 +206,7 @@ private void updateStickyScrollingControls() { for (int i= 0; i < getNumberStickyLines(); i++) { IStickyLine stickyLine= stickyLines.get(i); stickyLineTextJoiner.add(stickyLine.getText()); - int lineNumber= getSourceViewerLineNumber(stickyLine.getLineNumber()); + int lineNumber= stickyLine.getLineNumber(); stickyLineNumberJoiner.add(fillLineNumberWithLeadingSpaces(lineNumber + 1)); } @@ -222,13 +222,6 @@ private void updateStickyScrollingControls() { } } - private int getSourceViewerLineNumber(int i) { - if (sourceViewer instanceof ITextViewerExtension5 extension) { - return extension.widgetLine2ModelLine(i); - } - return i; - } - private String fillLineNumberWithLeadingSpaces(int lineNumber) { int lineCount= sourceViewer.getDocument().getNumberOfLines(); int lineNumberLength= String.valueOf(lineCount).length(); @@ -399,6 +392,8 @@ 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$ @@ -411,13 +406,12 @@ private void addSourceViewerListeners() { } 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(); limitVisibleStickyLinesToTextWidgetHeight(textWidget); layoutStickyLines(); if (stickyScrollingHandler != null) { @@ -430,7 +424,7 @@ public void controlMoved(ControlEvent e) { layoutStickyLines(); } }; - sourceViewer.getTextWidget().addControlListener(controlListener); + textWidget.addControlListener(controlListener); } 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 596fdec59ea..de457cf0ca0 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 @@ -25,7 +25,6 @@ import java.util.LinkedList; import java.util.List; -import org.eclipse.swt.custom.StyledText; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.graphics.RGB; @@ -140,7 +139,7 @@ private StickyScrollingControlSettings loadControlSettings(IPreferenceStore stor private StickyLinesProperties loadStickyLinesProperties(IPreferenceStore store) { int tabWidth= store.getInt(EDITOR_TAB_WIDTH); - return new StickyLinesProperties(tabWidth, sourceViewer); + return new StickyLinesProperties(tabWidth); } @Override @@ -155,11 +154,10 @@ public void viewportChanged(int newVerticalOffset) { private void calculateAndShowStickyLines() { List stickyLines= Collections.emptyList(); - StyledText textWidget= sourceViewer.getTextWidget(); - int startLine= textWidget.getTopIndex(); + int startLine= sourceViewer.getTopIndex(); if (startLine > 0) { - stickyLines= stickyLinesProvider.getStickyLines(textWidget, startLine, stickyLinesProperties); + stickyLines= stickyLinesProvider.getStickyLines(sourceViewer, sourceViewer.getTopIndex(), stickyLinesProperties); } if (stickyLines == null) { @@ -179,11 +177,10 @@ private List adaptStickyLinesToVisibleArea(List sticky LinkedList adaptedStickyLines= new LinkedList<>(stickyLines); int firstVisibleLine= startLine + adaptedStickyLines.size(); - StyledText textWidget= sourceViewer.getTextWidget(); - int maximumLines= textWidget.getLineCount(); + int numberOfLines= sourceViewer.getDocument().getNumberOfLines(); - for (int i= startLine + 1; i <= firstVisibleLine && i < maximumLines; i++) { - List stickyLinesInLineI= stickyLinesProvider.getStickyLines(textWidget, i, stickyLinesProperties); + 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); 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 44b980e27cc..0ec92b14dc9 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 @@ -25,9 +25,13 @@ import org.eclipse.swt.SWT; import org.eclipse.swt.custom.StyledText; +import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; +import org.eclipse.jface.text.IRegion; +import org.eclipse.jface.text.ITextViewerExtension5; +import org.eclipse.jface.text.source.IVerticalRuler; import org.eclipse.jface.text.source.SourceViewer; import org.eclipse.ui.internal.texteditor.stickyscroll.IStickyLinesProvider.StickyLinesProperties; @@ -46,12 +50,12 @@ public void setup() { sourceViewer = new SourceViewer(shell, null, SWT.None); stickyLinesProvider = new DefaultStickyLinesProvider(); textWidget = sourceViewer.getTextWidget(); - stickyLinesProperties = new StickyLinesProperties(4, sourceViewer); + stickyLinesProperties = new StickyLinesProperties(4); } @Test public void testEmptySourceCode() { - List stickyLines = stickyLinesProvider.getStickyLines(textWidget, 0, stickyLinesProperties); + List stickyLines = stickyLinesProvider.getStickyLines(sourceViewer, 0, stickyLinesProperties); assertThat(stickyLines, is(empty())); } @@ -63,7 +67,7 @@ public void testSingleStickyLine() { line 2<"""; setText(text); - List stickyLines = stickyLinesProvider.getStickyLines(textWidget, 1, stickyLinesProperties); + List stickyLines = stickyLinesProvider.getStickyLines(sourceViewer, 1, stickyLinesProperties); assertEquals(1, stickyLines.size()); assertEquals(0, stickyLines.get(0).getLineNumber()); @@ -78,7 +82,7 @@ public void testLineUnderStickyLine() { line 4"""; setText(text); - List stickyLines = stickyLinesProvider.getStickyLines(textWidget, 1, stickyLinesProperties); + List stickyLines = stickyLinesProvider.getStickyLines(sourceViewer, 1, stickyLinesProperties); assertEquals(1, stickyLines.size()); assertEquals(0, stickyLines.get(0).getLineNumber()); @@ -93,7 +97,7 @@ public void testNewStickyRoot() { line 4<"""; setText(text); - List stickyLines = stickyLinesProvider.getStickyLines(textWidget, 3, stickyLinesProperties); + List stickyLines = stickyLinesProvider.getStickyLines(sourceViewer, 3, stickyLinesProperties); assertEquals(1, stickyLines.size()); assertEquals(2, stickyLines.get(0).getLineNumber()); @@ -109,7 +113,7 @@ public void testIgnoreEmptyLines() { line 3<"""; setText(text); - List stickyLines = stickyLinesProvider.getStickyLines(textWidget, 4, stickyLinesProperties); + List stickyLines = stickyLinesProvider.getStickyLines(sourceViewer, 4, stickyLinesProperties); assertEquals(2, stickyLines.size()); assertEquals(0, stickyLines.get(0).getLineNumber()); @@ -118,14 +122,14 @@ public void testIgnoreEmptyLines() { @Test public void testLinesWithTabs() { - stickyLinesProperties = new StickyLinesProperties(2, sourceViewer); + stickyLinesProperties = new StickyLinesProperties(2); String text = """ line 1 \tline 2 \t\tline 3<"""; setText(text); - List stickyLines = stickyLinesProvider.getStickyLines(textWidget, 2, stickyLinesProperties); + List stickyLines = stickyLinesProvider.getStickyLines(sourceViewer, 2, stickyLinesProperties); assertEquals(2, stickyLines.size()); assertEquals(0, stickyLines.get(0).getLineNumber()); @@ -143,7 +147,7 @@ public void testStartAtEmptyLineWithNext() { textWidget.setText(text); textWidget.setTopIndex(3); - List stickyLines = stickyLinesProvider.getStickyLines(textWidget, 3, stickyLinesProperties); + List stickyLines = stickyLinesProvider.getStickyLines(sourceViewer, 3, stickyLinesProperties); assertEquals(2, stickyLines.size()); assertEquals(0, stickyLines.get(0).getLineNumber()); @@ -160,13 +164,31 @@ public void testStartAtEmptyLineWithPrevious() { line 4"""; setText(text); - List stickyLines = stickyLinesProvider.getStickyLines(textWidget, 3, stickyLinesProperties); + List stickyLines = stickyLinesProvider.getStickyLines(sourceViewer, 3, stickyLinesProperties); assertEquals(2, stickyLines.size()); assertEquals(0, stickyLines.get(0).getLineNumber()); assertEquals(1, stickyLines.get(1).getLineNumber()); } + @Test + public void testStickyLineWithSourceViewerLineMapping() { + sourceViewer = new SourceViewerWithLineMapping(shell, null, SWT.None); + textWidget = sourceViewer.getTextWidget(); + + String text = """ + line 1 + line 2<"""; + setText(text); + + // 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()); + } + /** * Set the text into the text widget and set the top index to the line * containing the <. @@ -175,4 +197,32 @@ private void setText(String text) { textWidget.setText(text); } + 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 d9442aa9ec5..4b8e63506de 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 @@ -43,8 +43,6 @@ 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; import org.eclipse.jface.text.source.SourceViewer; @@ -101,30 +99,6 @@ public void testShowStickyLineTexts() { assertEquals(expStickyLineText, stickyLineText.getText()); } - @Test - public void testShowStickyLineTextsWithSourceViewerMapping() { - shell.dispose(); - shell = new Shell(Display.getDefault()); - shell.setSize(200, 200); - shell.setLayout(new FillLayout()); - - sourceViewer = new SourceViewerLineMapping(shell, ruler, SWT.V_SCROLL | SWT.H_SCROLL); - sourceViewer.setDocument(new Document()); - sourceViewer.getTextWidget().setBounds(0, 0, 200, 200); - - stickyScrollingControl = new StickyScrollingControl(sourceViewer, ruler, settings, null); - - List stickyLines = List.of(new StickyLineStub("line 10", 9), new StickyLineStub("line 20", 19)); - stickyScrollingControl.setStickyLines(stickyLines); - - StyledText stickyLineNumber = getStickyLineNumber(); - String expLineNumber = "52" + System.lineSeparator() + "62"; - assertEquals(expLineNumber, stickyLineNumber.getText()); - StyledText stickyLineText = getStickyLineText(); - String expStickyLineText = "line 10" + System.lineSeparator() + "line 20"; - assertEquals(expStickyLineText, stickyLineText.getText()); - } - @Test public void testCorrectColorsApplied() { List stickyLines = List.of(new StickyLineStub("line 10", 9), new StickyLineStub("line 20", 19)); @@ -480,29 +454,6 @@ private void drainDisplayEventQueue() { } } - private class SourceViewerLineMapping extends SourceViewer implements ITextViewerExtension5 { - - public SourceViewerLineMapping(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; - } - - } - private class StickyLineStub implements IStickyLine { private final String text; 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 6798ec1b1e7..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 @@ -87,7 +87,7 @@ public void setup() { linesProvider = mock(IStickyLinesProvider.class); stickyScrollingHandler = new StickyScrollingHandler(sourceViewer, ruler, store, linesProvider); - stickyLinesProperties = new StickyLinesProperties(4, sourceViewer); + stickyLinesProperties = new StickyLinesProperties(4); } @After @@ -97,7 +97,7 @@ public void teardown() { @Test public void testShowStickyLines() { - when(linesProvider.getStickyLines(textWidget, 1, stickyLinesProperties)) + when(linesProvider.getStickyLines(sourceViewer, 1, stickyLinesProperties)) .thenReturn(List.of(new StickyLineStub("line 10", 9))); stickyScrollingHandler.viewportChanged(100); @@ -134,7 +134,7 @@ public void testUnistallStickyLines() { @Test public void testPreferencesLoaded() { - when(linesProvider.getStickyLines(textWidget, 1, stickyLinesProperties)) + when(linesProvider.getStickyLines(sourceViewer, 1, stickyLinesProperties)) .thenReturn(List.of(new StickyLineStub("line 10", 9))); stickyScrollingHandler.viewportChanged(100); @@ -145,9 +145,9 @@ public void testPreferencesLoaded() { @Test public void testPreferencesUpdated() { - when(linesProvider.getStickyLines(textWidget, 1, stickyLinesProperties)) + when(linesProvider.getStickyLines(sourceViewer, 1, stickyLinesProperties)) .thenReturn(List.of(new StickyLineStub("line 10", 9), new StickyLineStub("line 20", 19))); - when(linesProvider.getStickyLines(textWidget, 2, stickyLinesProperties)) + when(linesProvider.getStickyLines(sourceViewer, 2, stickyLinesProperties)) .thenReturn(List.of(new StickyLineStub("line 10", 9), new StickyLineStub("line 20", 19))); stickyScrollingHandler.viewportChanged(100); @@ -165,13 +165,13 @@ public void testPreferencesUpdated() { @Test public void testThrottledExecution() throws InterruptedException { - when(linesProvider.getStickyLines(textWidget, 1, stickyLinesProperties)) + when(linesProvider.getStickyLines(sourceViewer, 1, stickyLinesProperties)) .thenReturn(List.of(new StickyLineStub("line 10", 9))); - when(linesProvider.getStickyLines(textWidget, 1, stickyLinesProperties)) + when(linesProvider.getStickyLines(sourceViewer, 1, stickyLinesProperties)) .thenReturn(List.of(new StickyLineStub("line 10", 9))); - when(linesProvider.getStickyLines(textWidget, 1, stickyLinesProperties)) + when(linesProvider.getStickyLines(sourceViewer, 1, stickyLinesProperties)) .thenReturn(List.of(new StickyLineStub("line 10", 9))); - when(linesProvider.getStickyLines(textWidget, 1, stickyLinesProperties)) + when(linesProvider.getStickyLines(sourceViewer, 1, stickyLinesProperties)) .thenReturn(List.of(new StickyLineStub("line 10", 9))); stickyScrollingHandler.viewportChanged(100); @@ -186,15 +186,15 @@ public void testThrottledExecution() throws InterruptedException { // Call to lines provider should be throttled, at least one and at most // 3 calls expected - verify(linesProvider, atMost(3)).getStickyLines(textWidget, 1, stickyLinesProperties); - verify(linesProvider, atLeastOnce()).getStickyLines(textWidget, 1, stickyLinesProperties); + verify(linesProvider, atMost(3)).getStickyLines(sourceViewer, 1, stickyLinesProperties); + verify(linesProvider, atLeastOnce()).getStickyLines(sourceViewer, 1, stickyLinesProperties); } @Test public void testRemoveStickyLines() { - when(linesProvider.getStickyLines(textWidget, 1, stickyLinesProperties)) + when(linesProvider.getStickyLines(sourceViewer, 1, stickyLinesProperties)) .thenReturn(List.of(new StickyLineStub("line 1", 0), new StickyLineStub("line 2", 1))); - when(linesProvider.getStickyLines(textWidget, 2, stickyLinesProperties)) + when(linesProvider.getStickyLines(sourceViewer, 2, stickyLinesProperties)) .thenReturn(List.of(new StickyLineStub("line 3", 2))); stickyScrollingHandler.viewportChanged(100); @@ -206,9 +206,9 @@ public void testRemoveStickyLines() { @Test public void testLineUnderStickyLine() { - when(linesProvider.getStickyLines(textWidget, 1, stickyLinesProperties)) + when(linesProvider.getStickyLines(sourceViewer, 1, stickyLinesProperties)) .thenReturn(List.of(new StickyLineStub("line 1", 0))); - when(linesProvider.getStickyLines(textWidget, 2, stickyLinesProperties)) + when(linesProvider.getStickyLines(sourceViewer, 2, stickyLinesProperties)) .thenReturn(List.of(new StickyLineStub("line 1", 0), new StickyLineStub("line 2", 1))); stickyScrollingHandler.viewportChanged(100); From 4d989e4db642db595a629fdf29e96ca67947cb41 Mon Sep 17 00:00:00 2001 From: Eclipse Platform Bot Date: Wed, 4 Dec 2024 13:11:56 +0000 Subject: [PATCH 146/232] Version bump(s) for 4.35 stream --- bundles/org.eclipse.ui.editors/META-INF/MANIFEST.MF | 2 +- tests/org.eclipse.ui.editors.tests/META-INF/MANIFEST.MF | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/bundles/org.eclipse.ui.editors/META-INF/MANIFEST.MF b/bundles/org.eclipse.ui.editors/META-INF/MANIFEST.MF index 96c4987c88b..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.19.0.qualifier +Bundle-Version: 3.19.100.qualifier Bundle-Activator: org.eclipse.ui.internal.editors.text.EditorsPlugin Bundle-ActivationPolicy: lazy Bundle-Vendor: %providerName 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, From ea68ca2f817324601f126eeafd2cc077af56e62c Mon Sep 17 00:00:00 2001 From: Tobias Melcher Date: Tue, 3 Dec 2024 18:51:49 +0100 Subject: [PATCH 147/232] fix InlinedAnnotationSupport#isInVisibleLines isInVisibleLines uses a cached endOffset variable which is not correctly invalidated when ProjectionSupport is enabled. cached endOffset variable is only reset in callback documentAboutToBeChanged but not in documentChanged which is not sufficient. Scenario: 1. document.replace(...) is called 2. documentAboutToBeChanged is called and endOffset is set to null 3. source viewer repaint event is triggered (between documentAboutToBeChanged and documentChanged) and code minings are drawn, isInVisibleLines is called with the old not yet updated document and endOffset is set. The repaint event is only triggered in this timeslot when ProjectionSupport is installed on the SourceViewer. 4. documentChanged called; now document is up to date but endOffset cache contains outdated value of the old document 5. code minings at end of document are no longer rendered because isInVisibleLines returns false (which is not correct) --- .../inlined/InlinedAnnotationSupport.java | 4 +- tests/org.eclipse.ui.editors.tests/plugin.xml | 12 +++- .../text/tests/codemining/CodeMiningTest.java | 68 ++++++++++++++++++- .../codemining/CodeMiningTestProvider.java | 5 +- .../codemining/TextProjectionTextEditor.java | 42 ++++++++++++ 5 files changed, 126 insertions(+), 5 deletions(-) create mode 100644 tests/org.eclipse.ui.editors.tests/src/org/eclipse/jface/text/tests/codemining/TextProjectionTextEditor.java 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 2674b836fe8..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 @@ -163,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 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 From 78af158924584afe76b6cfe029e518653923d66a Mon Sep 17 00:00:00 2001 From: Heiko Klare Date: Tue, 12 Nov 2024 16:42:13 +0100 Subject: [PATCH 148/232] Find/replace overlay: improve focus/tab order #2161 The FindReplaceOverlay currently uses the default focus order. When tabbing through the widgets, this means that when starting from the find input field you have to tab over all the search options before coming to the replace input field. Since the most often used navigation is between the two input fields for find and replace, they should come after each other in the focus order. This change adapts the focus order of the involved elements: - Tab between find and replace input field - Tab between replace input field and the tools (starting from the search tools) - Tab between search/close and replace search tools (instead of coming from search/close tools to the replace input field) Fixes https://github.com/eclipse-platform/eclipse.platform.ui/issues/2161 --- .../overlay/AccessibleToolBar.java | 5 ++ .../overlay/FindReplaceOverlay.java | 79 +++++++++++++++++++ .../overlay/HistoryTextWrapper.java | 4 + 3 files changed, 88 insertions(+) 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/FindReplaceOverlay.java b/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/findandreplace/overlay/FindReplaceOverlay.java index 80466fcd7f6..78b22e07c60 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 @@ -38,6 +38,7 @@ import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Display; +import org.eclipse.swt.widgets.Listener; import org.eclipse.swt.widgets.ScrollBar; import org.eclipse.swt.widgets.Scrollable; import org.eclipse.swt.widgets.Shell; @@ -218,6 +219,81 @@ public void reactivate() { }; + 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) { targetPart = part; targetControl = getTargetControl(parent, part); @@ -647,6 +723,7 @@ public void focusLost(FocusEvent e) { searchBar.addModifyListener(Event -> { decorate(); }); + searchBar.setTabList(null); } private void updateIncrementalSearch() { @@ -710,6 +787,7 @@ private void hideReplace() { if (!replaceBarOpen) { return; } + customFocusOrder.dispose(); searchBar.forceFocus(); contentAssistReplaceField = null; replaceBarOpen = false; @@ -728,6 +806,7 @@ private void createReplaceDialog() { updatePlacementAndVisibility(); assignIDs(); replaceBar.forceFocus(); + customFocusOrder.apply(); } private void initializeReplaceShortcutHandlers() { 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 afd66ac03c0..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 @@ -207,4 +207,8 @@ public Text getTextBar() { return textBar; } + AccessibleToolBar getDropDownTool() { + return tools; + } + } From 9d544d50759211a7e6cab68d84d2f9d143c6a1a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Kubitz?= <51790620+jukzi@users.noreply.github.com> Date: Thu, 5 Dec 2024 11:01:28 +0100 Subject: [PATCH 149/232] Revert "Use SubMonintor in TextChange" This reverts commit 2f68c396556ccdeb766b0d5eb47c074bee526873. --- .../src/org/eclipse/ltk/core/refactoring/TextChange.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/bundles/org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/core/refactoring/TextChange.java b/bundles/org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/core/refactoring/TextChange.java index 11c73cf168e..e9f64c62bcb 100644 --- a/bundles/org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/core/refactoring/TextChange.java +++ b/bundles/org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/core/refactoring/TextChange.java @@ -247,6 +247,7 @@ public Change perform(IProgressMonitor pm) throws CoreException { throw Changes.asCoreException(e); } finally { releaseDocument(document, subMon.newChild(1)); + subMon.done(); } } @@ -310,6 +311,7 @@ public IDocument getCurrentDocument(IProgressMonitor pm) throws CoreException { } finally { releaseDocument(result, subMon.newChild(1)); } + subMon.done(); return result; } From a0a0ef82969e7ef319af5515b47881d7f571fb15 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Kubitz?= Date: Tue, 3 Dec 2024 14:06:33 +0100 Subject: [PATCH 150/232] ToolItemUpdater: fix possible Integer overflow Both DELAY and 1_000_000 are Integers. Multiplied they could exceed max integer. Currently the DELAY is small enough to not overflow, but changing the constant would silently overflow. --- .../eclipse/e4/ui/workbench/renderers/swt/ToolItemUpdater.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 From d03901e571dfdfa8112af945cc4f8949a12ce066 Mon Sep 17 00:00:00 2001 From: Eclipse Platform Bot Date: Tue, 3 Dec 2024 13:10:51 +0000 Subject: [PATCH 151/232] Version bump(s) for 4.35 stream --- .../META-INF/MANIFEST.MF | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 From f08221805ee276fa890c6dd57e10d4ee9daf1b75 Mon Sep 17 00:00:00 2001 From: Christopher Hermann Date: Fri, 6 Dec 2024 12:36:36 +0100 Subject: [PATCH 152/232] [StickyScrolling] Sticky line is considering hidden source viewer lines The source viewer can contain hidden lines, for example via code folding. The sticky line needs to consider this lines (see ITextViewerExtension5) when calculating the text and the style ranges from the text widget --- .../DefaultStickyLinesProvider.java | 2 +- .../texteditor/stickyscroll/StickyLine.java | 26 ++++-- .../DefaultStickyLinesProviderTest.java | 27 +++---- .../stickyscroll/StickyLineTest.java | 79 ++++++++++++++++++- 4 files changed, 107 insertions(+), 27 deletions(-) diff --git a/bundles/org.eclipse.ui.editors/src/org/eclipse/ui/internal/texteditor/stickyscroll/DefaultStickyLinesProvider.java b/bundles/org.eclipse.ui.editors/src/org/eclipse/ui/internal/texteditor/stickyscroll/DefaultStickyLinesProvider.java index 2153768f643..40c3125f1af 100644 --- a/bundles/org.eclipse.ui.editors/src/org/eclipse/ui/internal/texteditor/stickyscroll/DefaultStickyLinesProvider.java +++ b/bundles/org.eclipse.ui.editors/src/org/eclipse/ui/internal/texteditor/stickyscroll/DefaultStickyLinesProvider.java @@ -55,7 +55,7 @@ public List getStickyLines(ISourceViewer sourceViewer, int lineNumb if (indentation < previousIndetation) { previousIndetation= indentation; - stickyLines.addFirst(new StickyLine(mapLineNumberToViewer(sourceViewer, i), textWidget)); + stickyLines.addFirst(new StickyLine(mapLineNumberToViewer(sourceViewer, i), sourceViewer)); } } } catch (IllegalArgumentException e) { 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 e54b0149a79..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 @@ -16,21 +16,24 @@ 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; + /** * Default implementation of {@link IStickyLine}. Information about the text and style ranges are * calculated from the given text widget. */ public class StickyLine implements IStickyLine { - private int lineNumber; + protected int lineNumber; - private String text; + protected String text; - private StyledText textWidget; + protected ISourceViewer sourceViewer; - public StickyLine(int lineNumber, StyledText textWidget) { + public StickyLine(int lineNumber, ISourceViewer sourceViewer) { this.lineNumber= lineNumber; - this.textWidget= textWidget; + this.sourceViewer= sourceViewer; } @Override @@ -41,14 +44,16 @@ public int getLineNumber() { @Override public String getText() { if (text == null) { - text= textWidget.getLine(lineNumber); + StyledText textWidget= sourceViewer.getTextWidget(); + text= textWidget.getLine(getWidgetLineNumber()); } return text; } @Override public StyleRange[] getStyleRanges() { - int offsetAtLine= textWidget.getOffsetAtLine(lineNumber); + 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; @@ -56,4 +61,11 @@ public StyleRange[] getStyleRanges() { return styleRanges; } + private int getWidgetLineNumber() { + if (sourceViewer instanceof ITextViewerExtension5 extension) { + return extension.modelLine2WidgetLine(lineNumber); + } + return lineNumber; + } + } 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 0ec92b14dc9..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 @@ -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); @@ -65,12 +67,13 @@ public void testSingleStickyLine() { String text = """ line 1 line 2<"""; - setText(text); + textWidget.setText(text); List stickyLines = stickyLinesProvider.getStickyLines(sourceViewer, 1, stickyLinesProperties); assertEquals(1, stickyLines.size()); assertEquals(0, stickyLines.get(0).getLineNumber()); + assertEquals("line 1", stickyLines.get(0).getText()); } @Test @@ -80,7 +83,7 @@ public void testLineUnderStickyLine() { line 2< line 3 line 4"""; - setText(text); + textWidget.setText(text); List stickyLines = stickyLinesProvider.getStickyLines(sourceViewer, 1, stickyLinesProperties); @@ -95,7 +98,7 @@ public void testNewStickyRoot() { line 2 line 3 line 4<"""; - setText(text); + textWidget.setText(text); List stickyLines = stickyLinesProvider.getStickyLines(sourceViewer, 3, stickyLinesProperties); @@ -111,7 +114,7 @@ public void testIgnoreEmptyLines() { line 2 line 3<"""; - setText(text); + textWidget.setText(text); List stickyLines = stickyLinesProvider.getStickyLines(sourceViewer, 4, stickyLinesProperties); @@ -127,7 +130,7 @@ public void testLinesWithTabs() { line 1 \tline 2 \t\tline 3<"""; - setText(text); + textWidget.setText(text); List stickyLines = stickyLinesProvider.getStickyLines(sourceViewer, 2, stickyLinesProperties); @@ -162,7 +165,7 @@ public void testStartAtEmptyLineWithPrevious() { line 3 line 4"""; - setText(text); + textWidget.setText(text); List stickyLines = stickyLinesProvider.getStickyLines(sourceViewer, 3, stickyLinesProperties); @@ -174,12 +177,13 @@ public void testStartAtEmptyLineWithPrevious() { @Test 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); + textWidget.setText(text); // Source viewer line 43 that is mapped to line 1 in the text widget List stickyLines = stickyLinesProvider.getStickyLines(sourceViewer, 1 + 42, stickyLinesProperties); @@ -187,14 +191,7 @@ public void testStickyLineWithSourceViewerLineMapping() { 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()); - } - - /** - * 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); + assertEquals("line 1", stickyLines.get(0).getText()); } private class SourceViewerWithLineMapping extends SourceViewer implements ITextViewerExtension5 { 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 index 483796a0dba..99ee26000f0 100644 --- 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 @@ -23,18 +23,29 @@ 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(); - textWidget = new StyledText(shell, SWT.NONE); + sourceViewer = new SourceViewer(shell, null, SWT.None); + sourceViewer.setDocument(new Document()); + textWidget = sourceViewer.getTextWidget(); color = new Color(0, 0, 0); } @@ -46,7 +57,7 @@ public void tearDown() { @Test public void testGetLineNumber() { - StickyLine stickyLine = new StickyLine(1, textWidget); + StickyLine stickyLine = new StickyLine(1, sourceViewer); assertEquals(1, stickyLine.getLineNumber()); } @@ -54,7 +65,7 @@ public void testGetLineNumber() { @Test public void testGetText() { textWidget.setText("line1\nline2\nline3"); - StickyLine stickyLine = new StickyLine(1, textWidget); + StickyLine stickyLine = new StickyLine(1, sourceViewer); assertEquals("line2", stickyLine.getText()); } @@ -73,7 +84,7 @@ public void testGetStyleRanges() { // line3 textWidget.setStyleRange(new StyleRange(15, 1, color, null)); - StickyLine stickyLine = new StickyLine(1, textWidget); + StickyLine stickyLine = new StickyLine(1, sourceViewer); StyleRange[] styleRanges = stickyLine.getStyleRanges(); assertEquals(2, styleRanges.length); @@ -83,4 +94,64 @@ public void testGetStyleRanges() { 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; + } + + } + } From 7adb4efefcb405435fc83526ed7b8280fb63290e Mon Sep 17 00:00:00 2001 From: lathapatil Date: Mon, 8 Jul 2024 12:14:52 +0530 Subject: [PATCH 153/232] Typing open bracket should surround the selected text with brackets Review points incorporated --- .../text/SurroundWithBracketsStrategy.java | 66 +++++++++++++++++++ .../jface/text/source/SourceViewer.java | 12 +++- .../jface/text/tests/TextViewerTest.java | 22 ++++++- 3 files changed, 96 insertions(+), 4 deletions(-) create mode 100644 bundles/org.eclipse.jface.text/src/org/eclipse/jface/text/SurroundWithBracketsStrategy.java 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..91bed183f44 --- /dev/null +++ b/bundles/org.eclipse.jface.text/src/org/eclipse/jface/text/SurroundWithBracketsStrategy.java @@ -0,0 +1,66 @@ +/******************************************************************************* + * 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.26 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 (bracketsMap.containsKey(command.text)) { + try { + ITextSelection selection= (ITextSelection) sourceViewer.getSelectionProvider().getSelection(); + 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(new Runnable() { + @Override + public void run() { + 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/source/SourceViewer.java b/bundles/org.eclipse.jface.text/src/org/eclipse/jface/text/source/SourceViewer.java index af5eae570c9..527a9d1891c 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,10 +14,12 @@ * 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; import java.util.ArrayList; +import java.util.Arrays; import java.util.Iterator; import java.util.List; import java.util.Stack; @@ -57,6 +59,7 @@ import org.eclipse.jface.text.ITextViewerLifecycle; import org.eclipse.jface.text.Position; import org.eclipse.jface.text.Region; +import org.eclipse.jface.text.SurroundWithBracketsStrategy; import org.eclipse.jface.text.TextViewer; import org.eclipse.jface.text.codemining.ICodeMiningProvider; import org.eclipse.jface.text.contentassist.IContentAssistant; @@ -543,7 +546,12 @@ public void configure(SourceViewerConfiguration configuration) { String[] types= configuration.getConfiguredContentTypes(this); for (String t : types) { - doSetAutoEditStrategies(configuration.getAutoEditStrategies(this, t), t); + IAutoEditStrategy[] autoEditStrategies= configuration.getAutoEditStrategies(this, t); + List autoEditStrategiesList= new ArrayList<>(Arrays.asList(autoEditStrategies)); + autoEditStrategiesList.add(new SurroundWithBracketsStrategy(this)); + IAutoEditStrategy[] newStrategies= autoEditStrategiesList.toArray(new IAutoEditStrategy[0]); + + doSetAutoEditStrategies(newStrategies, t); setTextDoubleClickStrategy(configuration.getDoubleClickStrategy(this, t), t); int[] stateMasks= configuration.getConfiguredTextHoverStateMasks(this, t); 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 9fe54f86b56..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; @@ -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; /** @@ -454,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 From 816a0569186bf893c32fced6f663e7cea5164172 Mon Sep 17 00:00:00 2001 From: Eclipse Platform Bot Date: Fri, 6 Dec 2024 17:48:15 +0000 Subject: [PATCH 154/232] Version bump(s) for 4.35 stream and fix since tag --- bundles/org.eclipse.jface.text/META-INF/MANIFEST.MF | 2 +- .../org/eclipse/jface/text/SurroundWithBracketsStrategy.java | 2 +- tests/org.eclipse.jface.text.tests/META-INF/MANIFEST.MF | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/bundles/org.eclipse.jface.text/META-INF/MANIFEST.MF b/bundles/org.eclipse.jface.text/META-INF/MANIFEST.MF index 146f03a2a43..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.26.100.qualifier +Bundle-Version: 3.27.0.qualifier Bundle-Vendor: %providerName Bundle-Localization: plugin Export-Package: 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 index 91bed183f44..ab289bb5033 100644 --- 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 @@ -20,7 +20,7 @@ import org.eclipse.jface.text.source.ISourceViewer; /** - * @since 3.26 This strategy supports surrounding the selected text with similar opening and closing + * @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 { 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: From 532c0fb9b6851d77e3a7cc9f70a85c77a9ba3826 Mon Sep 17 00:00:00 2001 From: Patrick Ziegler Date: Tue, 3 Dec 2024 18:38:23 +0100 Subject: [PATCH 155/232] Restore ability to filter views by category The ability to sort by categories was previously possible, but broke as part of 7275893613e8050290cac3c970e14f9889b87b73. This seems to be unintentional, given that the linked bug [1] is about exposing the FilteredTree and likely a result of streamlining the implementation. [1] - https://bugs.eclipse.org/bugs/show_bug.cgi?id=74795 Fixes https://github.com/eclipse-platform/eclipse.platform.ui/issues/2576 --- .../swt/internal/copy/ViewPatternFilter.java | 21 +++++-------------- .../internal/dialogs/ViewPatternFilter.java | 20 +++++------------- 2 files changed, 10 insertions(+), 31 deletions(-) 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.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/ViewPatternFilter.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/ViewPatternFilter.java index baa02a5fddd..52045ded872 100644 --- a/bundles/org.eclipse.ui.workbench/eclipseui/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); } } From f0e5533d6d57260ea345b527983e9ebd0362e68b Mon Sep 17 00:00:00 2001 From: Eclipse Platform Bot Date: Fri, 6 Dec 2024 22:00:21 +0000 Subject: [PATCH 156/232] Version bump(s) for 4.35 stream --- bundles/org.eclipse.e4.ui.workbench.swt/META-INF/MANIFEST.MF | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 c15044ab336..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.600.qualifier +Bundle-Version: 0.17.700.qualifier Bundle-Name: %pluginName Bundle-Vendor: %providerName Bundle-Localization: plugin From 4a9b6cf08abdaa138d191a9dc6eac43d39c84a6d Mon Sep 17 00:00:00 2001 From: Heiko Klare Date: Thu, 5 Dec 2024 11:16:21 +0100 Subject: [PATCH 157/232] Properly dispose font in FontRegistry upon display disposal When retrieving a font from a FontRegistry instance that is not cached in the registry yet, it will be created on the current display. In order to dispose the fonts of a display upon the display's disposal, the FontRegistry registers a dispose hook at the display instance. The current implementation only does this for the first display that is instantiated. For every further display, which may be created on Windows systems, no hook is added. Thus, if an additional display is disposed, its fonts remain in the FontRegistry, referring to a disposed display. This change improved the FontRegistry implementation to properly register a dispose hook to every display for which it contains fonts. It also adds an according regression test. --- .../eclipse/jface/resource/FontRegistry.java | 9 +-- .../tests/resources/FontRegistryTest.java | 56 +++++++++++++++++++ 2 files changed, 61 insertions(+), 4 deletions(-) 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/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(); + } + } + } From 187669501065220bf4fdb793e4409ae8ca807905 Mon Sep 17 00:00:00 2001 From: Eclipse Platform Bot Date: Fri, 6 Dec 2024 11:54:16 +0000 Subject: [PATCH 158/232] Version bump(s) for 4.35 stream --- bundles/org.eclipse.jface/META-INF/MANIFEST.MF | 2 +- tests/org.eclipse.jface.tests/META-INF/MANIFEST.MF | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/bundles/org.eclipse.jface/META-INF/MANIFEST.MF b/bundles/org.eclipse.jface/META-INF/MANIFEST.MF index de20b5090a8..47bd323cd19 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.100.qualifier +Bundle-Version: 3.35.200.qualifier Bundle-Vendor: %providerName Bundle-Localization: plugin Export-Package: org.eclipse.jface, 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", From e153ca3afcd04c8f2f3d4470b51bfe75a7501da9 Mon Sep 17 00:00:00 2001 From: Lars Vogel Date: Fri, 6 Dec 2024 16:44:07 +0100 Subject: [PATCH 159/232] Changing org.eclipse.ui.editors to use Eclipse formatter Currently the JDT formatter, which might be due to legacy reasons --- .../.settings/org.eclipse.jdt.core.prefs | 136 +++++++++++++++--- .../.settings/org.eclipse.jdt.ui.prefs | 4 +- 2 files changed, 121 insertions(+), 19 deletions(-) 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 From 2866dd0337061e9df9b57cbf0cb1fd2f8b6a798c Mon Sep 17 00:00:00 2001 From: Patrick Ziegler Date: Thu, 17 Oct 2024 23:16:55 +0200 Subject: [PATCH 160/232] Create static variant of ImageDescriptor.imageDescriptorFromURI() This method is intended to be used as a wrapper for createFromURL() to avoid having to deal with the checked MalformedURLException. However, this method is effectively unusable, as it requires the user to already have an instance of the ImageDescriptor they want to created. Instead, create a new, static createFromURI() method, mark the old method as deprecated and internally delegate to the new method. The old method was created as a response to Bug 559656 [1], in order to match the signature of IResourceUtilities. But because the latter is accessed via an OSGi service, it doesn't need to be static. Which is something that doesn't really work for image descriptors. [1] https://bugs.eclipse.org/bugs/show_bug.cgi?id=559656 --- .../org.eclipse.jface/META-INF/MANIFEST.MF | 2 +- .../jface/resource/ImageDescriptor.java | 36 +++++++++++++++---- 2 files changed, 30 insertions(+), 8 deletions(-) diff --git a/bundles/org.eclipse.jface/META-INF/MANIFEST.MF b/bundles/org.eclipse.jface/META-INF/MANIFEST.MF index 47bd323cd19..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.200.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/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); From 6d6123bf1b55a99665f6d806179a0d09c5b0e772 Mon Sep 17 00:00:00 2001 From: Lars Vogel Date: Fri, 6 Dec 2024 16:48:44 +0100 Subject: [PATCH 161/232] Changing org.eclipse.ui.genericeditor.tests to use Eclipse formatter Currently the JDT formatter, which might be due to legacy reasons --- .../.settings/org.eclipse.jdt.core.prefs | 136 +++++++++++++++--- .../.settings/org.eclipse.jdt.ui.prefs | 4 +- 2 files changed, 121 insertions(+), 19 deletions(-) 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 From b97ea88969e32224b7c4c0f2d4454bd4949be8f2 Mon Sep 17 00:00:00 2001 From: Eclipse Platform Bot Date: Fri, 6 Dec 2024 15:55:08 +0000 Subject: [PATCH 162/232] Version bump(s) for 4.35 stream --- tests/org.eclipse.ui.genericeditor.tests/META-INF/MANIFEST.MF | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 a3dd34a3a53..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.600.qualifier +Bundle-Version: 1.3.700.qualifier Bundle-Vendor: %Plugin.providerName Bundle-Localization: plugin Export-Package: org.eclipse.ui.genericeditor.tests, From e69ed28327677982c42b3c118ecb2738e48fc34c Mon Sep 17 00:00:00 2001 From: Patrick Ziegler Date: Mon, 9 Dec 2024 21:26:54 +0100 Subject: [PATCH 163/232] Implement search-by-category for Import/Export wizard This adapts the WizardPatternFilter to also show the wizards, if the search string matches one of its containing categories. Amends 532c0fb9b6851d77e3a7cc9f70a85c77a9ba3826 Fixes https://github.com/eclipse-platform/eclipse.platform.ui/issues/2576 --- .../internal/dialogs/WizardPatternFilter.java | 37 +++++++++---------- 1 file changed, 17 insertions(+), 20 deletions(-) diff --git a/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/WizardPatternFilter.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/WizardPatternFilter.java index a83fbfbe89b..de236367743 100644 --- a/bundles/org.eclipse.ui.workbench/eclipseui/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 From 5c65cbc0026b4b5403a937081e3030d1d341fbfe Mon Sep 17 00:00:00 2001 From: Lars Vogel Date: Wed, 4 Dec 2024 09:02:04 +0100 Subject: [PATCH 164/232] Mark deprecated and unsupported constants for deletion in IWorkbenchPreferenceConstants Also remove initialization of unsupported preference values --- .../eclipse/ui/IWorkbenchPreferenceConstants.java | 12 ++++++------ .../eclipse/ui/internal/UIPreferenceInitializer.java | 4 ---- 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IWorkbenchPreferenceConstants.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/IWorkbenchPreferenceConstants.java index 7e7d6ad2f02..9885d08b005 100644 --- a/bundles/org.eclipse.ui.workbench/eclipseui/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$ /** 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 From d58c50e418597d74a9852369ed980df884c1d317 Mon Sep 17 00:00:00 2001 From: Patrick Ziegler Date: Mon, 9 Dec 2024 22:30:14 +0100 Subject: [PATCH 165/232] Remove special flattening-behavior for Wizard content providers This removes the feature from the "New" and "Import/Export" wizards, where container for wizard elements would be flattened, if it only contains a single, other container. There are two reasons for this change: - it is not consistent with the other viewers, that always show the complete tree path (e.g. the preference dialog). - it doesn't work properly, as it is still possible to produce the undesirable behavior in the "New" wizard (for e.g. Java/JUnit/...) See https://github.com/eclipse-platform/eclipse.platform.ui/pull/2602 for context. --- .../ui/internal/dialogs/WizardContentProvider.java | 9 --------- 1 file changed, 9 deletions(-) diff --git a/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/WizardContentProvider.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/WizardContentProvider.java index 7912af85a58..47b1330b21e 100644 --- a/bundles/org.eclipse.ui.workbench/eclipseui/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 { From b379121d110f857e2b53bebd959d404d17259d4d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=8A?= =?UTF-8?q?=D1=80=20=D0=9A=D1=83=D1=80=D1=82=D0=B0=D0=BA=D0=BE=D0=B2?= Date: Tue, 10 Dec 2024 11:56:38 +0200 Subject: [PATCH 166/232] Close test windows in ImportArchiveOperationTest Work towards https://github.com/eclipse-platform/eclipse.platform.ui/issues/2432 . --- .../ui/tests/datatransfer/ImportArchiveOperationTest.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) 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 3c4a8425f0a..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 @@ -39,9 +39,11 @@ 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.wizards.datatransfer.ImportOperation; import org.junit.After; +import org.junit.Rule; import org.junit.Test; public class ImportArchiveOperationTest implements IOverwriteQuery { @@ -64,6 +66,9 @@ public class ImportArchiveOperationTest implements IOverwriteQuery { private URL tarFileURL; + @Rule + public CloseTestWindowsRule closeTestWindows = new CloseTestWindowsRule(); + @Override public String queryOverwrite(String pathString) { //Always return an empty String - we aren't From 78615b83bfb39e49f20724c0dc78c1eab47c6c53 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=8A?= =?UTF-8?q?=D1=80=20=D0=9A=D1=83=D1=80=D1=82=D0=B0=D0=BA=D0=BE=D0=B2?= Date: Tue, 10 Dec 2024 11:18:17 +0200 Subject: [PATCH 167/232] Stop requiring jdt.ui in o.e.ui.tests There are enough resources available to handle tests without loading JDT UI and putting extra requirements and circular dependencies between repositories. --- .../org/eclipse/ui/tests/api/EditorIconTest.java | 4 ++-- .../eclipse/ui/tests/stress/OpenCloseTest.java | 16 ++++++++-------- tests/org.eclipse.ui.tests/META-INF/MANIFEST.MF | 2 +- tests/org.eclipse.ui.tests/plugin.xml | 2 +- 4 files changed, 12 insertions(+), 12 deletions(-) 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 8c68c6734c9..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 @@ -67,7 +67,7 @@ public void testNonDependantBundleIcon() { .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); } 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 40dd534b603..f9c7cd40acb 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 @@ -48,7 +48,7 @@ * Test opening and closing of items. */ 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; @@ -67,7 +67,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(); } @@ -101,7 +101,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()); @@ -119,7 +119,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); @@ -127,7 +127,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) { @@ -143,8 +143,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); @@ -157,7 +157,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/META-INF/MANIFEST.MF b/tests/org.eclipse.ui.tests/META-INF/MANIFEST.MF index 4832c6b1d13..ab9288a267d 100644 --- a/tests/org.eclipse.ui.tests/META-INF/MANIFEST.MF +++ b/tests/org.eclipse.ui.tests/META-INF/MANIFEST.MF @@ -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/plugin.xml b/tests/org.eclipse.ui.tests/plugin.xml index 6350e67b8c6..2e16cdb6ef3 100644 --- a/tests/org.eclipse.ui.tests/plugin.xml +++ b/tests/org.eclipse.ui.tests/plugin.xml @@ -723,7 +723,7 @@ extensions="icontest1"/> Date: Mon, 9 Dec 2024 22:56:51 +0100 Subject: [PATCH 168/232] Remove activator from org.eclipse.search.tests Activator is not required for the tests and can be replaced with FrameworkUtil for bundleContext access. --- .../META-INF/MANIFEST.MF | 1 - .../search/core/tests/LineConversionTest.java | 8 +++---- .../org/eclipse/search/tests/FileTool.java | 14 ++++++++++++ .../eclipse/search/tests/ResourceHelper.java | 7 ++++-- ...rchTestPlugin.java => SearchTestUtil.java} | 22 ++----------------- .../filesearch/AnnotationManagerTest.java | 19 +++++++++------- .../tests/filesearch/FileSearchTests.java | 12 +++++----- .../filesearch/LineAnnotationManagerTest.java | 4 ++-- .../tests/filesearch/PositionTrackerTest.java | 6 ++--- .../filesearch/SearchResultPageTest.java | 4 ++-- 10 files changed, 49 insertions(+), 48 deletions(-) rename tests/org.eclipse.search.tests/src/org/eclipse/search/tests/{SearchTestPlugin.java => SearchTestUtil.java} (76%) diff --git a/tests/org.eclipse.search.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.search.tests/META-INF/MANIFEST.MF index 70fe03f11cf..3bd122b02c4 100644 --- a/tests/org.eclipse.search.tests/META-INF/MANIFEST.MF +++ b/tests/org.eclipse.search.tests/META-INF/MANIFEST.MF @@ -3,7 +3,6 @@ Bundle-ManifestVersion: 2 Bundle-Name: %pluginName Bundle-SymbolicName: org.eclipse.search.tests;singleton:=true Bundle-Version: 3.11.600.qualifier -Bundle-Activator: org.eclipse.search.tests.SearchTestPlugin 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 2c3ea40eece..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 @@ -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,7 +158,7 @@ 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()); IDocument document= editor.getDocumentProvider().getDocument(editor.getEditorInput()); for (Iterator annotations= annotationModel.getAnnotationIterator(); annotations.hasNext();) { @@ -180,11 +181,13 @@ 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()); IDocument document= editor.getDocumentProvider().getDocument(editor.getEditorInput()); for (Iterator annotations= annotationModel.getAnnotationIterator(); annotations.hasNext();) { 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); From cd48fcd438d830a3d3eb31c92285a5187a188bba Mon Sep 17 00:00:00 2001 From: Eclipse Platform Bot Date: Mon, 9 Dec 2024 22:03:28 +0000 Subject: [PATCH 169/232] Version bump(s) for 4.35 stream --- tests/org.eclipse.search.tests/META-INF/MANIFEST.MF | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/org.eclipse.search.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.search.tests/META-INF/MANIFEST.MF index 3bd122b02c4..ddd2d496922 100644 --- a/tests/org.eclipse.search.tests/META-INF/MANIFEST.MF +++ b/tests/org.eclipse.search.tests/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %pluginName Bundle-SymbolicName: org.eclipse.search.tests;singleton:=true -Bundle-Version: 3.11.600.qualifier +Bundle-Version: 3.11.700.qualifier Bundle-Vendor: %providerName Bundle-Localization: plugin Export-Package: org.eclipse.search.core.tests;x-internal:=true, From d3971fe294dfa8af43e63bab02886dc4b06b3dd2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Kubitz?= Date: Tue, 10 Dec 2024 11:12:28 +0100 Subject: [PATCH 170/232] String intern org.eclipse.e4.ui.css.swt.dom.WidgetElement.swtStyles To avoid needless duplicate strings --- .../src/org/eclipse/e4/ui/css/swt/helpers/SWTStyleHelpers.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bundles/org.eclipse.e4.ui.css.swt/src/org/eclipse/e4/ui/css/swt/helpers/SWTStyleHelpers.java b/bundles/org.eclipse.e4.ui.css.swt/src/org/eclipse/e4/ui/css/swt/helpers/SWTStyleHelpers.java index ade77f33f03..225f588eaaa 100644 --- a/bundles/org.eclipse.e4.ui.css.swt/src/org/eclipse/e4/ui/css/swt/helpers/SWTStyleHelpers.java +++ b/bundles/org.eclipse.e4.ui.css.swt/src/org/eclipse/e4/ui/css/swt/helpers/SWTStyleHelpers.java @@ -756,7 +756,7 @@ public static String getSWTWidgetStyleAsString(int style, String separator) { } } catch (Exception e) { } - return swtStyles.length() == 0 ? "" : swtStyles.toString(); + return swtStyles.length() == 0 ? "" : swtStyles.toString().intern(); } /** From 9c450e2b74067a4ecfa73faa44e8321d4fa1ef17 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=8A?= =?UTF-8?q?=D1=80=20=D0=9A=D1=83=D1=80=D1=82=D0=B0=D0=BA=D0=BE=D0=B2?= Date: Tue, 10 Dec 2024 17:53:04 +0200 Subject: [PATCH 171/232] Make WorkingSetSorter extend ViewerComparator Modernize code a bit too. --- .../navigator/workingsets/WorkingSetSorter.java | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) 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(); } From 4721af7bd13582a89a74b7d0702960daa46faa12 Mon Sep 17 00:00:00 2001 From: Eclipse Platform Bot Date: Tue, 10 Dec 2024 15:58:11 +0000 Subject: [PATCH 172/232] Version bump(s) for 4.35 stream --- bundles/org.eclipse.ui.navigator.resources/META-INF/MANIFEST.MF | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 5e9f968e313..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.500.qualifier +Bundle-Version: 3.9.600.qualifier Bundle-Activator: org.eclipse.ui.internal.navigator.resources.plugin.WorkbenchNavigatorPlugin Bundle-Vendor: %Plugin.providerName Bundle-Localization: plugin From 51df26cf01b501af1c5e2cfbe153944a74daddd5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Kubitz?= Date: Wed, 11 Dec 2024 11:49:03 +0100 Subject: [PATCH 173/232] ImportExistingArchiveProjectFilterTest: skip jdt #2432 When running locally and jdt plugins are available the test walked the whole contributed JDT items in the project explorer, which took much time and Heap memory https://github.com/eclipse-platform/eclipse.platform.ui/issues/2432 --- .../datatransfer/ImportExistingArchiveProjectFilterTest.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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 5132ead15f5..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; @@ -154,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); From bbebe70c39161940ee555dcf32df5084fb534353 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Kubitz?= Date: Wed, 11 Dec 2024 10:15:50 +0100 Subject: [PATCH 174/232] [tests] close some leaked Shells #2615 https://github.com/eclipse-platform/eclipse.platform.ui/issues/2615 --- .../eclipse/ui/tests/SwtLeakTestWatcher.java | 58 +++++++++++++++++++ .../NestedSyncExecDeadlockTest.java | 10 +++- .../ui/tests/concurrency/TestBug108162.java | 11 +++- .../ui/tests/concurrency/TestBug269121.java | 10 +++- .../ui/tests/concurrency/TestBug98621.java | 11 +++- .../dialogs/DeprecatedUIPreferencesAuto.java | 35 ++++++----- .../ui/tests/dialogs/UIPreferencesAuto.java | 35 ++++++----- .../ui/tests/dialogs/UIWizardsAuto.java | 9 ++- .../tests/statushandlers/SupportTrayTest.java | 13 ++++- .../WizardsStatusHandlingTestCase.java | 8 ++- 10 files changed, 162 insertions(+), 38 deletions(-) create mode 100644 tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/SwtLeakTestWatcher.java 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/concurrency/NestedSyncExecDeadlockTest.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/concurrency/NestedSyncExecDeadlockTest.java index 4767d79cfef..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) { @@ -53,7 +59,8 @@ public void resourceChanged(IResourceChangeEvent event) { private final IWorkspace workspace = ResourcesPlugin.getWorkspace(); 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) { @@ -77,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/TestBug108162.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/concurrency/TestBug108162.java index cbbc4b14706..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 @@ -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) { @@ -52,8 +59,9 @@ public void execute(final IProgressMonitor pm) { */ @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 @@ -63,5 +71,6 @@ public void testBug() throws CoreException { // 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 17965b8e366..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) { @@ -80,8 +87,9 @@ public void threadChange(Thread thread) { */ @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) { @@ -91,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/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/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/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() { From 8bd169c3b24dc34a09ff68d2b78fa7f980c493e1 Mon Sep 17 00:00:00 2001 From: Madhumitha M V Date: Tue, 10 Dec 2024 13:02:01 +0530 Subject: [PATCH 175/232] [Dark Theme]Fix for inconsistent Git Staging view bg colors After improving the existing dark theme, Git staging view had side effects wrt the back ground colors of whole view and also the Unstaged Changes and Staged Changes section. This has been fixed with this change by applying those dark background changes only to editor. --- bundles/org.eclipse.ui.themes/css/e4-dark_linux.css | 6 +++--- bundles/org.eclipse.ui.themes/css/e4-dark_mac.css | 6 +++--- bundles/org.eclipse.ui.themes/css/e4-dark_win.css | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) 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 a3a738d2b8d..b3deba083ed 100644 --- a/bundles/org.eclipse.ui.themes/css/e4-dark_linux.css +++ b/bundles/org.eclipse.ui.themes/css/e4-dark_linux.css @@ -108,9 +108,9 @@ CTabFolder[style~='SWT.DOWN'][style~='SWT.BOTTOM'] { swt-selected-highlight-top: false; } -.MPart Form Composite, -.MPart Form Composite Tree, -.MPartStack.active .MPart Form Composite Tree +.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-dark_mac.css b/bundles/org.eclipse.ui.themes/css/e4-dark_mac.css index 2bb33eab710..8154d365509 100644 --- a/bundles/org.eclipse.ui.themes/css/e4-dark_mac.css +++ b/bundles/org.eclipse.ui.themes/css/e4-dark_mac.css @@ -94,9 +94,9 @@ CTabFolder[style~='SWT.DOWN'][style~='SWT.BOTTOM'] { swt-selected-highlight-top: false; } -.MPart Form Composite, -.MPart Form Composite Tree, -.MPartStack.active .MPart Form Composite Tree +.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-dark_win.css b/bundles/org.eclipse.ui.themes/css/e4-dark_win.css index a2ba03abeee..00164a24483 100644 --- a/bundles/org.eclipse.ui.themes/css/e4-dark_win.css +++ b/bundles/org.eclipse.ui.themes/css/e4-dark_win.css @@ -176,9 +176,9 @@ CTabFolder[style~='SWT.DOWN'][style~='SWT.BOTTOM'] { swt-selected-highlight-top: false; } -.MPart Form Composite, -.MPart Form Composite Tree, -.MPartStack.active .MPart Form Composite Tree +.Editor Form Composite, +.Editor Form Composite Tree, +.MPartStack.active .Editor Form Composite Tree { background-color: #1E1F22; } From b7d5b145c6ad09d27ab14268da786353d6dca34e Mon Sep 17 00:00:00 2001 From: lathapatil Date: Tue, 10 Dec 2024 19:24:24 +0530 Subject: [PATCH 176/232] Fix Issues introduced by PR #2051 Fixes https://github.com/eclipse-platform/eclipse.platform.ui/issues/2600 Review points implementation --- .../jface/text/SurroundWithBracketsStrategy.java | 11 +++-------- .../org/eclipse/jface/text/source/SourceViewer.java | 9 +-------- .../jface/text/source/SourceViewerConfiguration.java | 3 ++- 3 files changed, 6 insertions(+), 17 deletions(-) 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 index ab289bb5033..41dee55d993 100644 --- 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 @@ -36,9 +36,9 @@ public SurroundWithBracketsStrategy(ISourceViewer sourceViewer) { @Override public void customizeDocumentCommand(IDocument document, DocumentCommand command) { - if (bracketsMap.containsKey(command.text)) { + if (command.text != null && bracketsMap.containsKey(command.text)) { try { - ITextSelection selection= (ITextSelection) sourceViewer.getSelectionProvider().getSelection(); + ITextSelection selection= command.fSelection; if (selection != null && selection.getLength() > 0) { String selectedText= document.get(selection.getOffset(), selection.getLength()); String closingBracket= bracketsMap.get(command.text); @@ -51,12 +51,7 @@ public void customizeDocumentCommand(IDocument document, DocumentCommand command command.shiftsCaret= false; // Run this in a UI thread asynchronously to ensure the selection is updated correctly - sourceViewer.getTextWidget().getDisplay().asyncExec(new Runnable() { - @Override - public void run() { - sourceViewer.setSelectedRange(command.offset + 1, selectedText.length()); - } - }); + 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/source/SourceViewer.java b/bundles/org.eclipse.jface.text/src/org/eclipse/jface/text/source/SourceViewer.java index 527a9d1891c..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 @@ -19,7 +19,6 @@ package org.eclipse.jface.text.source; import java.util.ArrayList; -import java.util.Arrays; import java.util.Iterator; import java.util.List; import java.util.Stack; @@ -59,7 +58,6 @@ import org.eclipse.jface.text.ITextViewerLifecycle; import org.eclipse.jface.text.Position; import org.eclipse.jface.text.Region; -import org.eclipse.jface.text.SurroundWithBracketsStrategy; import org.eclipse.jface.text.TextViewer; import org.eclipse.jface.text.codemining.ICodeMiningProvider; import org.eclipse.jface.text.contentassist.IContentAssistant; @@ -546,12 +544,7 @@ public void configure(SourceViewerConfiguration configuration) { String[] types= configuration.getConfiguredContentTypes(this); for (String t : types) { - IAutoEditStrategy[] autoEditStrategies= configuration.getAutoEditStrategies(this, t); - List autoEditStrategiesList= new ArrayList<>(Arrays.asList(autoEditStrategies)); - autoEditStrategiesList.add(new SurroundWithBracketsStrategy(this)); - IAutoEditStrategy[] newStrategies= autoEditStrategiesList.toArray(new IAutoEditStrategy[0]); - - doSetAutoEditStrategies(newStrategies, t); + doSetAutoEditStrategies(configuration.getAutoEditStrategies(this, t), t); setTextDoubleClickStrategy(configuration.getDoubleClickStrategy(this, t), t); int[] stateMasks= configuration.getConfiguredTextHoverStateMasks(this, t); 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) }; } /** From 5334e3c9e86e2981bd73d82989f50a2863abd43e Mon Sep 17 00:00:00 2001 From: Matthias Becker Date: Fri, 13 Dec 2024 15:00:27 +0100 Subject: [PATCH 177/232] Fix Objects inside Icons Fix Icons according to Eclipse UI guideline. Left and top pixel row should stay empty according to the guideline. Also: make the "document" in the "wordwrap" and the "block_selection_mode" icon the same hight as they are shown next to each other in the toolbar. --- .../icons/full/etool16/next_nav.png | Bin 443 -> 447 bytes .../icons/full/etool16/next_nav@2x.png | Bin 880 -> 907 bytes .../icons/full/etool16/prev_nav.png | Bin 422 -> 433 bytes .../icons/full/etool16/prev_nav@2x.png | Bin 866 -> 864 bytes .../icons/full/etool16/next_nav.png | Bin 493 -> 447 bytes .../icons/full/etool16/next_nav@2x.png | Bin 1062 -> 907 bytes .../icons/full/etool16/prev_nav.png | Bin 413 -> 433 bytes .../icons/full/etool16/prev_nav@2x.png | Bin 992 -> 864 bytes .../full/etool16/block_selection_mode.png | Bin 284 -> 301 bytes .../full/etool16/block_selection_mode@2x.png | Bin 525 -> 611 bytes .../icons/full/etool16/wordwrap.png | Bin 427 -> 551 bytes .../icons/full/etool16/wordwrap@2x.png | Bin 916 -> 1292 bytes 12 files changed, 0 insertions(+), 0 deletions(-) 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 49ad8dd3b82be20ed801871be7ca1fa69c4da03f..0deb92e7d0187c91bfef827151649575d6f650f1 100644 GIT binary patch delta 421 zcmV;W0b2gM1HS{1B!7lUL_t(|USnXOCfL_5wS8Z!#A`TilbD3A1~1rM&-d@!`%C}9 z`0e@syBhfaqN~9RcGdI#|Ns9D9E12E@q@>1{zt|ju{~Ql!88ikUIR4X#|=0J@zK@5 z!1j&Zm~vYxc>n+VbOeq;d}MiK7i?PJi;&w`A@E^CDewQS)qkSD{=V7pABI7EkT^&l zt{4i|uI@)RK;-I`Rlz_1Je~U=9bZ`!_G@Fg$aRo9WEZShIT2yNs$3q?wZ%e@udfUI z{pWt?e;B^ADdO+CVxecNvbZJSilJcfvdO4nusn-Xc2$AE%i9~n{{Ft({Qu#uxPPni z1mCa7c?YATU3b z+hA#?z_UduJWe1!vaQJM$#Z6)8Zdp{V(cd30DUuOp{k!Wdl^_jBWc=y7-nc_U_wuY zFc)-ApMz>Z-^`U@f%2X$|6#ZRXaI^LB+xQ>9;yLd(;n84qot_CkaHUNY{d~`K<0mOhea11lx;IW(kkugYY&z4S1!?)J}4ft^bjzN5M zH88M!V>hPUmI~hg|2`doV-O!%9@zz(*7qXhHdl!}+)&E}G&^L1ys`^Q@mw^Q|lBWHKVGtiZ6~bK5 zIeiYQ0ev%9f(6QZw)}@-6a{FYW%4{!`L1be@M=H@^%@fwfYk#4E)_&FXIg-W00000 LNkvXXu0mjfr_sRx 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 7c52d45cbb8ea02af709696675454f9faad52327..62f8e7ad9ace8ad2ba52639c97bd04705e4c6835 100644 GIT binary patch delta 884 zcmV-)1B?9d28#!fB!5y#L_t(|UhR?DOH^?b$8S+k&i&bf^b$mmz4$-)9Dxr7Q4mSg zST1RaDJ^)TD9p(<$0qj~XB@9hj$7gsX%IyZ`4B}LEeM8{trSE~^X;DMH;w1s>r(UB z2R<<8{Lb>5-&K_V*bpg8-54nolZG& zv?Lar0`P8zU*3+%3w-2#NkjfizFaELd0*1_a{+n*v-|?rZ$83o%DSrq;lR2CI(6c$bZn%?KM7^6Y8!4$@5B2kpOqJA|2mf1uPwPrJL$WK9{5G)gXCZ2^~-; z4RNRxzGz&gKGRaqB60UKRy2h&E9&Di9MEd>~oyz*ry_pw-PT$o$=)#?i8WB zXbtGhm!ozVlNKfR@x}ZCjqPrbi9NRX_Ns1Qw(-RItMU3~EMhu;vvf;99VSr7W{-GAe_?cJd`c>R2Ew={s{d0R#_Wr;W2 z(f@PtFCPS)B2Av#J+)oFuIW5T8PAK>EM=Loc*yHadE#|0Uzd1hx5zGE)93*yV-pQ6 zK9D@0EGj)0K=OQ?`er{!o=+C8^Nk>RK2B|80HlmJ>~h1(3{6`?=lrSdl=I3Pnn23f zL~ZqjAV?W!miS?1hBoq77dTbl3{u7>Dm`5wWnAJKfR)3mM|F^??+=x7UCu4W)wmm^ z%x5ujSO=M!zJIHf>vE1U`vjL`=Rs!nD!F_}2bubkP|9^V$CzCp9<2wN**nMZL7OXn zP=|DOGOkqik#vSUR}zhQK+3!&R;5Ea=G}zZPeG-RgIlxuNqMd$9Bu$9^Ok6(_Q4R3 z`nO=_UDvXF7TN}yr8D?EvrjM-Y6Qt~ns9|}bEHB`8h>JZcn4-CnwBK>(#+g!rC!A6 znO$ID&eX|>u!0Tia@Xlq|B!oEY(Vf z%8Uc|+wl6@P9$HRQu_XO@m$aEUTc*+$Bf?oW{@&Jj{&FE6?AGCEHy5X*p;>X^F1fR zu7VWx1b-cxCv#T5die>u{4F3eXOsjS`ni6GhN1F;)Q3Cv^zy0u6}Wg{EvOc7XoGT2 zE|wSQ?DK)loH503*E|8c@g~X&QXj`0n0|5?vFbulE@0P3Z=JBLkTZ+X-s=M?^Gawz zpg1q$FR>zAxd!ng>p{Q$C3$0E=W0#%F9lzBD}P9tHzo5De|+BKw65d2*{e3oH(h80 z$?=k)r}dX;F=P4D{(UP8Gizpx%<_$$?I1bMqP05!Qs#3-eR~H;nNQQwH2_lPbA`LD z6QsCB*$4abPR#yxTtynD!DEfnaTZUTDm}ToJDTn|r_lOHw#3mS*w40MQ^mvaQJM zwX6G44cNY^@Be~S9_?k>0w2#UaQhFUL3|WNNMOaviKqt5&wmh5Se7IB=FXPLf4}cG z{|C_^K1duSj~)h#mrX_(uqcB^Y*m5alj~~(e}go`Fo+Kl2g$<~L&4ldQxOKND-phW zd70PGKleNTqhpXbNFJmP*#$EfOhXv3p;Yks+CrZHTWh4g|9Lw1KMZfI5cvfXUti4s z5v~{tCeN9H8GmaVN_qePeX{|ML40I+WEb?!oP}w?mI~hg|2`doV-O!*4GeTnpMxp4 zy@vPy{~tHt7{mvOV@ruGljmU?u&W+u!2dUJ4C14!fr0vo3ozw&*Yo}R|L-kO^Sl3l ze?R}ftAYP7x*EJ-U%S*9kgYJhuT6RZx*Bu<0F< Bz}f%+ delta 396 zcmV;70dxMb1EvFzB!6v5L_t(|USnW@g8kb%{=?YBfIV9}QPuC=3K1yp+43KTQ52wo z?HjvM<#%s^2%sBq@Yv1&=olovX?-uM0XsMM;I$DQtXDIED>8e<%88g3&QIgjSeniM<;*;n{~#K~M^^&_iW{$*%Sx{<&Xua$F&~Kb3x7(F`#_}Di~sflsj+h) z+Aru%+y^4HUaT*0cj_fdLC#CuYy^?oraSR-AX4u<8io^F|L_9wQ9p>(HciADLA1Y8 zijJHI(SAYy`U0cF0TAsMlpOPe6no*lYuEQymOmnVF7CN~YBzuQ#sv_mZAwPZgGe2$ z@|5*f8B@Jg<$w5rF-1@MZj0Rf>(?)WNNrOh8UW#QZqb_D(gYU|AKsMb=S33i>1-() z7;FO3enI0m10a^=S=Ccn9^t~l0~;~>xGoQ$>9NNdonK1f{!1X*w<%O@T<)tj(7%5J zK0Wke;q|FJe5S`9XLL?~di@LfBF!Mh8JqfQ3@fzPK!2om9X?D}6_yM1*y9Xmi?e#M zzCd^AGDvaeH-&2qZ=@#o=KCt}Ho3>PTwsqgoMlFz{)$c9eJ>WGK2Wkzx z8rx-Cs^JW0nPFC+=cJCFRuJub2E1k42KO7^a^U&UPGsKrN`kY@Fv~OKJhxvE>}~~- zx}X~ejDL?g@GQI?nRm_0f*EFchMebif!3>SAW|1Je9(YqGOz`i_g#*p{hMv`M4zkG z+}RGIea}dpd2i&93C-ek#1TFBlLz`-t)`A3i1uw7J#2z3&Wt)DeVr4z{enR73P|y+ zqoPMlknC*A5$Wrk$n66D_70HZSx3c=nIPG@`+tr|U+0#RudNeA`!>aon;_XQPaKiH z&Ml=gEnOhmw<%F?g5c{5N2D+F`jcy9?sW525UE|2JYj-h;hiJWmwCNVBXcJ&T?3KY zRjCFO1ekF|`Z~9i8k)L6v~Sa|3w(CuPcKk^p$A0!HvOv$l&q9xX1E}m-W4d&1-t73!BEmz+GvziXm TI?u_`00000NkvXXu0mjfzhI}x delta 843 zcmV-R1GN0$2I2;gB!4MML_t(|Ud@)xOH^SL#tmBOy_Snw^mp`E)FLQo715?7v&_Vd zu*NW|u~9QqGrzxe#MJR)(h4i1MM1PIC)_iXgl_n^AoD zI*87@dN@`FBC#I)uM3O~ML=}k)&0@yAQJ1rdV$B!-XxMi{IS7u5Q%-#3+yZELJ(4S z4o5PGe`ufrL}H&NMj{|OZxVnl$sqoL{z?$<85=YaD+kf}R4E$00iyG+;;{-4Z?5IY z_U-M*(x(Z(y?-^+U7PZ~eN`Y5`xGB`78qV%AeytoS{t5$HPWYob-#}A)4T!hLr_SS6sRMdX zWhLgHWV^!!=2)YLUT?3yd;JC)+G;_(JsZ@Olabe*W1;6nCT8v(@(mYQqlaGhNWZ>& z{RZk=Ye6L5puSw|KyR+|%N^d19P|y<&?A2K>hpqB+gt~t^J&qOnS1+ASxXLheRn^W zXTnKAFMoU3%QNIW(;KL6ybU6;tNuJ|zW=m^SDkyXJX^gf*u!3)A?KOiKvhFMh{Uc2 z@-1lI#13P5t|<`Kw4ca%rZ-Sge+NWjSAzwad4mNuG%Fvv1JS-!&iMZkE7eL@$tX{SOO# zH$*M)W$uwI@Lu<&OwQpiPNI{@?N6>L(>| VfLm9tII;i$002ovPDHLkV1iSdq(uM# 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 80007d040d7d11cc155f90d36623d0a0c0277a22..0deb92e7d0187c91bfef827151649575d6f650f1 100644 GIT binary patch delta 421 zcmV;W0b2g;1HS{1B!7lUL_t(|USnXOCfL_5wS8Z!#A`TilbD3A1~1rM&-d@!`%C}9 z`0e@syBhfaqN~9RcGdI#|Ns9D9E12E@q@>1{zt|ju{~Ql!88ikUIR4X#|=0J@zK@5 z!1j&Zm~vYxc>n+VbOeq;d}MiK7i?PJi;&w`A@E^CDewQS)qkSD{=V7pABI7EkT^&l zt{4i|uI@)RK;-I`Rlz_1Je~U=9bZ`!_G@Fg$aRo9WEZShIT2yNs$3q?wZ%e@udfUI z{pWt?e;B^ADdO+CVxecNvbZJSilJcfvdO4nusn-Xc2$AE%i9~n{{Ft({Qu#uxPPni z1mCa7c?YATU3b z+hA#?z_UduJWe1!vaQJM$#Z6)8Zdp{V(cd30DUuOp{k!Wdl^_jBWc=y7-nc_U_wuY zFc)-ApMz>Z-^`U@f%2X$|6#ZRXaI^LB+xQ>9;yLd(;n84L>{SU&sn*@LCYm=}?SA!RTH2(kp z4vhc&d;&HET@4KEo9_D`T@1wl5C-wl)xf~6=|Pxs5Ch)8F|q+iw$J|$!yx|lXP@c_Gqd%jIGi<5g{r~UNQ8)(iL4V@NwuA8c=?Mz!r^erh zYus2N@L@wK@BgiJl0W~x+3+8RceW^g1&ME}6nqO;3d(4j zp_d?exMCof-+y1Auyjf;!T=BeDOz11{N(B?|G&TQHvfOLJK_JTe4%&Ca(Fe+!(e`Y zg~Gxqg{TIAz_K)6jb%B4Z_Y3D_`4!U=<}j9UK?~ZATS+hz}zXNs0K9j%>sw`e2^j8 z0#6pDa=U~0$Z-#2Pw#I~m^G;i)qt8lh$3PD$be}R>r7D%sO((?Hb5h3+J6{^$)Sfq ze}B8el!-0a4G1V-`X7c-6d(bR0sRx&u^T`PXz%Y==$X)S9{>plS!*7{sTBYK002ov JPDHLkV1jUS<9+}D 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 9515e01a302ea86d5c300ab1baf9f9909dd1fd61..62f8e7ad9ace8ad2ba52639c97bd04705e4c6835 100644 GIT binary patch delta 884 zcmV-)1B?8o2#W`hB!5y#L_t(|UhR?DOH^?b$8S+k&i&bf^b$mmz4$-)9Dxr7Q4mSg zST1RaDJ^)TD9p(<$0qj~XB@9hj$7gsX%IyZ`4B}LEeM8{trSE~^X;DMH;w1s>r(UB z2R<<8{Lb>5-&K_V*bpg8-54nolZG& zv?Lar0`P8zU*3+%3w-2#NkjfizFaELd0*1_a{+n*v-|?rZ$83o%DSrq;lR2CI(6c$bZn%?KM7^6Y8!4$@5B2kpOqJA|2mf1uPwPrJL$WK9{5G)gXCZ2^~-; z4RNRxzGz&gKGRaqB60UKRy2h&E9&Di9MEd>~oyz*ry_pw-PT$o$=)#?i8WB zXbtGhm!ozVlNKfR@x}ZCjqPrbi9NRX_Ns1Qw(-RItMU3~EMhu;vvf;99VSr7W{-GAe_?cJd`c>R2Ew={s{d0R#_Wr;W2 z(f@PtFCPS)B2Av#J+)oFuIW5T8PAK>EM=Loc*yHadE#|0Uzd1hx5zGE)93*yV-pQ6 zK9D@0EGj)0K=OQ?`er{!o=+C8^Nk>RK2B|80HlmJ>~h1(3{6`?=lrSdl=I3Pnn23f zL~ZqjAV?W!miS?1hBoq77dTbl3{u7>Dm`5wWnAJKfR)AtRZl5rXkTFp4B5 z-TL+S5Kd@+{q;he**Ezl-Fcqp_k8+m)2yzpN;2Mup3ZpXC4UA4++rjbee$FH+?r*< zE2jmEi(oy2{M?%5?z=>O^)~=Fi}>^U=a$4Zey&m$jRxg2;{_}l&t>^qNvwCtFSoGj z{9L7^nZS9Y9-kU7uAe~0*oyPUOY0@@sxlwhhJ{Gu{RrF;QcmEjv(7R)23y3*q~SnRg_OKesRmqg6@i z&6o)9E)|&SlEL%cSOZpnO$b>&*Id$1@aGnW1jh9ir1U+d0uyd&nSpOlK97~_(fi`^ zFYP8N1 z3%Haq-G70E-c~9=N$!>F$M;G(2ChtQ#Y*?EHCrOwFalL!F50 z?P3AS=?eKa{PKkzDfgy4^|2W*e~u_5FdA~=q~2LxfRbpF+Q%Fc z673t2oqw%l`OS+iB;AjIdg2brpc($kd8mg3PJe{li0Q7%0+hJJ=8U&VYzdP{-;=oY zy$2I-KaM-KR*C&vR`&q)^9y;X$J9KE8S27u{jKT(lu^4pIBI7%(XlE2^94I@U+%+n z?~|Zsj4#cmx(E50N+E%0s2iW?U9|~NVl6g}fwA_7^RxX=fnGC~#vPAId~dZFOkgDF zL4P#ZQ(nNQ9>YQHXweVK=$;M9yNiiyro;AxRTEuxx#x!FQ;r3DF%sNYUZ7tcfmi*w zNPs@)nB8W^S~e`3E%N5VnrKnE=Opk^un$Lr`^yXTsU{An(ISDh3JF94UKqgxn015yA LNkvXXu0mjf)wm43 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 e5d90aa69f4856706c4fc36d844fcdc91132153a..163c8a428ce2a343fafdf5c9ea49c51d6164de74 100644 GIT binary patch delta 407 zcmV;I0cif61F-{;B!75GL_t(|USnXO7TCY7<3ETl@7eMnh8r3hn9$Y1z@9CgVD)gY zcPm5y-GGC~ZvIEdAa&a}cB2}wdkdNX0kCO(FRJ>Tn|r_lOHw#3mS*w40MQ^mvaQJM zwX6G44cNY^@Be~S9_?k>0w2#UaQhFUL3|WNNMOaviKqt5&wmh5Se7IB=FXPLf4}cG z{|C_^K1duSj~)h#mrX_(uqcB^Y*m5alj~~(e}go`Fo+Kl2g$<~L&4ldQxOKND-phW zd70PGKleNTqhpXbNFJmP*#$EfOhXv3p;Yks+CrZHTWh4g|9Lw1KMZfI5cvfXUti4s z5v~{tCeN9H8GmaVN_qePeX{|ML40I+WEb?!oP}w?mI~hg|2`doV-O!*4GeTnpMxp4 zy@vPy{~tHt7{mvOV@ruGljmU?u&W+u!2dUJ4C14!fr0vo3ozw&*Yo}R|L-kO^Sl3l ze?R}ftAYP7x*EJ-U%S*9kgYJhuT6RZx*Bu<0F;arVnEBqBLHcrCCBxK{SYuY%4N* z+QfQH3+JctYAnkU{djI&*?$lX;-jm9fmxHPPz{)$!J)7;M}PRu!?R2O|NsB)KZpkL zLE_lLVD6+cgaNCvxFuE5r*j3N_|Ied|a17$3tAT;-)50+2KpKAEZH8lf2JD(1gekYXN$>zj g6AXj+=xUGw07u723+XHYr~m)}07*qoM6N<$f~3#F?f?J) 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 f133db052017bb8320681021107ae99a456f382f..f891945ec5d4de639b475624c954a01982562d62 100644 GIT binary patch delta 841 zcmV-P1GfC&2jB*fB!4GKL_t(|UhR?JOH*+e#z)kRo?}0toBoLCPv|!4qPw7*u2ixa zW%PqEJW)i;wKDU^Qp+FP)Kav$xi*Vglo3Qk7g10|L6IQ|LJ~Rmv}g6M^`3KZmfiKh z2hRJv@AG}X=Nymczm(GBXF;Ss>W{$*%Sx{<&Xua$F&~Kb3x7(F`#_}Di~sflsj+h) z+Aru%+y^4HUaT*0cj_fdLC#CuYy^?oraSR-AX4u<8io^F|L_9wQ9p>(HciADLA1Y8 zijJHI(SAYy`U0cF0TAsMlpOPe6no*lYuEQymOmnVF7CN~YBzuQ#sv_mZAwPZgGe2$ z@|5*f8B@Jg<$w5rF-1@MZj0Rf>(?)WNNrOh8UW#QZqb_D(gYU|AKsMb=S33i>1-() z7;FO3enI0m10a^=S=Ccn9^t~l0~;~>xGoQ$>9NNdonK1f{!1X*w<%O@T<)tj(7%5J zK0Wke;q|FJe5S`9XLL?~di@LfBF!Mh8JqfQ3@fzPK!2om9X?D}6_yM1*y9Xmi?e#M zzCd^AGDvaeH-&2qZ=@#o=KCt}Ho3>PTwsqgoMlFz{)$c9eJ>WGK2Wkzx z8rx-Cs^JW0nPFC+=cJCFRuJub2E1k42KO7^a^U&UPGsKrN`kY@Fv~OKJhxvE>}~~- zx}X~ejDL?g@GQI?nRm_0f*EFchMebif!3>SAW|1Je9(YqGOz`i_g#*p{hMv`M4zkG z+}RGIea}dpd2i&93C-ek#1TFBlLz`-t)`A3i1uw7J#2z3&Wt)DeVr4z{enR73P|y+ zqoPMlknC*A5$Wrk$n66D_70HZSx3c=nIPG@`+tr|U+0#RudNeA`!>aon;_XQPaKiH z&Ml=gEnOhmw<%F?g5c{5N2D+F`jcy9?sW525UE|2JYj-h;hiJWmwCNVBXcJ&T?3KY zRjCFO1ekF|`Z~9i8k)L6v~Sa|3w(CuPcKk^p$A0!HvOv$l&q9xX1E}m-W4d&1-t73!BEmz+GvziXm TI?u_`00000NkvXXu0mjfycVa& delta 970 zcmV;*12z2M2H*#fB!8z#L_t(|UbT|jPgGYJ#d+`v&P0;N_w(o<;G^%pRqLg-@d8z` zh#)9dZsOpjMFr;E=Xk?WbU;7`FX$+0OiKIEG>tJnG_h$-(5TT`ZJIPqxh&5I?#cL_ zea;ybSMp0{_P5sl7JDcv3Q$v54~RxBrSjQ_s$J96gPM**x_<^f%jshmIHV`gp?4Kt zprLaFGFYr2QGpJ<6P~xc59{uvkITw05;iKa7NaFgPy?v}vhQ`o6Rw4H-Q5 zLpFsl$U_A*y&byooiCr0C?LKsuI`46{0xaN`9zJJaIf{7^qsH%q}m%EX8AVCg!q5LFZK9h`Ad_&6eN-`MTX!G|yX_rNx=1 zg)_VF;G3(iy&57NTHohn{E`G0u^`b=jud)E@K)~KE^8_{hx zL>KUuXtb!eW&vJ|j{*2=2Kr2AZ(c$Ze*WYf@}#^1-R3Tww04FUNLMQHvy}?^YCgfU z-?HA~Ki`7RXht6LQid<&kcSGSta_ZXb_5qlSC!QER(Z>-=VSbrlfdL7DKsMwc`3v1 zktwCsseh-f?dY-U_WLqBl$K1r z0?zc`-%H^>Vz@s1pOFd-*qbqESNIEXUHB#jV*2F`DPk`C{K+}wp#taaO&D@EL>IWU zD+Xff#fTI!7k<8wL!M!`T+KLNA>))s7r5LQ12Oe{NQ#*AT$rf9uv3N$&id%wmF5_T zseh-vQpB9+!bAlwI_q%BSsR_pw!}b8Jx)mxbDrZ*&wql;&Kis)zx3sNy4D&4G5P3- z6fx&HzBs=?)?KY$@s?jre&NgcG#ZbAm>f5xh&j)Ni3((spCg-G6`ji!cyL(C`xdyC zT#4(+7124dVB+`vQr@q?GIi8ljvMZ0(L*`!@`(ZpOz>QosK8Bk8E(0s7F6J#_$x!W s$8&S0(fIsD-hzjcrGkg#;kiQf8gi0Gu_3N%dH?_b07*qoM6N<$f>MR<{Qv*} 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 f1645896f35ccdd194064e51aee7717aae0afd03..96e8de5f1f23ffdaf79794fe723d7b838f84daa9 100644 GIT binary patch delta 274 zcmV+t0qy>r0<8j&B!BctL_t(|UagYb3IS0RhUIy@f=A#H+`4cflEh$=Qz5zF!ntwC zagdP^O(}1sC5w&UxES)+YPVPGTYb%Ji{&3Vt^D*$Jr*37f#=0!fYBF0zGUh;pULWh zDFaz}?^<}Ax(6%1!T3w><>%yt?E18-qNpMUB;!v=!ktS1r}@Gz0p z(0d6m+9+l)h`)V-w%Y^O zUxo&^-ZQ`qlr$LFJRSN}_Zc=245!!5!gezOMrr22z|2b&45!s7d~EdIaK YmZ3WAMD)m&01E&B07*qoM6N<$g6>;KaY26X z&i~jjvI}5(z+n5D8Wb166yp;^(X(Y$9fk|g!vNg{Fg;+fad|}pis^B!TQFRJE{39K z-LfVW7x>n!!*Bse4A})RJz%hUNehbUwk0buT!1cyqG!dTHWU}=WH0`Y4I{e%rUwj` zF6baR9iZr0G_RZFlnB!U2J`3klI#K$J#%LF|0f57^a22J&^7Ecxl?rj0000DYfiZT7^2p;6D0i%c>z8F=NOLaIfz>G0;%~f z#H0oEU1Uyd0nRZ5dp<<&D>sWF#H17GJN`(q=5%)FAaY;1;Rg_NZ-PsHxi_APT569^ z{qI0p}Q++fN{B%?n)1G$1A| zpzk7cVheDN;b5x(k^9QkbRD91)_1_en0aTxnzO%Igvfp6%G3_Tqy@}73)Y;yji(T` z<`Z1Ly@^4L%!!?Va}2w+5=5l5viqR$YLo^{^J;9K+iCMTp#YjWwrQS%S!Y*I08Zt7VK*&i7VVUSgDL Z?jPNV+D|5>{Wt&s002ovPDHLkV1m%VBGdo? delta 500 zcmVPHQq@ln| zbrh|np}=#+17iE8MbA@t48(Q;(eqdu2XUUmu}2W+IT*P|V1Mrp{@ok+cIuekzJhn7 zhViv3JS$}khl_BB3K$IJ;PPdDp7X(T_V?e~fAgq36emDz7tlQ_cLgtq?G=cg+x#Sm z?E<3bIyVI(t-!rrM>9w(&^;>k>@#RH0=h?~l=g#2SJxk^f|yodniD<6)I5mvVxPYR zVk%&o6FvE}0Eo1L-kCgzX$8)lv;y6uk~>`hkqY#9vmmAd&YV<0_o!T)1VN;$>-JL29XMMxDsdvsetZL zIXzkevHf!_dQJ|PL2MTgJ<0egi0!{*x<@4uUjwmSK=-H|9;}1dUV-R|$2LH07Z5$M q=qA31ZN6LO+tW}W8recCalD^`L%Ip#9pjGx0000@%Xj^Yjiy*;OLg(|L9^caC}RN z3sC;W(XFKh=yGsyXj3WJfQd_w|L>f4=zrt1J^w5FxBV|{-|#=9VfFvRn@a+LYMvh6 zTBHV2x4BVe)utNB|2x{$_J9r8zo8tb3t(XX`icagx_kfsGk-9yuaWur^W%g6TN|bS zf+hE?tAx9tW6r_|9$- z&;<<*3`{_E*bUgWx)$z&)>-@iSM+Uz+deN-++|_D#E->=5C$%GczP!onMpk|IgFqU<3ZX+WPEt35A{OR4lpfEsJ$FO)oC(c-ynJyQ6 Q00000Ne4wvM6N<$f`;-ODF6Tf delta 381 zcmV-@0fPRg1gis(B!6;AL_t(|+GAh{r35dU`PT|U?8p;1VT9odC73|wk4mM!o(&PU- z=Nwiht=Ksl6%TWx5slzZ}>#91OE|`}o?y?|P^#9@l zvHvi27zS)y(ExWr>#Y6%EBdy9ZJ(7Y>@q)3`p2V#HDCik>VSX+!+>?mnlM~24XAle zw&eHw2dn@8eId32Y{2qj@&BvJB>rOq1 zFktzjHj-VisaE>$?k??Su;L{PIx$=T0^l&nmHG|~1DHAtuy9^CQL%ti-Ml%y|B1y6 bgAM=y#!FRi$LF#Q00000NkvXXu0mjf8)3W$ 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 bb604a4a21618b650d806d077c59ecade1a65347..6e9c33518cfa45cd2341d17d3d84169bfbba22d8 100644 GIT binary patch delta 1273 zcmVrb0y7{=LRVvN&e;mmaML8A_rjVx_S|MEU>-=`iP|Ldu48zXTD58l&9d%0&GNPk1dC>+xF?wG<~bqkz*9cO-J_cm>z7P!>qu*eAr)d9xKE}}9Eq=j$ z&A#eujs=;kugh;Ezj_e4vOZ+q?1tn>d;XKm>evrh&ST0l>qO~X zU!CALO8~a{5p1r_p+y>q7D<4E-`J%Qfy_4!A#+pwhkq=~&b(nVg}+EW2Jnag)|bZN z_-7HVnQs!n*1S%20?1tLJc6nL~6$(9)O;GT%6$*v2CjSN#IX zs!;D^EPu;Nd4d5<4JjaVH61}-Wxw+$m{!ydQGp3jIn4-5Z`$$bt3o_aR)%|xR7Lop z=Bf|mkv>xO9ABfsWU&y0;V5k$>C{HC6KwqB* zGT#uO5;nXn)Z4-UpwGO3wTHD(#GP^i=;aAE%6}6Kpi_!L<{SHnhTpv6Wnlo&W}L^` z?=sl`)bId5^vE^_+KQmc3O=n7`2{k7zxM>tC?p_rH61}tc`tkX9f->_Yy+d=rC)ei z7yvZV^LRW~4*QI98-OC(7xl5eP{sM7QRD{(fIR`!b?G2;^=<$(yyUW{g#n-`Js7KO z_}%YWuHT9ZZL+*FT%dD@N9raxfEo+v5Sf?d5$mu zG>W%|y8_tfjIhsl!oJW4`{H+SEdKLP>>$oNTW_r|BXM?=0xra(GpE!Oi)O(12h6J&6zi=DC^u*}q?94b!rf-D(QI%Kafb8Di zOU3M)&j9-9L!?T03x5q4KoR@83&2C+05z4lAak|QPjPjO@5_pWpr7ee%-;nBFnK_L z>WXV1bG1+a(z1hI}6$VgI{uRjXeIWvHg!!net7Q4sN?AT?g#wh9<>Ps{xVYGP j8}6&JTLpL?-Vfkky7b0iioWEu00000NkvXXu0mjf-;Q>_ delta 894 zcmV-^1A+XE3X}(sBYy*1Nkl>;qgAuawR6$TmTTs;xwYWi?=d*x@#P@UUC;Iz z&lx6rrS$iZ#N>goijRIrk3OFj1aB7us=}*1k z7eBS%1QGszZ-2mxhTcWgby>~1@Qh6jB3^+%5<00cFDyXKgFiR+3rtx{K}Zr* z!aPxd$Ⓢi4qXzi3&WiXh7^4LC*qejkBnFFoTNbNq@HeZWPx$kY8=bb-e{w%1nm} z3-d$;T*J3OBuYS-Co13^ssItoc6Sv>rQLZlZ%=*-`U+AoP?*9A^F#$4W-W+Vns?^P zd`til0ubhj3XBfwKtztf&^^C<3u^CALfz;>VeJ@lD@XXPZ^@CJH0H>>OaPYhbZjmg zc>!UbsDFUnqz4hL05yMfE!oWkFr;D4-?bv}#l{N=^F#%#k1Ih$v+YfnrPB7SWZ%PU z$rvn4$M>Zc1U?V$5ik{{!mLWgP>CECwH!rCt5w71`vsQ6dyaUtK%++M7)gp3scsPo!4n>z`r1B0pp`a{0k)i>wk&VZ_ye? Up2b0R?*IS*07*qoM6N<$f<`c>#Q*>R From ab9e5b71c9e9224eb6b986f77ebfa5592a014a14 Mon Sep 17 00:00:00 2001 From: Tobias Melcher Date: Sat, 14 Dec 2024 22:38:04 +0100 Subject: [PATCH 178/232] fix UI on MacOS in refactoring wizard Fixes: 1173 --- .../ui/refactoring/PreviewWizardPage.java | 129 +++++++++++++++++- .../TextEditChangePreviewViewer.java | 8 ++ 2 files changed, 134 insertions(+), 3 deletions(-) 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 { From 6957472d7a198cf0ad3f4321ebd69873b9eba163 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=8A?= =?UTF-8?q?=D1=80=20=D0=9A=D1=83=D1=80=D1=82=D0=B0=D0=BA=D0=BE=D0=B2?= Date: Mon, 16 Dec 2024 11:13:41 +0200 Subject: [PATCH 179/232] Run verification build with Java 21 Prereq for https://github.com/eclipse-platform/eclipse.platform.releng.aggregator/issues/2654 --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 18c24bf47ea..7f1aa5c236a 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -9,7 +9,7 @@ pipeline { } tools { maven 'apache-maven-latest' - jdk 'temurin-jdk17-latest' + jdk 'temurin-jdk21-latest' } stages { stage('Build') { From d2f73679dd1a5c918b0e492f14799a4a0185b612 Mon Sep 17 00:00:00 2001 From: Alois Zoitl Date: Fri, 13 Dec 2024 10:19:35 +0100 Subject: [PATCH 180/232] Add eclipse.appName System Property for setting the Display's AppName The eclipse.appName sytem property allows users to specify on the command line the appName to be used for a specific Eclipse instance. The appName Display property is used by window managers and desktop environments for identification and grouping. This is helpful to distinguish Eclipse instances (e.g., JDT vs CDT) as per default these all are using the same identifier. https://github.com/eclipse-packaging/packages/issues/253 --- .../eclipseui/org/eclipse/ui/internal/Workbench.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/Workbench.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/Workbench.java index af01dacada6..72f00f17625 100644 --- a/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/Workbench.java +++ b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/Workbench.java @@ -747,9 +747,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); } From 2da050751c74e8e0019c040c53c73bc8918cb356 Mon Sep 17 00:00:00 2001 From: Tobias Melcher Date: Mon, 16 Dec 2024 16:11:09 +0100 Subject: [PATCH 181/232] don't show key binding in UI when command is not handled or not enabled --- .../org/eclipse/ui/internal/keys/show/ShowKeysUI.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/show/ShowKeysUI.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/keys/show/ShowKeysUI.java index afe4aa2b576..e39d1be9128 100644 --- a/bundles/org.eclipse.ui.workbench/eclipseui/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(); From 0344b2b062792a7336fe40edaefe768595e1d3f0 Mon Sep 17 00:00:00 2001 From: Matthias Becker Date: Mon, 28 Oct 2024 14:24:23 +0100 Subject: [PATCH 182/232] Create Color Definition for Reuse --- .../css/e4_default_gtk.css | 70 +++++++++---------- .../css/e4_default_mac.css | 52 +++++++------- .../css/e4_default_win.css | 56 +++++++-------- .../light/e4-light_ide_colorextensions.css | 36 ++++++---- .../org.eclipse.ui.themes/plugin.properties | 1 + 5 files changed, 112 insertions(+), 103 deletions(-) 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 659561134ac..9e658422970 100644 --- a/bundles/org.eclipse.ui.themes/css/e4_default_gtk.css +++ b/bundles/org.eclipse.ui.themes/css/e4_default_gtk.css @@ -19,73 +19,73 @@ @import url("platform:/plugin/org.eclipse.ui.themes/css/e4_basestyle.css"); ColorDefinition#org-eclipse-ui-workbench-ACTIVE_UNSELECTED_TABS_COLOR_START { - color: #F8F8F8; + 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: #F8F8F8; + 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: #E5E5E5; + color: #e5e5e5; } ColorDefinition#org-eclipse-ui-workbench-ACTIVE_TAB_INNER_KEYLINE_COLOR { - color: #f8f8f8; + color: #f8f8f8; /* same as '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND' cannot use it directly*/ } ColorDefinition#org-eclipse-ui-workbench-ACTIVE_TAB_OUTLINE_COLOR { - color: #E5E5E5; + color: #e5e5e5; } ColorDefinition#org-eclipse-ui-workbench-INACTIVE_UNSELECTED_TABS_COLOR_START { - color: #F8F8F8; + 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: #F8F8F8; + 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: #E5E5E5; + color: #e5e5e5; } ColorDefinition#org-eclipse-ui-workbench-INACTIVE_TAB_INNER_KEYLINE_COLOR { - color: #f8f8f8; + color: #f8f8f8; /* same as '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND' cannot use it directly*/ } ColorDefinition#org-eclipse-ui-workbench-INACTIVE_TAB_OUTLINE_COLOR { - color: #E5E5E5; + color: #e5e5e5; } ColorDefinition#org-eclipse-ui-workbench-INACTIVE_TAB_BG_START { - color: #F8F8F8; + color: #f8f8f8; /* same as '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND' cannot use it directly*/ } ColorDefinition#org-eclipse-ui-workbench-INACTIVE_TAB_BG_END { - color: #F8F8F8; + 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; + 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; + 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: #f8f8f8; + 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: #F8F8F8; + 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; + 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; + color: #f8f8f8; /* same as '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND' cannot use it directly*/ } ColorDefinition#org-eclipse-ui-workbench-ACTIVE_NOFOCUS_TAB_TEXT_COLOR { @@ -101,15 +101,15 @@ ColorDefinition#org-eclipse-ui-workbench-INACTIVE_TAB_TEXT_COLOR { } .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 { @@ -117,24 +117,24 @@ ColorDefinition#org-eclipse-ui-workbench-INACTIVE_TAB_TEXT_COLOR { } 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; + 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: #f8f8f8; + background-color: '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND'; } .MTrimBar#org-eclipse-ui-trim-status { - background-color: #f8f8f8; + background-color: '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND'; } .View Composite, @@ -157,15 +157,15 @@ CTabFolder Canvas { .View Canvas, .View FigureCanvas { - background-color: #f8f8f8; + background-color: '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND'; } .View TitleRegion{ - background-color:#f8f8f8; + background-color: '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND'; } .MPartStack.active .View TitleRegion{ - background-color:#f8f8f8; + background-color: '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND'; } .View Button[style~='SWT.CHECK']{ @@ -190,7 +190,7 @@ CTabFolder Canvas { } .MPartStack{ - swt-selected-tab-highlight: #A0A0A0; + swt-selected-tab-highlight: #a0a0a0; swt-selected-highlight-top: false; } @@ -208,7 +208,7 @@ CTabFolder Canvas { /*text color and background color of selected tab in editor */ #org-eclipse-ui-editorss CTabItem:selected{ color: #000000; - background-color: #FFFFFF; + background-color: #ffffff; } #org-eclipse-ui-editorss CTabFolder{ @@ -231,7 +231,7 @@ CTabFolder Canvas { } Composite.MPartSashContainer{ - background-color: #f8f8f8; + background-color: '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND'; } Composite.MArea{ 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 ab00a5b773c..542766200ef 100644 --- a/bundles/org.eclipse.ui.themes/css/e4_default_mac.css +++ b/bundles/org.eclipse.ui.themes/css/e4_default_mac.css @@ -19,59 +19,59 @@ @import url("platform:/plugin/org.eclipse.ui.themes/css/e4_basestyle.css"); ColorDefinition#org-eclipse-ui-workbench-ACTIVE_UNSELECTED_TABS_COLOR_START { - color: #F8F8F8; + 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: #F8F8F8; + 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: #F8F8F8; + 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: #F8F8F8; + 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: #EAEAEA; + color: #eaeaea; } ColorDefinition#org-eclipse-ui-workbench-ACTIVE_TAB_OUTLINE_COLOR { - color: #EAEAEA; + color: #eaeaea; } ColorDefinition#org-eclipse-ui-workbench-ACTIVE_TAB_BG_START { - color: #f8f8f8; + 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; + 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; + color: #eaeaea; } ColorDefinition#org-eclipse-ui-workbench-INACTIVE_TAB_OUTLINE_COLOR { - color: #EAEAEA; + color: #eaeaea; } ColorDefinition#org-eclipse-ui-workbench-INACTIVE_TAB_BG_START { - color: #F8F8F8; + color: #f8f8f8; /* same as '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND' cannot use it directly*/ } ColorDefinition#org-eclipse-ui-workbench-INACTIVE_TAB_BG_END { - color: #F8F8F8; + 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; + 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; + color: #f8f8f8; /* same as '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND' cannot use it directly*/ } ColorDefinition#org-eclipse-ui-workbench-ACTIVE_NOFOCUS_TAB_TEXT_COLOR { @@ -87,23 +87,23 @@ ColorDefinition#org-eclipse-ui-workbench-INACTIVE_TAB_TEXT_COLOR { } .MTrimmedWindow { - background-color: #f8f8f8; + background-color: '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND'; } .MTrimBar { - background-color: #f8f8f8; + background-color: '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND'; } .MTrimBar#org-eclipse-ui-main-toolbar { - background-color: #f8f8f8; + background-color: '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND'; } CTabFolder Canvas { - background-color: #f8f8f8; + background-color: '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND'; } .MTrimBar#org-eclipse-ui-trim-status { - background-color: #f8f8f8; + background-color: '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND'; } .View Composite, @@ -125,15 +125,15 @@ CTabFolder Canvas { .View Canvas, .View FigureCanvas { - background-color: #f8f8f8; + background-color: '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND'; } .View TitleRegion{ - background-color:#f8f8f8; + background-color: '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND'; } .MPartStack.active .View TitleRegion{ - background-color:#f8f8f8; + background-color: '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND'; } .View Button[style~='SWT.CHECK']{ @@ -150,7 +150,7 @@ CTabFolder Canvas { .View Composite Tree[swt-lines-visible=false]{ - background-color: #f8f8f8; + background-color: '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND'; } .View Composite PrependingAsteriskFilteredTree, @@ -175,13 +175,13 @@ CTabFolder Canvas { /* text color of unselected tabs in editor*/ #org-eclipse-ui-editorss CTabItem{ color: #000000; - background-color: #f8f8f8; + 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; + background-color: #ffffff; } #org-eclipse-ui-editorss CTabFolder{ @@ -204,7 +204,7 @@ CTabFolder Canvas { } Composite.MPartSashContainer{ - background-color: #f8f8f8; + background-color: '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND'; } Composite.MArea{ 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 5eaf9892fb7..34e2ac72b0e 100644 --- a/bundles/org.eclipse.ui.themes/css/e4_default_win.css +++ b/bundles/org.eclipse.ui.themes/css/e4_default_win.css @@ -20,59 +20,59 @@ @import url("platform:/plugin/org.eclipse.ui.themes/css/e4_basestyle.css"); ColorDefinition#org-eclipse-ui-workbench-ACTIVE_UNSELECTED_TABS_COLOR_START { - color: #F8F8F8; + 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: #F8F8F8; + 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: #E5E5E5; + color: #e5e5e5; } ColorDefinition#org-eclipse-ui-workbench-ACTIVE_TAB_OUTLINE_COLOR { - color: #E5E5E5; + color: #e5e5e5; } ColorDefinition#org-eclipse-ui-workbench-INACTIVE_UNSELECTED_TABS_COLOR_START { - color: #F8F8F8; + 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: #F8F8F8; + 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: #E5E5E5; + color: #e5e5e5; } ColorDefinition#org-eclipse-ui-workbench-INACTIVE_TAB_OUTLINE_COLOR { - color: #E5E5E5; + color: #e5e5e5; } ColorDefinition#org-eclipse-ui-workbench-INACTIVE_TAB_BG_START { - color: #F8F8F8; + color: #f8f8f8; /* same as '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND' cannot use it directly*/ } ColorDefinition#org-eclipse-ui-workbench-INACTIVE_TAB_BG_END { - color: #F8F8F8; + 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; + 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; + 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; + 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; + color: #f8f8f8; /* same as '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND' cannot use it directly*/ } ColorDefinition#org-eclipse-ui-workbench-ACTIVE_NOFOCUS_TAB_TEXT_COLOR { @@ -92,24 +92,24 @@ ColorDefinition#org-eclipse-ui-workbench-INACTIVE_TAB_TEXT_COLOR { } 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; + 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: #f8f8f8; + background-color: '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND'; } .MTrimBar#org-eclipse-ui-trim-status { - background-color: #f8f8f8; + background-color: '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND'; } .View Composite, @@ -132,15 +132,15 @@ CTabFolder Canvas { .View Canvas, .View FigureCanvas { - background-color: #f8f8f8; + background-color: '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND'; } .View TitleRegion{ - background-color:#f8f8f8; + background-color: '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND'; } .MPartStack.active .View TitleRegion{ - background-color:#f8f8f8; + background-color: '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND'; } .View Button[style~='SWT.CHECK']{ @@ -165,7 +165,7 @@ CTabFolder Canvas { } .MPartStack{ - swt-selected-tab-highlight: #8a8a8a; + swt-selected-tab-highlight: '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND'; swt-selected-highlight-top: false; } @@ -177,7 +177,7 @@ CTabFolder Canvas { /* text color and background color of unselected tabs in editor*/ #org-eclipse-ui-editorss CTabItem{ color: #000000; - background-color: #f8f8f8; + background-color: '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND'; } /*text color and background color of selected tab in editor */ @@ -206,7 +206,7 @@ CTabFolder Canvas { } Composite.MPartSashContainer{ - background-color: #f8f8f8; + background-color: '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND'; } Composite.MArea{ 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/plugin.properties b/bundles/org.eclipse.ui.themes/plugin.properties index d784c2fcdfe..47e27d7e4fe 100644 --- a/bundles/org.eclipse.ui.themes/plugin.properties +++ b/bundles/org.eclipse.ui.themes/plugin.properties @@ -24,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 From 6c8df42d31d7c54a567449c7758f8eb182d1116a Mon Sep 17 00:00:00 2001 From: jannisCode Date: Mon, 25 Nov 2024 10:01:38 +0100 Subject: [PATCH 183/232] Drop Down menu in Quick Search implemented Fixes https://github.com/eclipse-platform/eclipse.platform.ui/issues/2329 Co-authored-by: Federico Jeanne --- .../internal/ui/QuickSearchDialog.java | 39 ++++++++++++++++--- 1 file changed, 33 insertions(+), 6 deletions(-) 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); From 332587570301e5cf0a4eb25e200ea88019af9d36 Mon Sep 17 00:00:00 2001 From: Eclipse Platform Bot Date: Tue, 17 Dec 2024 09:19:07 +0000 Subject: [PATCH 184/232] Version bump(s) for 4.35 stream --- bundles/org.eclipse.text.quicksearch/META-INF/MANIFEST.MF | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bundles/org.eclipse.text.quicksearch/META-INF/MANIFEST.MF b/bundles/org.eclipse.text.quicksearch/META-INF/MANIFEST.MF index d656db96eda..dae450f163e 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.2.600.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)", From 894b99fa13228fc5fc9c35bdfc1c5888aefca104 Mon Sep 17 00:00:00 2001 From: Matthias Becker Date: Tue, 17 Dec 2024 16:54:10 +0100 Subject: [PATCH 185/232] Fix Placement of "Pin Editor" Icon Contributes to https://github.com/eclipse-platform/eclipse.platform.ui/issues/2582 --- .../icons/full/elcl16/pin_view.png | Bin 510 -> 617 bytes .../icons/full/elcl16/pin_view@2x.png | Bin 1154 -> 1388 bytes .../icons/full/etool16/pin_editor.png | Bin 691 -> 617 bytes .../icons/full/etool16/pin_editor@2x.png | Bin 1674 -> 1388 bytes 4 files changed, 0 insertions(+), 0 deletions(-) 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 e72ceafa940ffc3463b980a7650b9014fb5bd4be..d363e36e1fc047ae49f35f99aaa0630b73ebac2b 100644 GIT binary patch delta 593 zcmV-X0hk=&%i%8C>jXkZ#vB3Pp9pt;m-9;UN&+uy_V{q;QW-~B}| z3cBcp_v+90v*&r2l=NSZIWt9PG5U0tL!-$zjJbP1|Ml#7>Rt}v;)5pWZ)d?^I}B5M4j4(V z&4&aobxgtR@uR#u0Bg?-D&Nk+@qQi+gCVqhT!iV>bLcHck$*28#cmbJZ8?F|nmiTw z(**V>12EbzBY*X}0jF#RoFPPiCmSYrJzV{LD$w3s0B=Olg?7J1fr%I}sQ|4XdZ8=L zL>eLct;g{2QxB9)0q!KwcE4~J@Rj246#t-ja3X+|w1cRA=0aiXO*n_T5!(dTw**paxP zhZBg)(Mop!?j%rcEup=Iw)Y$Xiv;{6AVQC(XnXGlxRXGor38}%B=$~>&X1=4WqV^f fLV!CB_}BXzzlnxIbxt{w00000NkvXXu0mjfTFM~j delta 485 zcmVb&0`9> zN@#j7VR4sISTA-a7L`e&mI`?nYm?C?3f&$W&+Zpqn{_vB(9 zvvH-}!X?@K?th}g*zi{`u(}$_lMA^i=aAQV8%J*$x*JDdSK;49-FdOg`|vFWzPV+t z=jT)2Yv<|{8&2;Fl&nrL=&sQOOM9>?;Pp6E+^NJn;p5kDh#jJilGOb z0$0~P?e36h-xTnc$nS`!Z^x4?g`@1o6RJST>IBap-Pi7pi1r@>K702Or=w)g6{NEN b?1LQxo!gc;Sp#{%00000NkvXXu0mjfsc-r) 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 5d446feaf12369df680e8c57c311be1da236492c..913460924385e4bff3744f1a9094860423299b0a 100644 GIT binary patch delta 1370 zcmV-g1*Q6e3G51xBYy=mNklnKzyE>LLI;u05(V5kcO4YiA4flwn9DuQKmKn8&sN49}s zVBVf{hwpOdI)F{J{nL}Y31M#XJl}incQu;-=V?yZ+;JnqwST#qa4o!bTB9aH8>Z1s z_fbFg)W$19d&>8-IgVG4EQB_30Y*jn_ju{FbtE=T{p?d2?+9(d^aFtizx=wCO_xG2 zK03fLB0_7^guXme{rr<1L(nr+ec7|y=OR4ICBO-zzbAe<-{Gb6zo!YEIYxedanw14 zY)!{opP$D&JAW@>c}ynO#Af0By;tyId^R>G{)o_nKO-{v8nzwF#g3DCh&fY$uhI&! zKm7(0FBIW$=I=OqxfBO3<-l*}d*I#EX|eS9B3Xd5Ipa0>ZVkZ4sbAwC3&f_n3xubn zVzfROBXx5Kybv!X24ZBC7HiX%xJk@E7=$s~77hq}lz(Z&Cs}m}y;2Wdc0Kf0?_v8- z4KVy-LUfJ^d#*QPU*3Hr6f_~Juo;JLG~?*a7Mv(H<8+AyXa9JBPcy!USA;(aXc3Y$ z8ynBelPdSy9e`1h{&@4mKoiSOFOnL1Vge_MP4L+g3}4+$1V>NA+woJeB6*f15lRxX z;{zq&SbxJj%>8Boy^OEmdBf5tw*q}ih6I?R_rv^c&tXZ-1UHG`!@<(;lcL|nIKvy5 z5w{Mhg$14kmKiSoZGo6`*Px;L$45<(1e6j>5@*Akew!7y5xJ#xC@eRjsIm#AH7x@I z8ON4`bF0mXvUYe(c?WQZQrQVqQ)+C$T}oXSaDR`oI5`a7bjoR4Cdd*&yIz2g-XCLk zgrLT1fvp$l>UByijx2ED$Z~K76DX%t5d2R9SE=Cjl!k6Vzc&^mKA29Y)k;lF)=z?O zB%gi`eyA*V!TW%25)eFDApN@);CK?aE#Mt4IG?_j;6__NoD#iXy3_ER@gf!^ZF0Tg z6n~#Bfk-XML1#bQPU-1$N-T~nkalP#IBEfgtE(4qQN4gqo-!4;>l$I{q311TTsKz0 zV(*dQHadb9*D>xWw@tq!1#(!ucFemKQJ z0#2t>VsT`Fl%!SQC@X23`k$$5LdDZo(H9tgKw?nR8IV>P}vcTcEwcwPIfO_w4SFRs^-|jj+!+Gze z4K28Oy9U{}s*q0tl}!&|>Fk2Nw@=!;T0rn*frGJY!6|QdK2p7>y-RSr3vQ*Io7%fj zW-{X@-HMX>CR8vj%77#pHVE?Z5;8c=; zx_bW9O4Y0O&Tu}x`pPkUu+#IffZ)jjafS`xRFQ!CQ>)&)vU&j@?87E=&BSzyl> z8^EdVbh_=`Q}x4rYKI#Z5WGhOYDqx-sb#pj`k_9x!_ANacS*qGl^bU7k5j#vAqD>J c{O1CH0U%lz?wDu1NB{r;07*qoM6N<$f>oW7S^xk5 delta 1134 zcmV-!1d;pf3W5ocBYy-*NklLT#^?3o`~G~9NFJVtCzK~mx_>ELDeDYZGQ(jirdpzs z$Nqcp)K!bZl#F{x&IWJ1_GLt6t!K&i{%{p@LGp3zg3t@7)-IPQ80;zC3`NxzE{VnQ zcrruonWvW3g`)Ka@l4qJRoNyRE#ckaOIk%1l~frN92(hq*iVT zlAt$1e(n#=PJbw*Nnr}9Yrb0UdsX`i=4lu(c`pSC&@9eg?}<<{muCF_Cd~zGJM=vg zvnsIn_$7Rhe;FTYui}$$e!+2F0}3jdP*l@`(rbED)f;fN*^EZL6>Y}5*z?^{L@4Em zJiuW485swn70{cY62hCHi%DLH;~x{qsxAgyx~Pohcz-STMeI1e0=tVQB@)iZaW@fp zIEE9Vi@EIBMjv?9)Q^j;gQ(FD z-JBX*$(b$mjEaEbs$JX2zf+VDQu^>R&{R9;ypIP#C>kNT?6-K01 zoAFU?FMl$BvLL6{Rn>S8bzJafg2VV+WNE`Ms@6c;Ev^A>1Y9SBMriQWlxx_~Z{ z9yeeb1A0mN#)0?tr$F*(1fJL{LlyYBq5>raiJ+MdZzu4M0KA*P zjRClYhf5?_u{s*JtpoV#w<^5F!W-h(kSYUu;ke$Glb|cJoHwPahaMu49oF0CzsKD9W zw?Q*o?G=;~Y0Wa@)!oDCA-=ZXq^k^L@c?$rrp$ zg=KgYtk*Xsz|R#GIQi*r(9qru_vxL&M+kh>JGpdDuOA)OLEJQ2&|>)md27lH;}={j9>Pz1?~1eKEP zswhT-P%CJz7&s3XLoiE`+@!a5;SfcBoxzueQrn7Y0-^29%^*rz2{Y5Vd zy6A=X>d*JH=XsZu^k0uTGeu`H`gE2T>X72(B51CZ$!|AcE3e|i5M`c0IeT-p)1Wq z8X^0w$MEn|50p&-?j+E5zi=1umE!Ld|DbqqB7l^%gQ$MyLSgGoIET6s+XU9P1h|vH z1pFi*LXW0sd+!FglR%}V1d{|L_D+n>kEZ@*dt*96 efIAKN*ZUj4iH1UTPC1eQ0000_) z=)NC(Zyuh{=lOjP9E$qC=32NUSQ%vvl1G}UobX`rOwK4zsDHF7nqk$nmQ&MQB}3O4 zw6vjtrJI{s`gt2in@p8-->W)$Z+?8^sRySaHO3)G9x+W_58FkZQ$Af!Dr`rp#)NEL z4{p}>L)|a{wrvo#-6Jr*wxi4Hgw(*`pgIn_6_L2wo`8g^XzaKZ(Mer0e880!JMual zPA`-_64KaRDY94_R|L_UE6(dHr!DJvxIBRTR!vM`Nd4(nqBzIPV4K z1!Sxlxs`n=FuZ}rXhlWm5bAqI@$9Vw$BL41G%p0Pg`r4f!*JkEB4RWtH^d69wHNtM z0^rYx8~CyWIFl0(Ih*i@0WB^V~L5y2P{ zOb~dQz%Tm;aOm(6JT$i=x1$`xvre>BWeD|tfq|252}TKQC-69VeToQXRsm%xi~hl3 zxYq&CZ-~>V&lIXPK0!@cx+wTe;I9P!7O?s}5m?4tsJ9Hkx#))X&!*ssE{h0KHwF6A z41Rm>jephW2>fG>Y~fx-uWcOfCuXp`x+V&0?q3#kMLt0plf?)2o+9upfxnZxKfQpP zWKLMduN4pc!)auK#xE#U%XqtQ^+{jv1p+T_zyZAjr>ryN#?hwnKzyE>LLI;u05(V5kcO4YiA4flwn9DuQKmKn8&sN49}s zVBVf{hwpOdI)F{J{nL}Y31M#XJl}incQu;-=V?yZ+;JnqwST#qa4o!bTB9aH8>Z1s z_fbFg)W$19d&>8-IgVG4EQB_30Y*jn_ju{FbtE=T{p?d2?+9(d^aFtizx=wCO_xG2 zK03fLB0_7^guXme{rr<1L(nr+ec7|y=OR4ICBO-zzbAe<-{Gb6zo!YEIYxedanw14 zY)!{opP$D&JAW@>c}ynO#Af0By;tyId^R>G{)o_nKO-{v8nzwF#g3DCh&fY$uhI&! zKm7(0FBIW$=I=OqxfBO3<-l*}d*I#EX|eS9B3Xd5Ipa0>ZVkZ4sbAwC3&f_n3xubn zVzfROBXx5Kybv!X24ZBC7HiX%xJk@E7=$s~77hq}lz(Z&Cs}m}y;2Wdc0Kf0?_v8- z4KVy-LUfJ^d#*QPU*3Hr6f_~Juo;JLG~?*a7Mv(H<8+AyXa9JBPcy!USA;(aXc3Y$ z8ynBelPdSy9e`1h{&@4mKoiSOFOnL1Vge_MP4L+g3}4+$1V>NA+woJeB6*f15lRxX z;{zq&SbxJj%>8Boy^OEmdBf5tw*q}ih6I?R_rv^c&tXZ-1UHG`!@<(;lcL|nIKvy5 z5w{Mhg$14kmKiSoZGo6`*Px;L$45<(1e6j>5@*Akew!7y5xJ#xC@eRjsIm#AH7x@I z8ON4`bF0mXvUYe(c?WQZQrQVqQ)+C$T}oXSaDR`oI5`a7bjoR4Cdd*&yIz2g-XCLk zgrLT1fvp$l>UByijx2ED$Z~K76DX%t5d2R9SE=Cjl!k6Vzc&^mKA29Y)k;lF)=z?O zB%gi`eyA*V!TW%25)eFDApN@);CK?aE#Mt4IG?_j;6__NoD#iXy3_ER@gf!^ZF0Tg z6n~#Bfk-XML1#bQPU-1$N-T~nkalP#IBEfgtE(4qQN4gqo-!4;>l$I{q311TTsKz0 zV(*dQHadb9*D>xWw@tq!1#(!ucFemKQJ z0#2t>VsT`Fl%!SQC@X23`k$$5LdDZo(H9tgKw?nR8IV>P}vcTcEwcwPIfO_w4SFRs^-|jj+!+Gze z4K28Oy9U{}s*q0tl}!&|>Fk2Nw@=!;T0rn*frGJY!6|QdK2p7>y-RSr3vQ*Io7%fj zW-{X@-HMX>CR8vj%77#pHVE?Z5;8c=; zx_bW9O4Y0O&Tu}x`pPkUu+#IffZ)jjafS`xRFQ!CQ>)&)vU&j@?87E=&BSzyl> z8^EdVbh_=`Q}x4rYKI#Z5WGhOYDqx-sb#pj`k_9x!_ANacS*qGl^bU7k5j#vAqD>J c{O1CH0U%lz?wDu1NB{r;07*qoM6N<$f|b#cW&i*H delta 1658 zcmV-=28H?T3W^PoBYy@_NkldfW8#`JHoq6$t*X|9m-{E*97s>C@|ixqpY-ueO+HZ#XEhH-z57 zHO+zpt55Jkb5#WI``By!$oA-sSQlW5R~(E6^bQ%;@*Vlt%hvQ&5*Ya|{0rFsWyZ%Y z*$n#b>mHFri{OCqQvQ3#yiVC35qdHX-a^L7*PC(m_hH-veHmehi187hW&GJdCh*T- zMjR2su+d^BTz?YEL`hjjawUwBCWkXgDG^LcY7~=}9?fKA#4=e~aZH{}$^<9*#l3Xc zczCsF!=RvwU0^zn ziZkF8mIb#68HBNS;3q9Wa8fbYYYIfBD-m~Fg~Z%Sq<`kuAVaQ!th^DTv?RQIbUhXy zF~Y*bhS(w5G)ZFLE@Lp$0cf8jw+5j~x*{v~Wgv({U~K zCTzkI*MGHm?YPktiRHrek7z`hg1zB6UHg;jV3(r7k<@yexX}QYTa9qfd;qWPCWvyI z5p=f&OhGFy6t^Kt(GE#j2QJ_1L`p>$Zd7$6v!(|!O)pFX?ZIulzLNpAoLh-qk?VMg z*By;{3Coy`V*MLD7o3{d?9vTD1U}+gdBD;3LK6r#fgM+xFp_(M~VvG z*VXV(uR?HUHQ1b5T+GuTwx9tC@&`y!G$T#f3ZI+TdHDNBmf}k{eQfq!j%{KCUSj{1 zP0)8+hk2YFy{-~{Mk6vBp!W%aoh~nC2Y$L3$O{-dybY7z-k1evM@o~a4Ez=~t<@&XejR=BU?KRXuV0<|LPmr2)E%4}t& z;;krdYC%~KrbO8b+^1CZ0hN?$El^9*^nU{llm`Pq^B_>ut;IXeUt{4xLws^<$(Y0{ zmya-?o|%a(At8=bY;HP9KoV@uO3s--RiK=5kKif-t0`3kuA$TsxSrBT@Fq$N31~X| zU|_ZZ^K1>Uh=3o^E^zy>=#U{kbpIZ*oN#cQOF=pU(Lv^HOyCbF(h(Sg_dbF5&3^#z z=!1#r=b)d%mi;?n60n!Qid@@2^|pk%tr4YnB;Ytvx&l!F=4@oZRDl^=KQP|)-~f=sT$W5709cqM|Eol zy88#H1LG~Yn-vd^6Xc;I5a40W26$MZm;}aJKhxX?C&Rg=YwGETqM-%(HI0yKno!%; zflh7zB!Rr!@!&ZA9yXH&e1F}nSzk9R$Vp(fbLU#$Mexxp*FziE)ZK^L_AY{VqP6$|y?p!rrqotHJ4sSzW`Q}&6amK{ckvQ)6nAHvWfS@T0BE)(T}X6)egFUf07*qoM6N<$ Eg7+OG#Q*>R From 4bc50304d1b7adf0fbcc83b262443281a5597a41 Mon Sep 17 00:00:00 2001 From: Matthias Becker Date: Wed, 18 Dec 2024 08:59:33 +0100 Subject: [PATCH 186/232] Delete Unused Image --- .../org/eclipse/ui/internal/WorkbenchImages.java | 1 - .../org.eclipse.ui/icons/full/elcl16/pin_view.png | Bin 443 -> 0 bytes .../icons/full/elcl16/pin_view@2x.png | Bin 858 -> 0 bytes 3 files changed, 1 deletion(-) delete mode 100644 bundles/org.eclipse.ui/icons/full/elcl16/pin_view.png delete mode 100644 bundles/org.eclipse.ui/icons/full/elcl16/pin_view@2x.png diff --git a/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/WorkbenchImages.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/WorkbenchImages.java index 164a3cadbe5..8188390a184 100644 --- a/bundles/org.eclipse.ui.workbench/eclipseui/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/icons/full/elcl16/pin_view.png b/bundles/org.eclipse.ui/icons/full/elcl16/pin_view.png deleted file mode 100644 index de61d0d7ae5e65da0bdd53f2047fc698b7387252..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 443 zcmV;s0Yv_ZP)M# z{TI19;J@n%w?B+i?Y^*1x4#coo@)OmVS~s2kTqWanWsAZ zVVL2ph2p&p>w5m*d;J9kZ(QF4Ho(v`uSqJ};Wyh9`#%aZ{r)pewg15|-+=?gfc@J# z{(t%N9|eQN6f6?WeG}_H*$0;{20Gb*dAh?ArfK%A7y*pS05ylq0Dafobb>LoV^c4N z0U$A=qj=-GNf-uz#E3Rv<;v+827ttfHek`xIT!|j#E3Rv)`ErqUw`|9fX_($dTb2~t7@V+41*ZVsJnPEBK$$@&2jXupukAQ0+>{V+wn_v$8d z)BKI5HZ4%-P45!=2YTn5Bzje3>hkG4cb+*Vc9|W0(Sa|6yYD^U&pFR?&%GS?-;V}i zHz(-|O|GwOXLuRcu3Oq8 z<*uG^6)N>7D_6o1qG%{^jbR|^?lwW-+Ic$(Zp4*GO9uZrPbpN46hl^To)Q>KcA{$3 z3iZC?KtIrtcW)RX(WXvsAo{+k+ky9-SHf>k6~Zl|46iBpKbAxzg#eiDk3b{}S$QU% zbgyKD{c<2ARyKfrcs;yi*a9&!Z9e@c^1DbhADqYbY!*=V=`UeLeZdPZWn>RzuoC-J_pP5e(yNX~oBOJN>^ z(mY0Rj9I}>ny-kI0eW z43Ar0fuW*)@pw+f$CxLUB=VSbhn@+f{&UJ}nKi(%vyP_B{F>!7UG++e*6|@#a6|_u zl!a7f+uQl;T&s|*dXjDhAThh@SF+Zza5U#i-G=b3j9K4vK&b&xpVEBk Date: Wed, 18 Dec 2024 08:17:24 +0000 Subject: [PATCH 187/232] Version bump(s) for 4.35 stream --- bundles/org.eclipse.search/META-INF/MANIFEST.MF | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bundles/org.eclipse.search/META-INF/MANIFEST.MF b/bundles/org.eclipse.search/META-INF/MANIFEST.MF index 54eb0583c69..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 From b019337845327ca873b499274ca1304aa79d53f9 Mon Sep 17 00:00:00 2001 From: DaveCarpeneto Date: Tue, 17 Dec 2024 16:09:57 -0500 Subject: [PATCH 188/232] Refresh option not available for some resources that are not closed projects eclipse-platform#2538 Change made since the fix to eclipse-platform#1438 unintentionally removed the "refresh" contextual menu for resources that are not projects. With this change the "refresh" contextual menu is shown if ANY navigator selection is either (A) an open project, or (B) a non-project resource. Put another way: the 'refresh' item is NOT shown if ALL selections are closed projects. Fixes eclipse-platform#2538 --- .../actions/ResourceMgmtActionProvider.java | 50 ++-- .../META-INF/MANIFEST.MF | 2 +- .../tests/navigator/NavigatorTestSuite.java | 3 +- .../ResourceMgmtActionProviderTests.java | 221 ++++++++++++++++++ 4 files changed, 246 insertions(+), 30 deletions(-) create mode 100644 tests/org.eclipse.ui.tests.navigator/src/org/eclipse/ui/tests/navigator/resources/ResourceMgmtActionProviderTests.java 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/tests/org.eclipse.ui.tests.navigator/META-INF/MANIFEST.MF b/tests/org.eclipse.ui.tests.navigator/META-INF/MANIFEST.MF index 30b05fff0f3..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.600.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/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/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; + } + +} From 61cca8fd9d0e92f498ef35ee9408fe669520642d Mon Sep 17 00:00:00 2001 From: Tobias Melcher Date: Fri, 18 Oct 2024 16:27:12 +0200 Subject: [PATCH 189/232] Reset in colors preference page now respects theme-specific defaults --- .../swt/helpers/EclipsePreferencesHelper.java | 46 +++++++++++++++ .../preference/EclipsePreferencesHandler.java | 1 + .../workbench/swt/PartRenderingEngine.java | 1 + .../themes/ColorsAndFontsPreferencePage.java | 57 +++++++++++++++++-- 4 files changed, 99 insertions(+), 6 deletions(-) diff --git a/bundles/org.eclipse.e4.ui.css.swt/src/org/eclipse/e4/ui/css/swt/helpers/EclipsePreferencesHelper.java b/bundles/org.eclipse.e4.ui.css.swt/src/org/eclipse/e4/ui/css/swt/helpers/EclipsePreferencesHelper.java index d99f2db82b3..8317a010605 100644 --- a/bundles/org.eclipse.e4.ui.css.swt/src/org/eclipse/e4/ui/css/swt/helpers/EclipsePreferencesHelper.java +++ b/bundles/org.eclipse.e4.ui.css.swt/src/org/eclipse/e4/ui/css/swt/helpers/EclipsePreferencesHelper.java @@ -16,9 +16,11 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; +import org.eclipse.core.runtime.preferences.DefaultScope; import org.eclipse.core.runtime.preferences.IEclipsePreferences; import org.eclipse.core.runtime.preferences.IEclipsePreferences.IPreferenceChangeListener; import org.eclipse.core.runtime.preferences.IEclipsePreferences.PreferenceChangeEvent; +import org.osgi.service.prefs.BackingStoreException; import org.osgi.service.prefs.Preferences; public class EclipsePreferencesHelper { @@ -34,6 +36,8 @@ public class EclipsePreferencesHelper { private static String currentThemeId; + private static final String PROPS_DEFAULT_VALUE_BEFORE_OVERIDDEN_FROM_CSS = "defaultValueBeforeOverriddenFromCSS"; + public static void appendOverriddenPropertyName( IEclipsePreferences preferences, String name) { String value = preferences.get(PROPS_OVERRIDDEN_BY_CSS_PROP, SEPARATOR); @@ -134,4 +138,46 @@ protected void removeOverriddenByCssProperty(PreferenceChangeEvent event) { } } } + + public static void overrideDefault(IEclipsePreferences preferences, String name, String value) { + String prefName = preferences.name(); + if (prefName == null) { + return; + } + IEclipsePreferences defaultPrefs = DefaultScope.INSTANCE.getNode(prefName); + if (defaultPrefs == null) { + return; + } + String existing = defaultPrefs.get(name, null); + if (existing != null && value != null && existing.equals(value) == false) { + defaultPrefs.put(name, value); + preferences.put(name + SEPARATOR + PROPS_DEFAULT_VALUE_BEFORE_OVERIDDEN_FROM_CSS, existing); + } + } + + public static void resetOverriddenDefaults(IEclipsePreferences preferences) { + try { + String[] keys = preferences.keys(); + if (keys == null) { + return; + } + for (String key : keys) { + if (key != null && key.endsWith(SEPARATOR + PROPS_DEFAULT_VALUE_BEFORE_OVERIDDEN_FROM_CSS)) { + String overriddenDefault = preferences.get(key, null); + String originKey = key.substring(0, + key.lastIndexOf(SEPARATOR + PROPS_DEFAULT_VALUE_BEFORE_OVERIDDEN_FROM_CSS)); + IEclipsePreferences defaultPrefs = DefaultScope.INSTANCE.getNode(preferences.name()); + if (defaultPrefs != null) { + String currentDefault = defaultPrefs.get(originKey, null); + if (overriddenDefault != null && currentDefault != null + && !currentDefault.equals(overriddenDefault)) { + defaultPrefs.put(originKey, overriddenDefault); + } + } + preferences.remove(key); + } + } + } catch (BackingStoreException e) { // silently ignored + } + } } 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.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.ui.workbench/eclipseui/org/eclipse/ui/internal/themes/ColorsAndFontsPreferencePage.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/themes/ColorsAndFontsPreferencePage.java index 347449f2ac0..a6f6680a8d9 100644 --- a/bundles/org.eclipse.ui.workbench/eclipseui/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); From 24c36fe6d566b1337e307d704c89b286c683ef29 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=8A?= =?UTF-8?q?=D1=80=20=D0=9A=D1=83=D1=80=D1=82=D0=B0=D0=BA=D0=BE=D0=B2?= Date: Fri, 20 Dec 2024 12:33:42 +0200 Subject: [PATCH 190/232] Add CloseTestWindowsRule To remaining tests identified. Fixes https://github.com/eclipse-platform/eclipse.platform.ui/issues/2615 --- .../org/eclipse/ui/tests/activities/MenusTest.java | 5 +++++ .../org/eclipse/ui/tests/contexts/PartContextTest.java | 5 +++++ .../org/eclipse/ui/tests/stress/OpenCloseTest.java | 4 ++++ 3 files changed, 14 insertions(+) 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 9fa50cf241f..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 @@ -29,10 +29,12 @@ 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; public class MenusTest { @@ -42,6 +44,9 @@ public class MenusTest { private IMenuService service; private Set enabledActivities; + @Rule + public CloseTestWindowsRule closeTestWindows = new CloseTestWindowsRule(); + /** * @since 3.3 */ 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 f95e47e9621..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 @@ -31,8 +31,10 @@ 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; /** @@ -48,6 +50,9 @@ public class PartContextTest { public static final String WINDOW_CONTEXT_ID = "org.eclipse.ui.tests.contexts.WorkbenchWindow"; + @Rule + public CloseTestWindowsRule closeTestWindows = new CloseTestWindowsRule(); + @Test public void testBasicContextActivation() throws Exception { IContextService globalService = 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 f9c7cd40acb..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,8 +40,10 @@ 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; /** @@ -56,6 +58,8 @@ public class OpenCloseTest { private IWorkbench workbench; private IWorkbenchPage page; + @Rule + public CloseTestWindowsRule closeTestWindows = new CloseTestWindowsRule(); @Before public void setup() { From ca298d672596d295922dc4c24ed4667524ddb2bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=8A?= =?UTF-8?q?=D1=80=20=D0=9A=D1=83=D1=80=D1=82=D0=B0=D0=BA=D0=BE=D0=B2?= Date: Fri, 20 Dec 2024 13:45:24 +0200 Subject: [PATCH 191/232] Fix javadoc errors/warnings As pointed at https://ci.eclipse.org/platform/job/eclipse.platform.ui/job/master/810/javadoc-warnings/ --- .../org/eclipse/jface/internal/text/html/HTMLPrinter.java | 2 +- .../editors/text/templates/ContributionTemplateStore.java | 4 +--- .../eclipse/ui/internal/handlers/ContextMenuHandler.java | 8 ++------ 3 files changed, 4 insertions(+), 10 deletions(-) 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.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.workbench/eclipseui/org/eclipse/ui/internal/handlers/ContextMenuHandler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/ContextMenuHandler.java index 455bd9aa313..e4a0c1745c4 100644 --- a/bundles/org.eclipse.ui.workbench/eclipseui/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(); From b581977125c72e4e8b63d51cc017c83b09a04c39 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christoph=20L=C3=A4ubrich?= Date: Sat, 29 Jun 2024 05:29:26 +0200 Subject: [PATCH 192/232] Ignore additional parameter Currently if one passes more parameters as the command accepts (e.g. a parameter was removed from the command), this suddenly leads to commands no longer being found as null is returned. Instead now ignore additional parameters and simply continue the loop over the map. --- .../src/org/eclipse/core/commands/ParameterizedCommand.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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) { From e7ae380f829519b440d40992b1571f8af4f4d8b7 Mon Sep 17 00:00:00 2001 From: Eclipse Platform Bot Date: Sat, 28 Dec 2024 15:23:21 +0000 Subject: [PATCH 193/232] Version bump(s) for 4.35 stream --- bundles/org.eclipse.core.commands/META-INF/MANIFEST.MF | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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, From a595b86f8f2263de0ba813c97b98f7b460f2ab57 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christoph=20L=C3=A4ubrich?= Date: Mon, 20 May 2024 19:30:57 +0200 Subject: [PATCH 194/232] Handle the case when application has no focus in ApplicationPartService Currently when the application has no focus there is also no active window child and in this case several actions still fail even though a part is available for perform actions. This now handles the case of an application without focus with an empty optional to allow fall back to the part context. If that context has still no suitable part service implementation as a last resort the containing window context is used. --- .../workbench/ApplicationPartServiceImpl.java | 21 +++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) 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(); }); From 3c276e858d06bc4e706e424c2401a2c42f557eb9 Mon Sep 17 00:00:00 2001 From: Eclipse Platform Bot Date: Sat, 28 Dec 2024 15:24:16 +0000 Subject: [PATCH 195/232] Version bump(s) for 4.35 stream --- bundles/org.eclipse.e4.ui.workbench/META-INF/MANIFEST.MF | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 b441a8c5d3a..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.16.0.qualifier +Bundle-Version: 1.16.100.qualifier Bundle-Name: %pluginName Bundle-Vendor: %providerName Bundle-Localization: plugin From 7f209541c9ef9642a8b4b2373666d34dc0cffb7e Mon Sep 17 00:00:00 2001 From: Madhumitha M V Date: Tue, 24 Dec 2024 15:05:52 +0530 Subject: [PATCH 196/232] [Light Theme]Fix for regression caused by Redefine color change PR 2455 leads to regression in the behavior of highlight of selected tabs in inactive stack. This caused only in windows and Linux and has been fixed with this change --- bundles/org.eclipse.ui.themes/css/e4_default_gtk.css | 2 +- bundles/org.eclipse.ui.themes/css/e4_default_win.css | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) 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 9e658422970..195c9a78739 100644 --- a/bundles/org.eclipse.ui.themes/css/e4_default_gtk.css +++ b/bundles/org.eclipse.ui.themes/css/e4_default_gtk.css @@ -190,7 +190,7 @@ CTabFolder Canvas { } .MPartStack{ - swt-selected-tab-highlight: #a0a0a0; + swt-selected-tab-highlight: #8a8a8a; swt-selected-highlight-top: false; } 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 34e2ac72b0e..5b29c031379 100644 --- a/bundles/org.eclipse.ui.themes/css/e4_default_win.css +++ b/bundles/org.eclipse.ui.themes/css/e4_default_win.css @@ -165,7 +165,7 @@ CTabFolder Canvas { } .MPartStack{ - swt-selected-tab-highlight: '#org-eclipse-ui-workbench-SECONDARY_BACKGROUND'; + swt-selected-tab-highlight: #8a8a8a; swt-selected-highlight-top: false; } From e24ba9d433d04ab98b306f943bb602eaa2a451fd Mon Sep 17 00:00:00 2001 From: Matthias Becker Date: Mon, 30 Dec 2024 14:57:25 +0100 Subject: [PATCH 197/232] Show "Arrow Symbols" instead up "UP" "DOWN" etc. On macOS we use arrow symbols (see xhttps://www.fileformat.info/info/unicode/char/2193/index.htm) when formatting key bindings (e.g. in tooltips or menu entries). This is much more compact then writing "UP", "DOWN", etc. and looks a lot nicer. Let's also use this on Windows and Linux. --- .../keys/formatting/AbstractKeyFormatter.properties | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) 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 From 3b4a7ab410044cdff770f463844eda21c69bd89b Mon Sep 17 00:00:00 2001 From: Tobias Melcher Date: Mon, 16 Dec 2024 18:00:58 +0100 Subject: [PATCH 198/232] fix calculation of multiline heigth on windows with consolas size 9 --- .../CodeMiningLineHeaderAnnotation.java | 55 ++++++++++++++++--- .../InlinedAnnotationDrawingStrategy.java | 8 ++- .../EmptyLineCodeMiningProvider.java | 2 +- 3 files changed, 54 insertions(+), 11 deletions(-) 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/text/source/inlined/InlinedAnnotationDrawingStrategy.java b/bundles/org.eclipse.jface.text/src/org/eclipse/jface/text/source/inlined/InlinedAnnotationDrawingStrategy.java index 39641a3c02c..ba3cbf1c7db 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 @@ -25,6 +25,7 @@ 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.source.Annotation; @@ -161,7 +162,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()) { 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"; } }); } From e2ac13e1e34ab3db184d63574e8e2a86ee9f76b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Kubitz?= Date: Thu, 2 Jan 2025 14:16:00 +0100 Subject: [PATCH 199/232] fix GlobalTemplateVariablesDateTest #2649 using "year" instead of "week year" https://github.com/eclipse-platform/eclipse.platform.ui/issues/2649 --- .../GlobalTemplateVariablesDateTest.java | 31 ++++++++++++------- 1 file changed, 20 insertions(+), 11 deletions(-) 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); } From d8afbe0bb91ca2f6c97c10d88293dd500883a27b Mon Sep 17 00:00:00 2001 From: Eclipse Platform Bot Date: Thu, 2 Jan 2025 13:21:05 +0000 Subject: [PATCH 200/232] Version bump(s) for 4.35 stream --- tests/org.eclipse.text.tests/META-INF/MANIFEST.MF | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/org.eclipse.text.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.text.tests/META-INF/MANIFEST.MF index 9ffe2164ddb..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.700.qualifier +Bundle-Version: 3.14.800.qualifier Bundle-Vendor: %Plugin.providerName Bundle-Localization: plugin Export-Package: From 9ee216c34977234fac75263a85440dbe56bed19e Mon Sep 17 00:00:00 2001 From: Enda O Brien Date: Thu, 2 Jan 2025 17:14:55 +0000 Subject: [PATCH 201/232] 'Restore Defaults' uses different value when USE_MARKER_LIMITS pref is false. #2325 --- .../ui/internal/views/markers/FiltersConfigurationDialog.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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(); From 2de39578f20143acf5da297ab8db8bbe105fdc30 Mon Sep 17 00:00:00 2001 From: jannisCode Date: Wed, 16 Oct 2024 15:27:21 +0200 Subject: [PATCH 202/232] Add circular navigation between open tabs When navigating the open tabs with Ctrl+Pg Up/Down and only if there is no chevron (i.e. more tabs opened than one can show) then the tab next to the last one is the first one and the tab previous to the first one is the last one. --- .../handlers/TraversePageHandler.java | 65 ++++++++++++++++--- 1 file changed, 56 insertions(+), 9 deletions(-) diff --git a/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/TraversePageHandler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/handlers/TraversePageHandler.java index ea7b11b14b1..c2c1a5c9975 100644 --- a/bundles/org.eclipse.ui.workbench/eclipseui/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 From 8fd556c8ebb6d60c1a24d58bc6cd6bd494d6f9ef Mon Sep 17 00:00:00 2001 From: fedejeanne Date: Fri, 3 Jan 2025 10:15:07 +0100 Subject: [PATCH 203/232] Complete invalid patterns when validating regex during search #2564 If the error is due to an unwritten character at the end of the regex (e.g. an unescaped trailing backslash) then add a whitespace to avoid IOOBE. Fixes https://github.com/eclipse-platform/eclipse.platform.ui/issues/2654 --- .../src/org/eclipse/ui/internal/SearchDecoration.java | 6 ++++++ 1 file changed, 6 insertions(+) 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 index da709d7f8c4..eb34621d71f 100644 --- a/bundles/org.eclipse.ui/src/org/eclipse/ui/internal/SearchDecoration.java +++ b/bundles/org.eclipse.ui/src/org/eclipse/ui/internal/SearchDecoration.java @@ -83,6 +83,12 @@ private static String buildValidationErrorString(PatternSyntaxException e, Contr 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); From 6db4ad4a1ce7d1bacb4a4b12ab23597e6f2a18b0 Mon Sep 17 00:00:00 2001 From: Madhumitha M V Date: Thu, 19 Dec 2024 23:07:21 +0530 Subject: [PATCH 204/232] [Dark Theme] Fix for highlight issue in sub-tabs Selected sub-tabs in editor and views were missing blue highlight with the dark theme changes. This has been fixed with this change. --- .../css/dark/e4-dark_tabstyle.css | 3 +- .../css/e4-dark_linux.css | 28 +++++++++-------- .../org.eclipse.ui.themes/css/e4-dark_mac.css | 29 ++++++++++-------- .../org.eclipse.ui.themes/css/e4-dark_win.css | 30 +++++++++++-------- 4 files changed, 50 insertions(+), 40 deletions(-) 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 b3deba083ed..346a75f553b 100644 --- a/bundles/org.eclipse.ui.themes/css/e4-dark_linux.css +++ b/bundles/org.eclipse.ui.themes/css/e4-dark_linux.css @@ -80,6 +80,21 @@ ImageBasedFrame, 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'; @@ -87,7 +102,6 @@ ImageBasedFrame, #org-eclipse-ui-editorss CTabFolder{ swt-selected-tab-fill : '#1E1F22'; -swt-selected-tab-highlight: '#a6a6a6'; swt-selected-highlight-top: true; swt-draw-custom-tab-content-background: true; swt-unselected-hot-tab-color-background:#161616; @@ -98,19 +112,9 @@ swt-selected-tab-highlight: '#a6a6a6'; swt-selected-highlight-top: true; } -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-selected-tab-fill: #1E1F22; - swt-unselected-tabs-color: #48484c; - swt-unselected-hot-tab-color-background: #2f2f2f; - swt-selected-tab-highlight: #2b79d7; - swt-selected-highlight-top: false; -} - .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 8154d365509..4e4cc742098 100644 --- a/bundles/org.eclipse.ui.themes/css/e4-dark_mac.css +++ b/bundles/org.eclipse.ui.themes/css/e4-dark_mac.css @@ -66,6 +66,21 @@ Button { 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'; @@ -73,7 +88,6 @@ Button { #org-eclipse-ui-editorss CTabFolder{ swt-selected-tab-fill : '#1E1F22'; - swt-selected-tab-highlight: '#a6a6a6'; swt-selected-highlight-top: true; swt-draw-custom-tab-content-background: true; swt-unselected-hot-tab-color-background:#161616; @@ -84,20 +98,9 @@ Button { swt-selected-highlight-top: true; } -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-selected-tab-fill: #1E1F22; - swt-unselected-tabs-color: #48484c; - swt-unselected-hot-tab-color-background: #2f2f2f; - swt-selected-tab-highlight: #2b79d7; - swt-selected-highlight-top: false; -} - .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 00164a24483..301c680ef8f 100644 --- a/bundles/org.eclipse.ui.themes/css/e4-dark_win.css +++ b/bundles/org.eclipse.ui.themes/css/e4-dark_win.css @@ -148,6 +148,21 @@ ImageBasedFrame, 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'; @@ -155,26 +170,15 @@ ImageBasedFrame, #org-eclipse-ui-editorss CTabFolder{ swt-selected-tab-fill : '#1E1F22'; - swt-selected-tab-highlight: '#a6a6a6'; swt-selected-highlight-top: true; swt-draw-custom-tab-content-background: true; - swt-unselected-hot-tab-color-background:#161616; + swt-unselected-hot-tab-color-background:#161616; } #org-eclipse-ui-editorss CTabFolder.active { swt-selected-tab-highlight: '#2b79d7'; swt-selected-highlight-top: true; -} - -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-selected-tab-fill: #1E1F22; - swt-unselected-tabs-color: #48484c; - swt-unselected-hot-tab-color-background: #2f2f2f; - swt-selected-tab-highlight: #2b79d7; - swt-selected-highlight-top: false; -} +} .Editor Form Composite, .Editor Form Composite Tree, From 24ec34b5e4e8777569d3a0d77d90a46d347b025b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christoph=20L=C3=A4ubrich?= Date: Sun, 5 Jan 2025 09:48:46 +0100 Subject: [PATCH 205/232] Update to DS 1.4 --- .../.settings/org.eclipse.pde.ds.annotations.prefs | 2 +- .../.settings/org.eclipse.pde.ds.annotations.prefs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) 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.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 From 56df767f60972baf1912fceba97d38f2b50c559c Mon Sep 17 00:00:00 2001 From: Eclipse Platform Bot Date: Sun, 5 Jan 2025 08:53:18 +0000 Subject: [PATCH 206/232] Version bump(s) for 4.35 stream --- bundles/org.eclipse.e4.ui.css.swt.theme/META-INF/MANIFEST.MF | 2 +- bundles/org.eclipse.e4.ui.di/META-INF/MANIFEST.MF | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) 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.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)", From 65a53d40776a3d0328015d42f7c6769118d23072 Mon Sep 17 00:00:00 2001 From: Sebastian Thomschke Date: Fri, 8 Nov 2024 17:10:47 +0100 Subject: [PATCH 207/232] Fix NullPointerException in LogView This commit addresses an occasionally occurring NullPointerException in the LogView class: ``` LogListener.logged threw a non-fatal unchecked exception as follows: java.lang.NullPointerException: Cannot invoke "org.eclipse.jface.action.Action.isChecked()" because "this.fActivateViewAction" is null at org.eclipse.ui.internal.views.log.LogView.asyncRefreshAndActivate(LogView.java:1253) at org.eclipse.ui.internal.views.log.LogView.pushEntry(LogView.java:1212) at org.eclipse.ui.internal.views.log.LogView.logged(LogView.java:1143) at org.eclipse.osgi.internal.log.ExtendedLogReaderServiceFactory.safeLogged(ExtendedLogReaderServiceFactory.java:108) at org.eclipse.osgi.internal.log.ExtendedLogReaderServiceFactory$LogTask.run(ExtendedLogReaderServiceFactory.java:56) at org.eclipse.osgi.internal.log.OrderedExecutor$OrderedTaskQueue$OrderedTask.run(ExtendedLogReaderServiceFactory.java:458) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) at java.base/java.lang.Thread.run(Thread.java:1583) ``` --- .../src/org/eclipse/ui/internal/views/log/LogView.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/bundles/org.eclipse.ui.views.log/src/org/eclipse/ui/internal/views/log/LogView.java b/bundles/org.eclipse.ui.views.log/src/org/eclipse/ui/internal/views/log/LogView.java index 4debe5f649a..91ca2536f3f 100644 --- a/bundles/org.eclipse.ui.views.log/src/org/eclipse/ui/internal/views/log/LogView.java +++ b/bundles/org.eclipse.ui.views.log/src/org/eclipse/ui/internal/views/log/LogView.java @@ -1250,8 +1250,9 @@ private Throttler createMutualActivate(Display display) { private void asyncRefreshAndActivate(int severity) { asyncRefresh(); - if ((fActivateViewAction.isChecked()) || (severity >= 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(); } } From 5f52c091a1a357b35976402f23d09a3b33d84ccc Mon Sep 17 00:00:00 2001 From: Eclipse Platform Bot Date: Wed, 4 Dec 2024 13:30:59 +0000 Subject: [PATCH 208/232] Version bump(s) for 4.35 stream --- bundles/org.eclipse.ui.views.log/META-INF/MANIFEST.MF | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bundles/org.eclipse.ui.views.log/META-INF/MANIFEST.MF b/bundles/org.eclipse.ui.views.log/META-INF/MANIFEST.MF index 3ad0cdd6f52..5b07fee8cea 100644 --- a/bundles/org.eclipse.ui.views.log/META-INF/MANIFEST.MF +++ b/bundles/org.eclipse.ui.views.log/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %name Bundle-SymbolicName: org.eclipse.ui.views.log;singleton:=true -Bundle-Version: 1.4.600.qualifier +Bundle-Version: 1.4.700.qualifier Bundle-Activator: org.eclipse.ui.internal.views.log.Activator Bundle-Vendor: %provider-name Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)", From 688f83710dde707161dc0b23ef728db037334089 Mon Sep 17 00:00:00 2001 From: Tobias Melcher Date: Fri, 3 Jan 2025 16:32:13 +0100 Subject: [PATCH 209/232] support rendering of code minings at the very end of the document if the last line at the end of the document is empty Fixes: #2157 --- .../InlinedAnnotationDrawingStrategy.java | 85 ++++++++++++++++--- .../text/tests/codemining/CodeMiningTest.java | 79 ++++++++++++++++- .../StaticContentLineCodeMining.java | 5 ++ 3 files changed, 156 insertions(+), 13 deletions(-) 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 ba3cbf1c7db..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 @@ -28,6 +28,7 @@ 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; @@ -99,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; } @@ -154,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); @@ -180,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); @@ -193,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); + } } } @@ -212,7 +230,11 @@ private static void draw(LineContentAnnotation annotation, GC gc, StyledText tex Color color) { if (annotation instanceof CodeMiningLineContentAnnotation a) { if (a.isAfterPosition()) { - drawAsLeftOf1stCharacter(annotation, gc, textWidget, widgetOffset, length, color); + if (widgetOffset < textWidget.getCharCount()) { + drawAsLeftOf1stCharacter(annotation, gc, textWidget, widgetOffset, length, color); + } else { + drawAtEndOfDocumentInFirstColumn(annotation, gc, textWidget, widgetOffset, length, color); + } return; } } @@ -226,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) { @@ -247,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 { @@ -254,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; @@ -369,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; @@ -449,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/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 b5558b2ff6e..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; @@ -250,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"); @@ -389,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)); From b448d7eac7e39729ca2c7925fb45f2c6ca0f4af9 Mon Sep 17 00:00:00 2001 From: Heiko Klare Date: Mon, 6 Jan 2025 11:27:51 +0100 Subject: [PATCH 210/232] Abort failing FindReplaceDocumentAdapter operations consistently #2657 The implementation of FindReplaceDocumentAdapter#findReplace(), used by its API methods #find() and #replace(), currently leaves an inconsistent state when failing because of an invalid input or state. This inconsistent state affects the last executed operation type, which the adapter stores in order to identify whether a replace operation is preceded by an according find operation. In case the #findReplace() method is called with an invalid position or to execute a replace without a preceding find, the method aborts (throwing an exception) without storing the operation to be executed as the last executed operation, i.e., it leaves the adapter as if that method was never called. In case the method is called in regular expression mode and the expression used as find or replace input is invalid, the operation aborts (throwing an exception) but still stores the operation to be executed as the last executed operation, i.e., it leaves the adapter as if that method was called successfully. This behavior is unexpected as is handles invalid inputs inconsistently. This also becomes visible in the existing consumers, such as FindReplaceTarget#replaceSelection() used by the FindReplaceDialog and FindReplaceOvleray. They assume that in case an exception occurs while trying to perform a replace operation, a subsequent replace should succeed without an additional find operation being required. This assumption does currently not hold. This change corrects the behavior of the FindReplaceDocumentAdapter#findReplace() method to always leave the adapter in an unmodified state when the method fails because of being called with invalid input or in an inconsistent state. In addition, regular expressions with an unfinished character escape at the end now lead to a proper exception. Fixes #https://github.com/eclipse-platform/eclipse.platform.ui/issues/2657 --- .../text/FindReplaceDocumentAdapter.java | 19 +++++++++------ .../tests/FindReplaceDocumentAdapterTest.java | 19 ++++++++++++++- .../findandreplace/FindReplaceLogicTest.java | 23 +++++++++++++++++++ 3 files changed, 53 insertions(+), 8 deletions(-) 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/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.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 df6d786d9a8..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 @@ -438,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*)>", " "); From b3aa5b02072fbe747ba4b754fa4d8703c87ba463 Mon Sep 17 00:00:00 2001 From: Eclipse Platform Bot Date: Mon, 6 Jan 2025 13:17:02 +0000 Subject: [PATCH 211/232] Version bump(s) for 4.35 stream --- .../META-INF/MANIFEST.MF | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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: From 36c6b93edc7cfb6104cab6d4d7cafa779775f8b3 Mon Sep 17 00:00:00 2001 From: Christopher Hermann Date: Tue, 7 Jan 2025 10:13:25 +0100 Subject: [PATCH 212/232] LineNumberRulerColumn consider LineSpacing for word wrapping The LineNumberRulerColumn should consider the text widget's LineSpacing when word wrapping is enabled. Fixes #2668 --- .../src/org/eclipse/jface/text/source/LineNumberRulerColumn.java | 1 + 1 file changed, 1 insertion(+) 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 7eff2aee8f0..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 @@ -852,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(); } } } From 58bb65c22fd346bd846af0609f40bb2b8d8805d1 Mon Sep 17 00:00:00 2001 From: Heiko Klare Date: Thu, 2 Jan 2025 18:14:06 +0100 Subject: [PATCH 213/232] FindReplaceOverlay: use search-as-you-type in regex mode #1911 Currently, the FindReplaceLogic disables the incremental mode (i.e., search-as-you-type) in case the regex search option is activated. This makes the FindReplaceOverlay, which uses search-as-you-type in all other situations, behave non-intuitively when the regex option is activated. In order to achieve consistent, user-expectable behavior of the find and replace functionality and because of lacking arguments against using search-as-you-type in regex mode, this change makes the regex search mode independent from the incremental mode of the FindReplaceLogic. In consequence, the FindReplaceOverlay always uses search-as-you-type, no matter which search options are activated. In addition, explicit test code for that exceptional behavior is removed or adapted. Contributes to https://github.com/eclipse-platform/eclipse.platform.ui/issues/2066 Contributes to https://github.com/eclipse-platform/eclipse.platform.ui/issues/2646 Fixes https://github.com/eclipse-platform/eclipse.platform.ui/issues/1911 --- .../findandreplace/FindReplaceLogic.java | 3 +- .../ui/texteditor/FindReplaceDialog.java | 20 ++++++---- .../findandreplace/FindReplaceUITest.java | 12 +++++- .../overlay/FindReplaceOverlayTest.java | 3 +- .../tests/FindReplaceDialogTest.java | 39 +++++++++---------- 5 files changed, 43 insertions(+), 34 deletions(-) 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 a6a69c6c3b4..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: 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 ee8ea79abb4..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 @@ -589,6 +589,7 @@ public void widgetSelected(SelectionEvent e) { return; } findReplaceLogic.activate(SearchOptions.GLOBAL); + updateFindString(); } @Override @@ -608,6 +609,7 @@ public void widgetSelected(SelectionEvent e) { return; } findReplaceLogic.deactivate(SearchOptions.GLOBAL); + updateFindString(); } @Override @@ -650,11 +652,7 @@ private Composite createInputPanel(Composite parent) { 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); @@ -680,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. @@ -708,6 +712,7 @@ private Composite createOptionsGroup(Composite parent) { public void widgetSelected(SelectionEvent e) { setupFindReplaceLogic(); storeSettings(); + updateFindString(); } @Override @@ -745,6 +750,7 @@ public void widgetDefaultSelected(SelectionEvent e) { public void widgetSelected(SelectionEvent e) { setupFindReplaceLogic(); storeSettings(); + updateFindString(); } @Override @@ -770,7 +776,7 @@ public void widgetSelected(SelectionEvent e) { storeSettings(); updateButtonState(); setContentAssistsEnablement(newState); - fIncrementalCheckBox.setEnabled(findReplaceLogic.isAvailable(SearchOptions.INCREMENTAL)); + updateFindString(); } }); storeButtonWithMnemonicInMap(fIsRegExCheckBox); @@ -779,9 +785,9 @@ public void widgetSelected(SelectionEvent e) { @Override public void widgetSelected(SelectionEvent e) { updateButtonState(); + updateFindString(); } }); - fIncrementalCheckBox.setEnabled(findReplaceLogic.isAvailable(SearchOptions.INCREMENTAL)); return panel; } 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 f943211d545..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 @@ -212,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/overlay/FindReplaceOverlayTest.java b/tests/org.eclipse.ui.workbench.texteditor.tests/src/org/eclipse/ui/internal/findandreplace/overlay/FindReplaceOverlayTest.java index c19210ac315..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 @@ -160,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/workbench/texteditor/tests/FindReplaceDialogTest.java b/tests/org.eclipse.ui.workbench.texteditor.tests/src/org/eclipse/ui/workbench/texteditor/tests/FindReplaceDialogTest.java index 5e846f760de..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 @@ -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); + } + } From db41fb4a1a8edb434df83d273c22fa7bc572ed4d Mon Sep 17 00:00:00 2001 From: Patrick Ziegler Date: Tue, 7 Jan 2025 19:15:55 +0100 Subject: [PATCH 214/232] Replace TextMatcher in favor of extended StringMatcher The functionality of the TextMatcher has been integrated in the StringMatcher class from the Equinox bundle, which allows this class to be used without a dependency to the Eclipse UI bundle. Note: To get the same behavior as the TextMatcher, one needs to call matchWords() instead of match(). Furthermore, the pattern needs to be trimmed explicitly, where needed. Contributes to https://github.com/eclipse-platform/eclipse.platform.ui/pull/2567 --- .../org/eclipse/ui/dialogs/FilteredList.java | 8 +- .../org/eclipse/ui/dialogs/PatternFilter.java | 10 +- .../org/eclipse/ui/dialogs/SearchPattern.java | 8 +- .../ui/internal/about/AboutPluginsPage.java | 14 +- .../eclipse/ui/internal/misc/TextMatcher.java | 169 ------------------ .../org/eclipse/ui/tests/UiTestSuite.java | 4 +- .../tests/filteredtree/FilteredTreeTests.java | 6 + .../tests/filteredtree/TextMatcherTest.java | 108 ----------- 8 files changed, 27 insertions(+), 300 deletions(-) delete mode 100644 bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/misc/TextMatcher.java delete mode 100644 tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/filteredtree/TextMatcherTest.java diff --git a/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dialogs/FilteredList.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dialogs/FilteredList.java index 56e69c48c5f..1180b1324e6 100644 --- a/bundles/org.eclipse.ui.workbench/eclipseui/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/eclipseui/org/eclipse/ui/dialogs/PatternFilter.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dialogs/PatternFilter.java index b27c7d89b43..87746c48cb8 100644 --- a/bundles/org.eclipse.ui.workbench/eclipseui/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/eclipseui/org/eclipse/ui/dialogs/SearchPattern.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dialogs/SearchPattern.java index 0b219cab6f1..b30e9fdf835 100644 --- a/bundles/org.eclipse.ui.workbench/eclipseui/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/eclipseui/org/eclipse/ui/internal/about/AboutPluginsPage.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/about/AboutPluginsPage.java index f39c445e9b1..d733ee2473a 100644 --- a/bundles/org.eclipse.ui.workbench/eclipseui/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/eclipseui/org/eclipse/ui/internal/misc/TextMatcher.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/misc/TextMatcher.java deleted file mode 100644 index 6b07140a2f1..00000000000 --- a/bundles/org.eclipse.ui.workbench/eclipseui/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/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/filteredtree/FilteredTreeTests.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/filteredtree/FilteredTreeTests.java index 190d8d6367e..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 @@ -117,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); 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")); - } -} From 650413a6c503a3490cb758afaa475c8842e92eef Mon Sep 17 00:00:00 2001 From: Patrick Ziegler Date: Wed, 8 Jan 2025 06:32:46 +0100 Subject: [PATCH 215/232] Update lower bound to org.eclipse.core.runtime due to new API The new StringMatcher API used with db41fb4a1a8edb434df83d273c22fa7bc572ed4d is only available starting with version 3.33.0 of org.eclipse.core.runtime. See https://github.com/eclipse-platform/eclipse.platform/pull/1673 --- bundles/org.eclipse.ui.workbench/META-INF/MANIFEST.MF | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bundles/org.eclipse.ui.workbench/META-INF/MANIFEST.MF b/bundles/org.eclipse.ui.workbench/META-INF/MANIFEST.MF index c0d826a9b67..e80a10825d7 100644 --- a/bundles/org.eclipse.ui.workbench/META-INF/MANIFEST.MF +++ b/bundles/org.eclipse.ui.workbench/META-INF/MANIFEST.MF @@ -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)", From 690fac04832de476e90074df6316723aaba55bfa Mon Sep 17 00:00:00 2001 From: Christopher Hermann Date: Wed, 8 Jan 2025 09:23:56 +0100 Subject: [PATCH 216/232] [StickyScrolling] Remove needless job to style sticky lines The styling is done in another Thread by asyncExe anyways, there is no need to do this in an Job. This overhead can be avoided. --- .../stickyscroll/StickyScrollingControl.java | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) 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 7375afadfc4..289f4d2caf4 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 @@ -41,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; @@ -395,12 +392,10 @@ 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); } From e3382fca08128931f521a2342cc4a913ade99d75 Mon Sep 17 00:00:00 2001 From: Heiko Klare Date: Mon, 6 Jan 2025 17:01:05 +0100 Subject: [PATCH 217/232] FindReplaceOverlay: avoid exception while closing workbench window #2666 When closing a workbench window while a find/replace overlay is open and one of the input fields (find/replace) has focus, an exception is thrown. This is caused by the FindReplaceOverlay trying to reactive shortcuts of the underlying editor while the input field is losing focus, but the handler service to perform the activation in is already disposed. Since there is no direct way of determining the underlying handler service from the overlay to identify whether it is already disposed, this change makes the overlay simply check for the workbench window currently being closed. This is reasonable as the reactivation of handlers is unnecessary if the underlying window is closed anyway. Fixes https://github.com/eclipse-platform/eclipse.platform.ui/pull/2666 --- .../ui/internal/findandreplace/overlay/FindReplaceOverlay.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 78b22e07c60..ff9e0ccbcc2 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 @@ -172,7 +172,7 @@ public void focusLost(FocusEvent e) { * boolean) */ private void setTextEditorActionsActivated(boolean state) { - if (!(targetPart instanceof AbstractTextEditor)) { + if (!(targetPart instanceof AbstractTextEditor) || targetPart.getSite().getWorkbenchWindow().isClosing()) { return; } if (targetPart.getSite() instanceof MultiPageEditorSite multiEditorSite) { From 65f4b90d6c6485dbc596d70816e226e875a8c198 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Kubitz?= Date: Wed, 8 Jan 2025 14:23:57 +0100 Subject: [PATCH 218/232] SynchronizableDocument: fix (BadPositionCategoryException) Adds missing synchronized overrides of underlying AbstractDocument To synchronize all accesses to AbstractDocument.fEndPositions especially by addPositionCategory() https://github.com/eclipse-jdt/eclipse.jdt.ui/issues/1067 --- .../filebuffers/SynchronizableDocument.java | 95 +++++++++++++++++++ .../eclipse/jface/text/AbstractDocument.java | 16 ++-- 2 files changed, 103 insertions(+), 8 deletions(-) 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.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); From f878f805be6ccf5d7a59fd67cb94f030ae9c2dfc Mon Sep 17 00:00:00 2001 From: Eclipse Platform Bot Date: Wed, 8 Jan 2025 14:22:19 +0000 Subject: [PATCH 219/232] Version bump(s) for 4.35 stream --- bundles/org.eclipse.core.filebuffers/META-INF/MANIFEST.MF | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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: From 33f4606fc29011163a7cd53bd91ee1e0930a362b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=8A?= =?UTF-8?q?=D1=80=20=D0=9A=D1=83=D1=80=D1=82=D0=B0=D0=BA=D0=BE=D0=B2?= Date: Fri, 10 Jan 2025 17:08:18 +0200 Subject: [PATCH 220/232] Move o.e.text.quicksearch to Java 21 Needed by https://github.com/eclipse-platform/eclipse.platform.releng.aggregator/issues/2739 --- bundles/org.eclipse.text.quicksearch/.classpath | 2 +- .../.settings/org.eclipse.jdt.core.prefs | 6 +++--- bundles/org.eclipse.text.quicksearch/META-INF/MANIFEST.MF | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) 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 dae450f163e..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.600.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, From d876bc766301bfadf6887940e8d84628f432fc8c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christoph=20L=C3=A4ubrich?= Date: Sat, 11 Jan 2025 08:26:34 +0100 Subject: [PATCH 221/232] Add an example for providing an icon pack There are some ongoing demands for providing custom icons to the Eclipse IDE or RCP applications. This now adds an example of how such an "icon-pack" can be created and used inside Eclipse IDE. --- .../org.eclipse.ui.examples.iconpack/.project | 22 +++++ .../org.eclipse.core.resources.prefs | 2 + .../.settings/org.eclipse.pde.core.prefs | 4 + .../META-INF/MANIFEST.MF | 9 ++ .../README.MD | 78 ++++++++++++++++++ .../about.html | 36 ++++++++ .../build.properties | 6 ++ .../forceQualifierUpdate.txt | 1 + .../myicons/saveme.png | Bin 0 -> 4317 bytes .../myicons/saveme@2x.png | Bin 0 -> 4521 bytes .../replaced_icon.png | Bin 0 -> 20615 bytes .../transform.txt | 4 + 12 files changed, 162 insertions(+) create mode 100644 examples/org.eclipse.ui.examples.iconpack/.project create mode 100644 examples/org.eclipse.ui.examples.iconpack/.settings/org.eclipse.core.resources.prefs create mode 100644 examples/org.eclipse.ui.examples.iconpack/.settings/org.eclipse.pde.core.prefs create mode 100644 examples/org.eclipse.ui.examples.iconpack/META-INF/MANIFEST.MF create mode 100644 examples/org.eclipse.ui.examples.iconpack/README.MD create mode 100644 examples/org.eclipse.ui.examples.iconpack/about.html create mode 100644 examples/org.eclipse.ui.examples.iconpack/build.properties create mode 100644 examples/org.eclipse.ui.examples.iconpack/forceQualifierUpdate.txt create mode 100644 examples/org.eclipse.ui.examples.iconpack/myicons/saveme.png create mode 100644 examples/org.eclipse.ui.examples.iconpack/myicons/saveme@2x.png create mode 100644 examples/org.eclipse.ui.examples.iconpack/replaced_icon.png create mode 100644 examples/org.eclipse.ui.examples.iconpack/transform.txt 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: + +![example showing replaced icon](replaced_icon.png) + +## 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

+ +
+ +

+ 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 0000000000000000000000000000000000000000..0f957d8a2e151c4d8848d969f12be516ce7d12a8 GIT binary patch literal 4317 zcmeHKeQ*@z8NZWok&B)bNel{PIZb24z5UGXWz8i`atC+fk!un|G>LX^_ub3F-R{z53q}m!P!8(<9*)W^LwA?_df4C`#$bny7*?}?M9tWceC5&D2LCP+I6D=-m@+aaq!XCTv@G_ zb1_5-%c2wjh}xt81jHp#r;C3Q^wyXT;Wu4Z60#n+yA`2cPc(J)bOhuD1qH)@2&L>08sRWW=91yuR!gr)Is8eg8{Wt_|M0)P1yW z%aXQJ`+AOS-1V&dXz|=7Bi{tYUw6dg^_yhPS<)=eo^jDqr%hG48CYKi2p83qSwh`2|u# z!|d8L)Af6+=GAsYqe^;8U)Ic6pZi1S{k>T3D;q8xI=iwX_WoxFuIhIFRBS(%K8-%G zeAlc7Vsl;kw7vh{nPuPRtQNNtIc|6S_z8Qo;*_&#YwXhd&}nfoDXFe=FDdXTmQVNc3JJJv$aZf|Fa9I&h{MBkDgp>s$#dLdp5?OuyrqI z2h!#|^Wc%1j{V_{`~P+L(ad)T7rs-wJFhh*qbFsCdG=9n$(#or(g}A@TldA+))$?- zoE^^n{GOJlczt?(+q|O7S>JBovt>tzvbnXP>*`y-FIv=c(DK1=|Nix*o*+}E8={mK zUcI)(fM0YsAK2sk)#|=r|CvAT$$jkLfC>Lrczf45*Q$q03UBG%@gW0RcGh&s?{(Jv zbMEe2e$p;(>D8M|Ej>4Yy^r<2{%RyN^z|!WT$;B1c=$EzxmjUYb#Vz+SGDH>mY0JT zPLO@T5)Ue{>~y+<92g`mxb?|88agZh`PdVuJ(A5QaKC|+Cp1!)ESo= zNpqnQDF_Q9TkcpiOaWVVbG@o6EQZBmF-wfH$YDQ5*iai0TO5&JU6JpbP66uT&1iFv%PC$?3o&ZCX$HO{gKB|T1cG%6@_^crF zlE5ZjaUKYO5h#=K#M299gTkLh)&7=h%vv>oXDnbXl`2i^u zjgNIyN`v&1diX7FeO)11!zdNlFfjWSV{Cn zE%gTdvem}FLemDfqqx%c&iRk+CcS>+Dm?oD+y ztu-??{SNalyh*9LXj`y%WzN2wOUIux-tpCsZ~Vj4(m=fK%{*g?MJS(--Lb7LRjdWm UGf<@(#-wvQmpWc9`C03K0d_zR2mk;8 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..93a325b47a882b0d2a0cbed00c62cc1b7d54c4b7 GIT binary patch literal 4521 zcmeHKdr(tX8o!j6g@UNTg$~wh6d%QEyxCSC1#zMuL`+zIt!Oew)xN5<* z#f4U@MJa;{j7qycnZ@c>KpwX0YONhbI%QWV6#s|D_#c?J zqb}p~gLAedeSW<-gQ=Y&zF6qa+u5BsBQF2Qx!k{3zti<<<@sxk$EihW#ZQBqQQuX~ zX`73?((lj6Y1q2bZ}!|jAa9gyFInE&jW&N-9sIMmGhlCfLwAwMa_QORY4?iD7fFf~ zjjxDK%0s|!M~m-vN`5~7*%v!DZ$P26wpDAqZmh333PEmL>F8*^HadDJ8<0c!#*bC8 zEqdP8_{5V{f!=?N&Ay=D+gru&N;<6ni%(^8Mr+fpgPX4&m_=u2^HP2N|GOx8MrwIZ zjy2GuX=Z@EN&B5)k;2;}0um zs!BBmYPWcvR_nOYrpihDwE*W{c|CecwRYCUhZr?$LL=wB zrRXU*w>@=r>ZYGkt%lA|XG!;#&GVm9wADWuEe+It==f`R)q1qsH+avgD=FnCnGa9i zznB(uxo6>})M|Nw$MhPH*ZI8b`lZ3E)O4G+W=GYN(;r0jz6fO&+7AvKlk4_>ry%nyQz|Uq>`l2FQayQb8C6o}=I@_h^BQ@4 zL*1EEHgo^8+S||F_uXJlhxJZnK-oEHP+kVz3KX}PgcxBll0t{c3hEAmBBC5t49_H4 z*hr?+W)=UznX`PDCRF^@avh?xMw1zItdk)VopDLHGZR-5{HREu2nPxXOeBlJ4pWxd zhB{Py7cUB)IkSilyC7_)if_>A;b;p(!ZM*uhzK+eI#!wCf;Ck42S08}JS36x4BE+8mbc(_7| zi!n^$q9SlK#=@8|u$;6BOD9EEbGmDQ6C7Ql*Q)puAu?joXJIS_98~-jv^mEyGLS@@ z$V3+7)D$bEVRD5sOeR;#6 zAu-m%Bv~w3Dn1ty%y|wE>%ev*Fcwo|ED1;vi5x}5s92nYgri~^ipUp&S7a34LeNy+ zZ=t!(14j%jc`R)M^XIut13M~_%pQ0fc+H|+TM33;n*zn~ffQ_5E=joJ1Y83{cm`%p zCqefZEY~4B{VSzF;W&m-5=0;llNtpw8Dk&k7!St!n_NC4 z$0^bb{sq~=VJYZNXAC%Kc^Ut-ObzvO--`O`UBL3XHFk{+f_$fOmm5@89t4cutX8M- z?s4<=_V?^F;|4Z9e3A_0Q0^pZtvpxgHs?*lSDRSAR1`3_knG`%N%PwC->j^&xo0`~)2FQ2uo(oZHOZ>x!}t$KI&tOPcU3OEUW4_}#E zfA(f|Fj0R0>$v9RIVl-Ot|cCdioxH%&|ln@JE#4P6SrzR-pan+bC~88ooIU!e}9(2 U_QB0#X+UvEtBF$|Te_~`eC*A?XLX(UguVw z_f)<2+u0PbW~S$vnVz1WmIcA`pT*z4!FdA$f!<0=h$w(SFx|lO7kFskXM9Xh2=J@d zT}jPRLEnYQ*51b0%o0rG=w=Hh0=t?SgFvoJR`Sbldl=v!Z_x0+CgAf#Tolf}Q&aX6xfF+&M={QAU{)1IsI?!Mzs1A(CY z&4h*JC546mu^wO*sa{dM5+F`euBmFF{= zOKfImho*&y{7j>Qua)ZLWQz{lMTp|kB{?N3)k;rU8+6va<(29(vC;Mb%KBoQJcka$ z(q^9j-i|Rw8y%+NG>ecoQB=)1o{?Nq(sh1;*GX|z)GgixlEIp}Lj!j!vWdk!N_7Tz zc4<7f-YSP@Agcb6kDP#g->)}POI6EzOUqVmJ&Bk(Etwn{HPjzjg)0$VHrzFYBio#7 z8xcD}d0aEK&OW^E_mD2u=sxv`RspLYEJhV90twozyb!jsh}nW<)sO6p#z6j~+mH5? zzo@=O8A73({=nzIC45XTi_1v0jq$U~eCVs^7yH^tH(9!TeN$z{E(dyHw#{pJii2ag zkaTY=6OHigvRdD4E~E75+(u@2G#bo5lJM3L;(OPcF~tu4nx&a(GnS@#h*$7VAlW#s z6$%;oYZWxO!lSjN!NL0Fx_0LVCVk$%k?rWcJs^0lW`KaH$;xmU+E~%)8`&6u>0GUB z0m%b_c=%my^$jh+jzk7v6EkaGl9QGW5+XArUJ_MSSq52KVX�gu6Xh(fzZMp}U14 zrx6K1-y0rRE&#v^?5I!VYGrBdz~#zI@)s@_@cgHmo`mQx5=RSO5;a+QB4HbQFcAwK z3mpTksH>SX6A9lNA|87qV=e^|vA;tAC0-I!M@L&OdU_WZ7djVaIvaZvdPYu8PI?9= zdL|}XfP&V+&Dv4lmDbvU^bf?}Fhsx(hW2K*j%GI2M1L^#4Q!koc}YlscA|gG&&pO- z_Mh<94u9tYzz=#?eOr1)ItF?xEBb%$;ovCh41oN7LjTtu4obi|rB?tu*f`l6f<>Ld z){dnA4q;^Y&;GVf_LhGw$HEBb zM>FGpG3!6(_NV2q<^20ZfbRdq{SWGYto<)yfJ#=DOT@;|>Cf~eMR-a6jL&6cV`yf? z_17Z@n3)mG#$-s#%3^Fp%VMN&K+DO_%0$a(#KZ>XU}R%qWoG*~C`oGvM}2EU@E<4u zoX!luF*ep`F<{_ir!`<#*qcvn_<78t8voag9=>I3WgN?DHi@rTr&;;Nkz$-vJ|Kb%9#a|mm`JdD-rrKjQEIvg?1@^*`dk|A_d1rR#s$^*`dk|A_d1rR)DUcD?zRI|a4| ztRNS_S(@$3$^;xOI0I>M5zxz@ugtcB7@!8hRzlqY1Va4q=Nk%?oQefhzIK$96@9%A zh4>m1`i`f~2m~SmNs0(6xh@^2xp?BKHr-5&TGCHnm#=|YOEiAdvQ?$&m_k|GQzlF{ zb^5O)JSgZiHpNQA|A3Y7MI%Dk57smo(2iCvGrlT6ZduAcZehN7X1vx=NwcaJ9>3X& zz`?!4PMb5`2M4i8TQZm|H&iKzm4|aJ`!SJQ9lPTq`nLU3-UMp!i4WIf{5cP zbx!$Qx;C&I9v*8lan9=gE6lgjnUaKKx0|zBuf;_o1kIr40F89velXTqQrJ><_B*trEXS3f8^i6 zWnbZ4U7qK*wsq|x`$j%oyu6w?ApYER{{}wvdTp*ypVsW*R}!Y2Oz^>P4*8_?+D`@Z zM+-?Q%OeWt?<-swVY?FXyqlGhl2o;lY4u47p}8gPe@M1#k88PZuSQi`kF-4?mLIkb zj^1HH2obB#uh$w_L#rI!bjxYVeKVpi@#ciU4e@JJUu`0IH+B-`LM2TB4Tc$UTp zA)1{{8=qf)?WM_~l+R+5``D;cR=uqS3u3}M^(TSyK_Q1y^HHv`?=#SA`h+q*r1PPm zQld{b_sgx;NwAA%xL_E)vPBIi1wo>V8f^?)C_gQ`INT2(?~!IM0Wxd^_cV+VqY5)~ z$L8Oizu()@=<^u-=JCF-M%);xTijRsiHVwT7c=QGguR_BIQ~x8a)Pf`y^T(vzc0PT z+v|b&rn-bqY@N7c*?2xu&168_xPf3LIW2X0boQqt(-^6w;HOu5Z}RYPlj@SKqM%p( z)Z;60Mg`yhAl@oPpHMJFH1u8EB#&aL3vt;hP=$w$X2A|0l47$O*P$aL4moJ~P2IJ~ zbN$xtJdPSe7)2)^q0z0dttYmET83;m=Ay?6zaNF%aHcCwG`l2@OqlK)CB=phhu`KE zjEJjAGK8Bs^Q4s{xv3+_8xv)Ih?2c)(wgfuYLm=aOF@h?*vntP(W7!(;dd67@_|1~ zvc`mVL;KUD$D$LR7@SptT*gr%c84pYa2t1uSIv^7!Wb#1;HQt3u~G|EJdsF zsb4;)<0)Xo4P$+`I2DRywHF?JhFNTw94W_DtS@zx_J2Sz=EQ%;sMaFdU$4{=yIVS@6{BA#CHfCe+I zS_?9${Eh4z{T$tNl!g7H>(XI*Wu&)=JCAQ(OW3mZRZC5Mw>VJP-3~TGM3w+zi@P2m zP@?+??}L;p(I#u;yGYqRS(OBOkxa{WwKPQy#i+OlTBg>#vhs;@Z4IZ`1%fE$7A^t_ zEqNu~Z2mQFm!>@KLxFJ1x`UwhQM0t^59EZ6${e*FuoF?uQNcxc4 zngeNhQF}zY-M1dhu0{jp>ww~rRDl8Mlh39ux|(uL<`WhBf|B*MSgn?2_6xOzu#bo! zSYn=<)r5QT%j-L$pV0!@Zqa1?ZUU}MNg&2C4_?0axuh0zN%3j)bsxCCVPzbC zt84lOXe$LU`hrp)w@jg0p59F(-Y4ls8QZ@1k7D1_I%A7T z@HyGI3@1IP$b^cIzxP5KmP~Jb$ZJ2yeyO{8-ea(;ll+@Guu6% z-krJm#g!}Vo?@dyQv1x`Wrkf5WJ+)#f%KS?;PIDLGlgB0~LTcIkS<0We5M!1ImkdS^m(@1bZ}`W{=o)PY6f=ZT;1(`xi#}9!H^YtD zsjp3I@$E;N)Oplz_LY|-a(8zmT8`?6D0jt%gz)iG(^vvfK7UCMcm=9j5!u4xaB7@G z5dc_`ALQ?GOllIDD5Eano2z|~LlEmIopT6g8O}5Oa(0Ia0_k<_GmGbk7b@iq$3{JK z#+X%~_}S6f573I54LLDJ6M;Zj->Qt$w!(NExtRGDq`&+KCZ_+Ddd#)RYTj)`rJNso zIguoz_=G7F(HMxJSorJbVCkFzx&0gk2=qM+4mTpC_JD=;hk@d}`nQhOpw}Q!?u2C$ zxqOsH)4c;4S6nXVO_@H-n>sw)nUpbP5@F|$(YJ4z*`Pt|bBDX|+i@Gd5_YPM81TC-%)vS!3i<$h;1{p4_R7wFjuuJy^zbDIsPw75Ag zie`iY5iu=1tyR?z)z{M;mmATnYp%^{!N?|z3I=2wzpRBTH4z!@bJ^7{%lgK3vr$o7 z{*32+UdtUCm?*R^jqcBg5EbzUFAAFsgyY+Efa%I8AU{gh4W+lb_Wbi1G4l)8S_(7- z=R!`$YYBLH9rv{g4kBbVjPZ`!Cx^#YyiA1aL2VktgZ?|gZb~|CBk3A*aWo9r$Xhaw zUau((lGtt~m2zVp_7($LU1RXpw+hISbRx>_729aI2ol|U=DqIBG$?PR$ZjIiJRiD$ z^-d~Ti4pIbL+BvpVZ^$2v4+@D;ASpw_*8+!gW~4L{hL55FHAZUd@9T`+o?G~P{6ws zEu}j{Lrqdcb;yW&18<4HtHu@>l-lyMudJBCGsUq!Tx*?SGMP3zp1U?&x%;TMT`KcZ z+{KHHjO@j=)Qk4*>niOr%5ow)uPrA^ejFX_Ji6;Sd52B^Zt2azwxs8t@VI8F&if5% zGQ`@SZ=53N&nNdrZ?))^1wVcAV&e@#KWc1Xq*m|gRVd8e3!5{ri#A7q7U*TNh{zPG z6AL=`74u7`aaXLQNO%i^*Bo65yJCjFAFUia>7Wq#0wQpf#xsWp}12Y*emBTF&18@1e zPYP$Jy}`Q~Uib8f&%6)DEooAls<|RP*rufVeP!=TDs))Vdb1~E@i{)Tj4v@UL{O5kU4NHPiWd&7we3yRDwFw02ZLb=)#b#m#XlCp^yAr~p0 zteG{Jl>088q*j-->)V9!t0j0D1vMh!{W;G5LE!@CEr&L=S4mj<<|V~7(Ht`Hx<&6v zzK<9n0FH`2GuAiXl6eVvUwGCf7BYkR6d&ks4`i5;kkyQ&7s&ULRf(S29BU*w;i!0@2d$Hi<{3v5>-yv!Uk(5ST zIqp;QcNpmrD+*O6iId($Gi~Qw0lwNrQv)4-CLb?Ll#3ARYSaCx%08YzQl4;?*2zAs z_eogz^W6A!&=i~3ZF#TPhJy7?Fhc{}HHqYXm; zG8OW#wspv zUYL!*o|s5((FkC^L7&lNa`#$B)ln%w$QI=1G^>dF!pZV-`JFK=H*Tl2c8ANdh6~|) zOXEhO%tw>!v4Po(L;N@M=hclP+U?qm_X~3!?~7s=z~W!%B11tg9C)7up{beemIb6| zkciG~_15(3n*Cru4VwK_vD4N}nCJZcZ=3n8KqBdvzL2Q-$ASScvpQ*C(q3xU9!#lL zI35fr(;zJw!fTpbwW*FX3$D7AlqpkT_)tbR))X1>wvd&|`sT-&Y0pI+R#0MrtiDL` zv}q$%|6te}3I**i=x#H%*Am9@V)2u<^bVf1aTX1-<6Ng?{-{c12{q*%V^gMmg+qKM z8RSj|jY2rlRM=yq>epJ1?%0051LC0RWuMEt=RB8#4SAvEAyv-P2qZXYG67fUHIfMd zH!U{k?!$!^c+F(RD&7Lm7>DMHnjDiQ@4F+)@vqrkvf74FB((= z5hBi=CRyIUe{oscwbn>tr z5ksd23Is>IzOq=>G)PYh)$ zl4DJUG9^1m5jdC5LZmDy+OSj#)EvPo(K{>RBXA5&8bf%gEGcQ$2WNHkhd+Q8E4-pRf)Ye+! z4cJlWM=WHdhADpWXjCEB+W(a@L-ntFY0;tkLbG^^688iJ_vf?^h7lWIEaH^hjuEJv zJdYQUAY@f5CsE*>E+*}$^FO>s5MQcd=Qdtyxy06VJo+Are4q*8WL*ye9E2jRlFe!c zv>!Sby+=G_DivTJ7I9cf$#v10Q1%4b);aKuiw@q@@h|-aE2Qi>=XyH1f%N3W^h%YI z*hCxSX)M8yoSX)ZPJx2)b+}~d=^eybdg}B!%GOAKSpB}Xw=OejORY=ZFp}r;HKXX; z2-d+~9G)0mi+G`rq6M@Vhn~KM_9%%mAD)U80)%o5B4m=re%lTjkfWq4h?p7lA1C`g4`FnkBwflSVdb;(YtRHb5upslwXzNxoT zvKS`QFJPsX31{P!10EzZ7a;rg+-bG~K4nC({Fi7sqKpxR>sG`EQ4VZ3jq%$`$YCFp z04iNZAau*b*2k`^cPDlg19ButbP06~5COUr?!2g$bt2zOH_y;!1K!v0=n1oEkpw5W z7AM21R@u>vc9^nU^e#x8w$?lOUM-=bs$-ZLeC%Gbm!)e5aSj2O;$(T)Y(oL})4_(k zpS?5>T}dNRHJ5=)HE(2ST_#LccIg1UdtXu-HfDRfbOlu@KH$0~+ z6@5Qso(=X#Wm><`<+eZvfg~yhq@lm}d^K4Ud>_JB)XE{96`h$Y&VNWWU-v~OSR^P~ z=iAwRxW@MxOT;J(ur&zeOQe8mbY`1Kgo+XP4GIKOEQ;03)#bNn^S%R1@Eb;eWU^YT z8&UL`u;H=KA1apN1V^!Hh;ibKhI7p*_L=u~gK#+nkig1L$dQh3Yp<72dqX~HA+vw2 zto`^Z+d}c&0e1-UG!2>(o-t5Nw=-J8PeM8y|cJJTL zeb;(YEP_g|itUde2lr_LSm3+XeozI3h`5KXgI z!4A*eMK`hU)bepSEVap6{UDgo6IxLIWjYlPL5vG-={4TeEw&w!HjZN%Iu9dVq(2Hl z=u}K+t%Um+^UmF=6ByN7*knQmWy9D=;btm`p@J+FafS3aEx%BWxOE2KDh8@^f^w|c zK9)C`4mF3!5{tlI%!9`A@B}ZtfEhJ&vlaT)H%H`pCv^-X(jZ@ck@8)T9TU5?QjM*L z?#Pc6iC#7oXG|GigQ0kga>_Rw#f}G9?&JD z68c^f^xSTnF^|jd8kgTUen8*-HN-H@`E!cBVN#cijy|=_G`?L3@(D7%=eD@CJ$*8l z_;k2KX3br|9CX&C6XGZ1*Tqb!XCLP$I6iT(N~T)Y^4XTevrZ)p_KFz;54|K#l2bbt zP_i>{@jr7r7um^aYrZkesP zV61PhrDMm30-+{Y(`E3^Tbc4b_9tp2jgveg*9`ScjKzn2c2x-%I#0Fin)Gct9@PIP z){7JqQd|bEBCwTm@7IjDc~Cbq2<8YM>Hkp)0kbaiqRJ>ts}-~~7l+2IHqIUKu>SOV zyrRsL>L2L7Q2FM>*Bz^DSuzyFr?w4_+rGvTmnjQ`q)rd|Bdu_our;ZxCruYo?k;^L zFEh1BJChiZS*Tk0q)bH_DG0lBtP*H6^Wmt*$8u|%i=wj2c z#bjwMGA_S!OkfhV@{Gb{a7N+D`4#Ps6G@sr_h92Oszc>}DVb+x=qD6Isn;4y;<^g? zQXY?()Hq;SIU2}lH3sU6lvNk1Bzm6PO_tYyhIk9PnHzoxr1x1byO1&KHh!xHenXlmIl(})epu` zxhZ|B{SL^O$?1wZ?-T2PYCFK0PzYuIfu&rMSJKEvr#rGMuivN_E`EN_V*F+{jU&iu zcK&!Esyl=T;x?RlZu2Wox6AP|p6*}Ir>;K0r3w|C;LqP5g)J;J-A&7$TKhU>R%6$V zC8)*|#lwCfr9%dWsjVf5p1$|1%K3JG9kD-pte(md+K+~7vp8_Hhc~5JKwe7IE}~ss zP%pH5h=re;zj}Z!p0pNJD!u8SFjHwaI%xpkx8f{yx$`SmxBVB{&qYpb3mZ_k(YD9C zGY@WhIjpc42MTiSsMW?MEgm<^eiVy+>MN^i+VJv(GIeXDHk=lp)!bf-T}L>^&kNGB zKO`AkKY`yU6;Gq)z$lu>j((h*D{|wdBh<`_CMzS{8~3WU^evi|sFM89HNA)7?eal5 zOPN``Ul@pJZI;_;g|UbIXw1}u%s-}&w@)o1@JHCq)ZvCuv11JX1VKxVQh4dSJ9-5V zTYafA_w)Q9in!Vp(xy2}aTM`x^>q2)QwEjXM1+pg<15dd<#?t;KXPGA#DQ*jxdZ0! zegp{&2IAWCrNV(gY8^d?L_g4$nGqg9&|nr=Xvsd4Wd` z;$Bz?P1=0#H*7g=qk(kEk2t+fI$r_4OQt1G$DLk=@dODGA%c|Pb-utwj@<$5&GY;B z2uf3gRGPMtY))7`K@-{R{wRVv`FO*of6_HfIM829K_qmAD=0~9>S^)V(pcnQK8X`e z4AE0jk0ey<-FOamw$<;e6ArCYzp*$tV6lz(YuH`6#y*sPW^&MPTao`!_zUyziJU+1 z|K;({#8;msS&#l7$sQucudvWiKN0_)KSGg^=@iBPM*%)|>i_fOpzOCP)9?Qpv&rqh zol6sfKG~TDaYsxadR}d_B{F&b#On_I^tWAy3K?--sH7BI!auL0 zqEJibn%ypTSos$rkdC8=q@*OFtW)9NaoXD2DkbP3Uwt)M*>DLmjTf%Vo0}N2rk#P| z;bA>A{}m86FW)35yGg~Wy|f=DQ&_5{_tQwY3tu^9D>!ZWR2bw9>cj=Dpe|&ztp48E z(C5pD%wDj+Ad`$H+rN1T4GneUAsCbXSi(%nLonfwh>3%PvnN7VFynT%*+;8c4-XrB z5b&#>B+sAkc7^`sao?w-icaK5uO@GS?veX$wcW}G_*2f*_u%U%+;=O=O_;(9`(_iD zsb@ZN{9b0xKZZo?@RUqqJq>qF>h?oYoY&(GaJXmA`&H{#9$vf6=jSSoGCb-WF2A%N z=lH}Qm|GXu>zZe9UaM5}abzTsw!O^M;b=!YA#C8iO@D}pEK9QuWn$Wv`Kq9BKb2y; z@){1Ve_%kHE4c4Gv3d<#lU;pO=@Xf*iLi2o=yT6 z@}7*-`jiLq^k_5QdRp+>JDPk%!U_K~a^2(YsxD-SsHAKP6^M}JkKW7iJk(|2JDS+3;%uPo zom=~QoZ-4L3gN4I%9+TQkQ|u0-l;M4@!BzvOk(ShU}iLb8X^sRxhQxYQ<#geYkJ%5 zg6*cf=@`z?-S65|e^#H8b!^?>VQlYbFpkStG&b$KxSzYC2Wpx^%9ZKQ= zwsXvw+3T#zGCyWw_t3GqsEATZQn%4o-`iV<2*q->Id1&bzLD6&{r$X8d+4%0BT|pu zW5DQ?l8VI!ckGkM(D-}w?86B#KP?C>D}YI z_%J@srFF%aiEm>E?SNc z4%%|1v6xV%eKuiB$ze(+3Ywo+2^UjTRz{yWwv;J5z4NSSeHPOfe9phW7j4Q&+|=;Y zX18GqB;g4Cdi6Q-9zVjVK2<&NZk*rKO**fTOjEt2F|Wto4;B^VOB4PSB^wf@e$zJL zc^v2S62VfFZNOE$hEZ%MK{=h&@9&L-<1RuR`d6m~M1QjVn*OOqAU-VaBREWacu?@q6cs z>qZ^Zky{SKqWG+~`})7pjp8O!#RdrsKtgXYhmgOZ1zM_<>W;PZMRhhxXO> z+aTX?Cul#SbkBWSxwYF$r)-h9m!<$Y3`+YCvy-Ot0XnMj17(YCjAPu6D*RTeY`(Z_ z*Hcqpq9k(X%%MO%Jv~TpIi;mCRB>iVWDlyDxfU5-OkCpwAW^5YXK#Vh)IV6`&IWN z9x@@1Yh_cD+f2SJrLwnVMsD`B&jyTK_x*wu;L9@^Z>bi~srgd3kv`pv@y9kb^~_L0EWrm##eA&PPGY!m27Nz^vBD zs7AKVl$4d7935A_OWgy4)@R7vX!$8}Y`rRpXB^-Njd4fK*5D;S3XMFGiPbo{kLPC5 zHkjq9`&NOmq1AILrL{9`bDEv+J{)+z1Et!k=4rEpNnvzD0u}?dEn@ z&1n`Vg|7ISONAs#LQ@m>TUVx3*zl$RQRb8>5*&;yr>25}0SnHmwTp&^#-##Bgl?;A zRe5ZBA8oYjk(ZEE+np;+po3PL0GZ~G$`~jvq7lDBp9K6mu%$m%iTJbVJh>=htYC2lB zF6a%BKEaUU*t`&CEI4nTyjyuX{)+qa)K{4Qap|3~PQh}WjpI)iHiP^%b|!N1KFn)- zHc$Jl9qXQ7n7VfpkhO~(1+XBG-RK&o^#ek(Cg;w?BZRc|<&i8j3>MpLdbBnP_opr1 z0K|3c?XYfkSJ&3ruV24R>ogKZzzkTq3PmC$QA0+;!omo{rlEaIoSeb>SRmgaqmVv> z`{IW3a_jvHSZG0(puXg_{CF^Z3bLi8Wf(mV7hc5F)YRSGov2Sra~%e(AON#>m>0r1 zS3=o2XIZ;yZDVCsR#A~4m8ZnU#m&uqPm<>#tFN!`;J^&hGcqz7h`?7=R1_5zHLv4p zvLcsM$eAL72i}2KR#9=@8N~*5&d#ENX)kGiP3K7~D=QmR-3F`_l+Ci_DM&^ed3bnO zSslyfjSAkyVIe42dp3@25gI^<8G*zPRI=d+{^*Pjl!pRU zw!YSVI?ig{44>m}=UchbI>|GZ-B^pGn_dG>&Rm@oW!>D|94>qL1!#+dAXr3=2E&gi z_*d?h8a>t!nP4OPQI5<2s+c7q<5;YX&1sTcNKx)S>lv1olk0wL>BUe^!#l46HQCN7B zytCf%-HcR1Yz}@S?*4vU^ir0?_u6VIhtg_4n>bDorCKKmF$OBxdEkPlYMD zg8c3#?QJxHx<<1DA1sJSqFSx_Ofe7Q-h9F6aykqHTjkrQ*QDFxxcPkWL|H60aJfB= zmp`{5XMzX?T4wq!X;QpKs(X;i042aCtCc--7pz43$s+i>U6jgzG$vfDH#D=EvVpR- zI@U$H*VQt16D}JIPhrR7@GrFtDi>VY<-=5L*P@HP0yYy$*kSIGj!YEb54VzO>m4dy z#H}U0KA)A<2#b>kaLu~4SX(Z)WW0zy33nKsiTYT&uWp|*B&u4M7)x;@$E&g$V}L-l z`vw@_?v^hm`0OTLLMi=Td09_ba$B6br20|Gur3sQK$rLKUj#*u9)20}(ACZV`)J%(NbI}W`33il#QM+&qz zfj!-c zRkCXC{ByL#Q-De}7;I6>Lqkt*WBuo&LKQbQHugu08t3HDt4xTI>%66U=bud>h@w%Z zLYJV3Z-2Qr6$4mwj8f>BX`qbFbo-pENgIM&HH8NeB0{Vvs6(^*1V2PGM(Qiz4=2X z1vND;4i1;kGtbA0g;u4~G657LX~V5rt2MLKN5Ed&xOmOgFAI5ia07K7JH2ArCBFAp z@OUGP`nYZ=$Lswo$Y$-fCXg>OJ8DKaXQCn8dfDUU7~IG2es)8Xb=p_)#Np(8dlS)9 z?by5BWFPbG18^8fd3Q_RLSC-?Gsc?Bb3tH|Unj?bs?k%ysxYFya~rQgm3^vsH9~c- zM6o08APo^}r~-%mlu_orMzm4z1ef=yXm9UeHUuX3uSt-;+|ARwq~G4zo-9^}H@v+{ z`ye5WbK)Jn^9ryuwui%51V|dJZd-*C89CVv9Azb0NQywBg{`sq95--`Tyy z)OiBThBtvu*?O7QHW-0pG)fz&34E5=SGfJR;gKty^@dpWCKKt*CgUO|V|omO8@8#R z3#LqeUEI01=@cmyD-}mXM8GzvAt52Hb42K4#Rc};r5Ym}ELzs~8JL-y3!#uPGc)sH zvRx1v1`bHHD$^2t&79+7C33k zbrzViPgHT#P#|hal4OIy-3#@y`R;C^CM`O&Hxuc+Efx!O1d*89#A(21+T79Exmby+ zWG*=)12Q#bx84bL@T6(e=48fqc)34gF}%02v605@QXcy=T7pbG0&i$yqG0&==!nPl zlnDRr>f$2y+@xMpTjHmfqK*z9z)mW{t$2QZJ~%Kp7adkmqCy8mPSIaE)=^i*?LI|!P(ffc{%16#dd-U#8WgK z6YGYD&A!m4rY3A`Y*;}e_-gP-ydFc4ej;GW7*#DC=5f}Yy7E*kq@<^p&+N0{gb!>H z!~6AY$lt9$K6+w=il#jX(%wm^P-jcs52-wO;l|1YdLP-l$eL}lpDdlnENJ{Lq|fD4 z?$w|O{pw``sef^4-5>I~aEY59EJ9fm}CcR_kTCYo3AlrgY5AHi~531LwAF_f(^ z1p@gsPRmfrUALw2KlT;rI`6lDK=2@#o#0tzQoook2JE>rknhM&7x@IQ%c9;#cxdvy z@fkZ+()_QX-|bq~dW~vMZF>(LIkowow&_OH_}`774xKf;Tn9;L*6f#)?-5SU^Q>v7 z_3bh%A6&}#_4;@m>^}c^Ct4{44vr<|K0kj)y1Amd1AdqHiDb(1VbTIZ$#JV5!GJG1 z#rs;qZ{K4#ks5_4?oIypp_AFjnhKQ(IT0lT{HN#3W*SV0durM0`1`_MOXp5L&!fDC zn>9Pc6i0vB9Pb_qlPy)X>S$c<-?N5Qg~M(S#|Cd+vME&5)G%KKG&MCD zuxMy$!@0w7!~2_>I00@)8##J8lrHYcQ=lQiwdvRZ#*ehLG#Ct)laupXGzE1wIqYUz zL9YID+px z?VD2FO_uAe5a$k(Epk2-_5WUNdGhwLv8ni6KutxJO^{yd2$2{#=-xOz&}6$gS_C2n zfN^wjaWOJ7ve242vVE|(S6EyuB`2r5U2Wggnv+91w^iqkkM`yjAl+RCsd14EpDS@L z5k$+6_q$Pii9vuWD}34CZ9h+YxmPjKJDq>q@|$KknD|$>oDO-;J|;$3X(C1+=u7(* zaj;U^k}YHk;uA8S3g`-rrH#5dZpm=QtBCJ7z0~ zlF)|NmoW1~#2^7ch)c&}n!n&Ok3H`Y%E7szbD+XvwYU_s%Mz_KRy}R+RX}W(G!;Y? zx%;gG*M2}ejuU@aP+@>N!S;lU4{h{qk7KBZ!296?fW+p|wUk1p`wR_Z5%38)?zEO6 zvet+pB<(0oto#A5o{FxA#reEjAo??(vFfOTXO5kkJ@uivua{nd1SDl;?T)=ZDFp`C z_c{(%_3T3B`UdAifn?}nh9t}0!0Y0jK>OxwP!ve6C2IQ^E)yWbikMqn4lJK+Lc9}r z@IEEU{33*TE9aa#fKB$g=MfcepenGzJ7foZMT$w^c0;byj~p-1r(d&3!$wJ`*Zf2d z;c=G!Hfw{oJLi)?N!=uwZRe=bXXj~b95Aqj9p1k+5Lu&Es>gr@56gk~84y2D%y)m@ zJ{KT+4@Aj|l(_i$`PtbAjB5;|r=~1x7cBupgN~j)VF-9J9*|lV9K)r&HU?b4)5kQ< zDGEHYGs*e*K6uqyHzTR4s_JZ|$$=uooF&Q+m5FvQmti0 zY`Y%n8_ViYpbDx;oFX1XK~0=DE)+tAP!VcMD2u)V`G%~r%L{)ivFO0q$ptel0<-IO zAO{qB8n~T>n;Gp*U0t0S3r>+z$QFn4P~w`8^~}&Wvsz4o_I~-h=R&LYm@s2(!J7v4KO>dC<_#Paj%1DzA!CNW}Z< z`2$S;7vPT=B+!HvcabBHUb@pdUZQ%8=-*&jsAVx(HlV)&5KK{wKq`}14d3s z@8fztB&XGYK+{dx0w~{483KnEQy~&4xBFQ&>35)nzNRXxNE8lukBV00S4c4U$UUxu zyHI3ircd#U6APPU*#1%O7vaOgNsEN}eh#?lUk(oHu_`C`rXqo(jC`OCq$)kqI zbK~NBrh86UE>tg$cjw!M2j{LlS@IGjQ5n1Mx6S}} zZ_2cG`FMYSA8>q7;3r%4E_0DPARS&0*MKcz1O|V>aX(pWo1NxB>dB@IPOP5l(zDfP zWMJ;sXMx$;WFO8a&!`%$uxa%=x0sCCH-R;1FVl%pw=wYR~ zkq82=Py}xr>?OtShY2-5IV*mp&lQ9}P1>guMSaqPiY846o9*v=1;zJF zPIQ%m;lqRCiWJfg_);>WLP?rG$hA6}S)QI5zTD3AK;)wEttWrUaRyE|j+XG*=H*>{ zy?gQaH6>lcJL^*63LW)c^z*@rU`qKd#H0NoT$S+E_ouYZDHH-@28PH9h#8xk#+t=o zInm?uS$DVR5@uK(&gJXR#R|-fBIU{onnM(#< zk2hSp_9p}gjq>XNaoyo3myS;|ktzO|bYcn>lUDKSvKQ3cT~C5ZGr4~fx8JjT=k9Cx z&_O;4UEu=v6(|s}_fxNMNl8g(Key{KxbCL8HJbFqL?D7HmSZ;(Pdn={o~WWo6Du;i*^tAuDt9bN9ATxY+UcQ6gN$g@t>7VH!#U#I_ZG zuRC%XHuFjtweAh?!9#b}@vvO+e;bm|Lo6tBCXUHMK}Z^`lcOWeF;v5CE9Luy5PPZz z#VgfFYDy5yus;HrzF-|soO>J4BZe;~X6qt!Cm(1HhA7`qfts4S=maNxCl?9?MBI&x zz7xSC^#C!?MlHHDOO~f`8ENU|DnoGxhnk69Y6=Q9*O!BfJ1x2doeDW=Y0Yb-e01rG zlEb|{QyUxAk~uRoGeny!iD*1*?6Zd_fcI(_#w_#TVWoznis8Gfj-%%@YFQu80%htC zo^^ukHp$IDmsC`xEgqyj3zGP*Rwj^t-;Gv4n19nCV-%74C%M@;p{Cd?gM5oyHwRv> zG>d9_UYpxIJWnx3fwc9a_2$iP`2&4;4p~H)C!ZPaJFk}&4v?46&DZW4$X|BbOf<+n zP+)5bs)#_o)%K^0HacG(MMd>abU*^OLs?M4s-*LEQ-Y8>+JJ1wwL1L3ECzyzyAgao zWuN8XEMo-1my?{1$1W=fwZb-L(K!?duHdZdCIdua3rq5jZ7nW4NTlXC3Lcq6r($N& zVaKR1UD&e<<@*XE3kwK-(`nQR&!grsUAOYqVuCI!Ddua{ZX9<#NhuFhhy9BQpWW>~ zA%}?vs&)PV-v{JZMz6Rx8FFXCAEYFU*w$1}#dw=K2 z7uZ7_Gi3T3IjlT9zj{h4uNtry0704EuzurDlKeWH6c-=JX1H$nixNtluIv>)W@iuq z;w+E0+U#@)2q6wGZlA%~bj*%HGj=9MYd=&-_SDL8_dXNVp5eWDVq-~`JjKDm0T3|* z%-TE!O37%KH8&Hyg(09gGNO68gKN_&SoZ7a_!tNg7R>t%z~#kG8c!JpnZW|qMx#D`ZwkxqMFPF#@5~eN@5jPP# zs8a+$Uwz^IJg~DUV=qNG)X9XAP#iY~6y6{UAc8Vr1zv$b>kJ^Du;C;%`I5Q!!M|pU z6sJ;IK$(C$2^j70e(M}-D=S*6s+dp8)p|9Hnhn-gHZ~`Rhk)tc&0uM28sxqMM5=-4 z`K-B<3?`660h|H06f1jsduL}hEF>wi=?3tXRZTSbPnj6(^5eTPG zR#8a{E=WL8asW!Y^TkyAtUTl#l4|WyGa?2$&N?rB@i+|$K&fmhV(!pnw|tr_GTHS) zj`9_(YZ#ck$uW!^f6Y4;NAOuU@!R=HvCQ4VZt=8HNAs>!z;he|VIN$Qk-aJD#2nx0l|&Pj?;PZDd)-4G{@TpX_?OjO##U<5+?aIXCIF^Vq-I za_8Bv@b=h_Lo>2N)#*g8FR8ZpfY9S}a}mxq2GOXL?=~^$sP(0!g6G*vrWamq`Nrp- z|8`%&c7_z~&4;@sp@T}FuL7OMHAynYmm{(}ySrb|%8HA#ecrE3$8b^X%cRYs-e3q* zJzaOgyrX#%Sh2{#{Ft>hC^jG>EsZFM0_cgUBb!q4v5$zbg4ur@wa;l>aWM|Zl#t%u z-sZ(JExL-bGAj#bK*W7m!Qzc<~ zbpj$kQ5Sqtd=hLA;$P5%`{E3ueLof(LBy4JgOzcUq(Zi_zJ?^dibzNlMQW5AD z4I~KS^SQ#863&3rQ#?{NtXV{Kn4Z;c@6yW@v7$iBHgK$-7o&gQ4#X5!S6BP``cz7; zCbNWtc{X7|gGNjTlJXpQ-oQoV$hEq@o~cm=SopfNdR*#dY8(zUN7-ZHDe%#FSa>V) z8r3^)q-W^&5Z%Y$E-&XlabK=(ul>T>-uYbiexNT)IU$BWPmp`L?EIiBQWd1u>F%=k z%YxTN3?8o~Inddyn~vRe3o+7wqB&iV_@F}vmvg)9J6Xov)rn&6M?)MA z9=vwP$0a^Hiy$PL+o-R7%!K^aFAnYncaN?GOyN#;)!)X9P+<2@;jGdJ+ms(Vd=3Ev zs>G~*_2eB3A$OG-#2JcEJ2MOFs@u$^t_`B$^&{q6U)HkBhQtmP22}ie7N>(f(4CG zka%9$4$q%?Ysq7Ta0opZqU(6SI-;_-@y^d=On?MHlz9TbyZ&``!E1@)Xon zRb4i^{c|nGfGZWqu*wHuvg3pYZ~?a}yJ#s44MquYa{~8r5yu*lK6bbsB8Hf*+gA{h zU}4V*hPS;Nu{aPI!V;$^^sz*8WkZuPdhgAEC5Y0yfjpkP@>!Jug@nT9O@%5O4%9j^ zV3v4Z9dMsOSCX!k(2hzf+AC6^-Fxy$y@;|Cm3v2VsGyU=D}4FVwflee88|P%$iSKP zqBUUptM~8qwX~vs{n6ODHe$sR@lB=0$)T>5T70XQtvI8Z5^p=XWv*I|^sBYnTJh%J zFE7*Xv-$HRectbTYp#Cvx$K>3Bi6Qv#dBA!;&$qG zT@}y!bg!(KaV};@a`fV#Il)?8-I)*U{@vi7_+aa2-?~3X&)5D8uiqiov*VD3)`7GQ z^Zq^Q@8dVIt^9U$-AqRo$0bc)cwa4wzw`6tt~FQc+zroed!F;}#(|UR_v+u;ili=( zXtv^?!oo12L0P2J_*8k#%k?^SJn@S*dN@yB$awxj{F0!umwoL<-K(x0Kl7+hh%+l= z@kNil4+<=J*be7y59UmMH6^1-A?fOc2U&R*ojNhndrxhbI5zkA-uL@{i|zHecpy-A zcfpcrT-Si@CKbL?lOMd-$gci zBp4qUGVJ3$5Y3ze|^-T=Ta++Bd`W#aWu=jGh^3tLE!k~^5yAY zjZKoC0{bj$SFBjD&+5f|(b>mUg_kfh==t*e{r1AX?&}5fR+)QMVGSxL57(yuzxD51 z>f;@EUr+mVnQLm~{55;ue(Rd6(X_5Of5OC$|J(P={C&8%`>%}a=lTz^@51-h2KUZA zoYh(C|L|6)6_fwn@b&jqHb@$Co0eoea&@U|c#{9eA>^O={-0;xZofazL#}G#3MCFD z;4}jNU-4%;`3kK&kczt zQki<)f3Nx{S0w%Hb)V Date: Fri, 10 Jan 2025 10:39:18 +0100 Subject: [PATCH 222/232] StickyScrolling: Exceptions while opening Java editors from Search view The search view with "reuse editor" enabled sets new source code in the existing editor and causes a resize. In this call, it can happen that the sticky line number exceeds the amount of line in the new source code. In general this is not a problem since the sticky lines will be recalculated afterwards, but to avoid IllegalArgumentException it is checked for this case. Fixes #2678 --- .../stickyscroll/StickyScrollingControl.java | 21 +++++++++++++++++++ .../StickyScrollingControlTest.java | 19 +++++++++++++++++ 2 files changed, 40 insertions(+) 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 289f4d2caf4..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 @@ -407,6 +407,9 @@ private void addSourceViewerListeners() { controlListener= new ControlListener() { @Override public void controlResized(ControlEvent e) { + if (areStickyLinesOutDated(textWidget)) { + return; + } limitVisibleStickyLinesToTextWidgetHeight(textWidget); layoutStickyLines(); if (stickyScrollingHandler != null) { @@ -422,6 +425,24 @@ public void controlMoved(ControlEvent e) { 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) { int lineHeight= textWidget.getLineHeight() + textWidget.getLineSpacing(); int textWidgetHeight= textWidget.getBounds().height; 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 4b8e63506de..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 @@ -252,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 = """ From f9feca4e61784e5145a1ad77cb15102fae7b6f13 Mon Sep 17 00:00:00 2001 From: Heiko Klare Date: Mon, 6 Jan 2025 15:13:52 +0100 Subject: [PATCH 223/232] FindReplaceOverlay: improve error indication for find and replace inputs The find and replace input strings of the FindReplaceOverlay are temporarily colored red to indicate failures of find or replace operations, such as no matches being found for the input string or regular expressions being invalid. The behavior is currently inconsistent and partly unexpected. For example: - The field to be colored is selected by the one having focus rather than the one conforming to the current operation; so a failing replace operation will color the search input field if that one has focus - Whenever the replace input field shall be colored, the search input field is also colored - When a find operation following a successful replace fails (because there are not more matches), the replace field is erroneously colored With this change, the error feedback via coloring the find and replace input strings is streamlined based on the two following goals: - Only one of the input fields is colored at one point in time - Which of the fields is colored depends on whether a find or a replace operation failed - The coloring is cleared iff either any of the two input fields loses focus or another find/replace operation was performed --- .../overlay/FindReplaceOverlay.java | 73 ++++++++++--------- 1 file changed, 39 insertions(+), 34 deletions(-) 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 ff9e0ccbcc2..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 @@ -72,7 +72,6 @@ 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; @@ -149,6 +148,8 @@ private final class KeyboardShortcuts { private Color widgetBackgroundColor; private Color overlayBackgroundColor; private Color normalTextForegroundColor; + private Color errorTextForegroundColor; + private boolean positionAtTop = true; private ControlDecoration searchBarDecoration; private ContentAssistCommandAdapter contentAssistSearchField, contentAssistReplaceField; @@ -336,7 +337,7 @@ public Composite getContainerControl() { private void performReplaceAll() { BusyIndicator.showWhile(containerControl.getShell() != null ? containerControl.getShell().getDisplay() : Display.getCurrent(), findReplaceLogic::performReplaceAll); - evaluateFindReplaceStatus(); + evaluateStatusAfterReplace(); replaceBar.storeHistory(); searchBar.storeHistory(); } @@ -460,7 +461,7 @@ private void createContainerAndSearchControls(Composite parent) { if (insertedInTargetParent()) { parent = parent.getParent(); } - retrieveBackgroundColor(); + retrieveColors(); createMainContainer(parent); initializeSearchShortcutHandlers(); @@ -479,7 +480,7 @@ private void initializeSearchShortcutHandlers() { * 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(); widgetBackgroundColor = targetWidget.getBackground(); @@ -492,6 +493,7 @@ private void retrieveBackgroundColor() { textBarForRetrievingTheRightColor.dispose(); } overlayBackgroundColor = retrieveDefaultCompositeBackground(); + errorTextForegroundColor = JFaceColors.getErrorText(targetControl.getShell().getDisplay()); } private Color retrieveDefaultCompositeBackground() { @@ -652,8 +654,6 @@ private void createWholeWordsButton() { } private void createReplaceTools() { - Color warningColor = JFaceColors.getErrorText(containerControl.getShell().getDisplay()); - replaceTools = new AccessibleToolBar(replaceContainer); replaceTools.createToolItem(SWT.SEPARATOR); @@ -664,7 +664,7 @@ private void createReplaceTools() { .withToolTipText(FindReplaceMessages.FindReplaceOverlay_replaceButton_toolTip) .withOperation(() -> { if (getFindString().isEmpty()) { - showUserFeedback(warningColor, true); + applyErrorColor(replaceBar); return; } performSingleReplace(); @@ -675,7 +675,7 @@ private void createReplaceTools() { .withToolTipText(FindReplaceMessages.FindReplaceOverlay_replaceAllButton_toolTip) .withOperation(() -> { if (getFindString().isEmpty()) { - showUserFeedback(warningColor, true); + applyErrorColor(replaceBar); return; } performReplaceAll(); @@ -703,9 +703,8 @@ private void createSearchBar() { searchBar.selectAll(); searchBar.addModifyListener(e -> { wholeWordSearchButton.setEnabled(findReplaceLogic.isAvailable(SearchOptions.WHOLE_WORD)); - - showUserFeedback(normalTextForegroundColor, true); updateIncrementalSearch(); + decorate(); }); searchBar.addFocusListener(new FocusListener() { @Override @@ -714,21 +713,18 @@ public void focusGained(FocusEvent e) { } @Override public void focusLost(FocusEvent e) { - showUserFeedback(normalTextForegroundColor, false); + resetErrorColoring(); } }); searchBar.addFocusListener(targetActionActivationHandling); searchBar.setMessage(FindReplaceMessages.FindReplaceOverlay_searchBar_message); contentAssistSearchField = createContentAssistField(searchBar, true); - searchBar.addModifyListener(Event -> { - decorate(); - }); searchBar.setTabList(null); } private void updateIncrementalSearch() { findReplaceLogic.setFindString(searchBar.getText()); - evaluateFindReplaceStatus(); + evaluateStatusAfterFind(); } private void createReplaceBar() { @@ -742,12 +738,10 @@ private void createReplaceBar() { replaceBar.setMessage(FindReplaceMessages.FindReplaceOverlay_replaceBar_message); replaceBar.addModifyListener(e -> { findReplaceLogic.setReplaceString(replaceBar.getText()); + resetErrorColoring(); }); replaceBar.addFocusListener(targetActionActivationHandling); - replaceBar.addFocusListener(FocusListener.focusLostAdapter(e -> { - replaceBar.setForeground(normalTextForegroundColor); - searchBar.setForeground(normalTextForegroundColor); - })); + replaceBar.addFocusListener(FocusListener.focusLostAdapter(e -> resetErrorColoring())); contentAssistReplaceField = createContentAssistField(replaceBar, false); } @@ -978,8 +972,13 @@ private String getFindString() { } private void performSingleReplace() { - findReplaceLogic.performReplaceAndFind(); - evaluateFindReplaceStatus(); + if (findReplaceLogic.performSelectAndReplace()) { + findReplaceLogic.performSearch(); + evaluateStatusAfterFind(); + } else { + evaluateStatusAfterReplace(); + } + replaceBar.storeHistory(); searchBar.storeHistory(); } @@ -989,7 +988,7 @@ private void performSearch(boolean forward) { activateInFindReplacerIf(SearchOptions.FORWARD, forward); findReplaceLogic.performSearch(); activateInFindReplacerIf(SearchOptions.FORWARD, oldForwardSearchSetting); - evaluateFindReplaceStatus(); + evaluateStatusAfterFind(); searchBar.storeHistory(); } @@ -1008,22 +1007,28 @@ private void updateFromTargetSelection() { searchBar.setSelection(0, searchBar.getText().length()); } - private void evaluateFindReplaceStatus() { - Color warningColor = JFaceColors.getErrorText(containerControl.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); } } From 7308b62fde96c3feb7c9da886b9d1641984a1feb Mon Sep 17 00:00:00 2001 From: Lars Vogel Date: Mon, 13 Jan 2025 15:58:22 +0100 Subject: [PATCH 224/232] Remove dispose call for Colors in StickyScrollingHandler According to the Javadoc on Colors: * Colors do not need to be disposed, however to maintain compatibility * with older code, disposing a Color is not an error. --- .../texteditor/stickyscroll/StickyScrollingHandler.java | 2 -- 1 file changed, 2 deletions(-) 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 de457cf0ca0..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 @@ -122,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; From 323f82d7f50506a1056383cf531589299278dfd8 Mon Sep 17 00:00:00 2001 From: fedejeanne Date: Tue, 14 Jan 2025 09:18:31 +0100 Subject: [PATCH 225/232] Only evaluate expand condition once in AnstractTreeViewer No need to evaluate for every child since the condition applies to the parent item. --- .../src/org/eclipse/jface/viewers/AbstractTreeViewer.java | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) 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); } } } From 8ae1e8726f9dd767ce6e597e189f78a1ee99b9d6 Mon Sep 17 00:00:00 2001 From: Lars Vogel Date: Wed, 6 Nov 2024 11:31:39 +0100 Subject: [PATCH 226/232] Mark unused methods for removal in WorkbenchWindowAdvisor These methods are not used since the 3.x migration, time to mark them for deletion. --- .../org/eclipse/ui/application/WorkbenchWindowAdvisor.java | 4 ++-- .../eclipse/ui/tests/rcp/WorkbenchWindowConfigurerTest.java | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/application/WorkbenchWindowAdvisor.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/application/WorkbenchWindowAdvisor.java index 0d9d6f54bb4..5995b0f0ec4 100644 --- a/bundles/org.eclipse.ui.workbench/eclipseui/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/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); From 904bdd7b73abcaaf5e380385c93eed5ceb20db34 Mon Sep 17 00:00:00 2001 From: Eclipse Platform Bot Date: Tue, 7 Jan 2025 12:50:38 +0000 Subject: [PATCH 227/232] Version bump(s) for 4.35 stream --- tests/org.eclipse.ui.tests.rcp/META-INF/MANIFEST.MF | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 85c4154a3d8..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.500.qualifier +Bundle-Version: 3.6.600.qualifier Bundle-Vendor: %providerName Require-Bundle: org.eclipse.core.runtime, org.eclipse.ui, From 74efba4938ede473e42f4e5768b4db5a5210744f Mon Sep 17 00:00:00 2001 From: Heiko Klare Date: Mon, 13 Jan 2025 16:54:56 +0100 Subject: [PATCH 228/232] Correct activation of monitor-specific rescaling on Windows The activation of monitor-specific rescaling on Windows currently relies on the method Display#setRescalingAtRuntime(), which was found to not take the full intended effect. This change thus replaces the call to that method based on the value of the according experimental preference by setting the according system property to activate that behavior in a proper way. It also removes the obsolete activation of Edge when the experimental preference is set, as Edge has been enabled by default. --- .../org/eclipse/ui/internal/Workbench.java | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/Workbench.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/Workbench.java index 72f00f17625..82241789428 100644 --- a/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/Workbench.java +++ b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/Workbench.java @@ -298,6 +298,8 @@ public final class Workbench extends EventManager implements IWorkbench, org.ecl 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; @@ -586,7 +588,7 @@ public static int createAndRunWorkbench(final Display display, final WorkbenchAd int orientation = store.getInt(IPreferenceConstants.LAYOUT_DIRECTION); Window.setDefaultOrientation(orientation); } - setRescaleAtRuntimePropertyFromPreference(display); + setRescaleAtRuntimePropertyFromPreference(); if (obj instanceof E4Application) { E4Application e4app = (E4Application) obj; E4Workbench e4Workbench = e4app.createE4Workbench(getApplicationContext(), display); @@ -680,12 +682,15 @@ public void update() { return returnCode[0]; } - private static void setRescaleAtRuntimePropertyFromPreference(final Display display) { - boolean rescaleAtRuntime = PrefUtil.getAPIPreferenceStore() - .getBoolean(IWorkbenchPreferenceConstants.RESCALING_AT_RUNTIME); - if (rescaleAtRuntime) { - display.setRescalingAtRuntime(rescaleAtRuntime); - System.setProperty("org.eclipse.swt.browser.DefaultType", "edge"); //$NON-NLS-1$ //$NON-NLS-2$ + 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)); } } From f5f10d183a342831cfa1863232629486fe0a8171 Mon Sep 17 00:00:00 2001 From: Lars Vogel Date: Tue, 14 Jan 2025 17:50:28 +0100 Subject: [PATCH 229/232] Remove outdated preference setting from ZoomTestCase IWorkbenchPreferenceConstants.ENABLE_ANIMATIONS is not supported anymore. --- .../org/eclipse/ui/tests/zoom/ZoomTestCase.java | 3 --- 1 file changed, 3 deletions(-) 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 From 176f5030b1ed724274f88552b8bec14e43111832 Mon Sep 17 00:00:00 2001 From: Patrick Ziegler Date: Tue, 14 Jan 2025 21:33:17 +0100 Subject: [PATCH 230/232] Extract shared code of FilteredTrees to abstract base class This moves the duplicate code of the E3.x and E4.x based FilteredTree class and moves it into an AbstractFilteredViewerComposite class located in the JFace component. The base class is currently only implementing a tree-based filter, but is structured in such a way that it can easily be extended to also support e.g. table-based filters. Due to being unused, the following fields and methods have been marked as deprecated: - filterToolBar - clearButtonControl - updateToolbar(boolean) Contributes to https://github.com/eclipse-platform/eclipse.platform.ui/pull/2567 --- .../META-INF/MANIFEST.MF | 2 +- .../ui/dialogs/filteredtree/FilteredTree.java | 276 ++------------- .../AbstractFilteredViewerComposite.java | 325 ++++++++++++++++++ .../META-INF/MANIFEST.MF | 2 +- .../org/eclipse/ui/dialogs/FilteredTree.java | 319 ++--------------- 5 files changed, 383 insertions(+), 541 deletions(-) create mode 100644 bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/AbstractFilteredViewerComposite.java 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.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.ui.workbench/META-INF/MANIFEST.MF b/bundles/org.eclipse.ui.workbench/META-INF/MANIFEST.MF index e80a10825d7..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.134.100.qualifier +Bundle-Version: 3.135.0.qualifier Bundle-Activator: org.eclipse.ui.internal.WorkbenchPlugin Bundle-ActivationPolicy: lazy Bundle-Vendor: %providerName diff --git a/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dialogs/FilteredTree.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/dialogs/FilteredTree.java index 24e2d884217..f41a283ee63 100644 --- a/bundles/org.eclipse.ui.workbench/eclipseui/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 From bbc28cec64282012b829b2b33fb4b1d1c7e57d0d Mon Sep 17 00:00:00 2001 From: Lars Vogel Date: Mon, 13 Jan 2025 15:58:22 +0100 Subject: [PATCH 231/232] Mark long deprecated methods in AbstractUIPlugin for removal These methods are deprecated since a long time and should be marked for removal. This will enable us to delete them after the API deprecation period. --- .../eclipse/ui/plugin/AbstractUIPlugin.java | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/plugin/AbstractUIPlugin.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/plugin/AbstractUIPlugin.java index 114f08384fc..596df8c162e 100644 --- a/bundles/org.eclipse.ui.workbench/eclipseui/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 From 461b29dba173389c289934fe8563d2d283bffca6 Mon Sep 17 00:00:00 2001 From: Lars Vogel Date: Fri, 29 Nov 2024 01:01:30 +0100 Subject: [PATCH 232/232] Remove gradient from placeholder images in JFace The gradient placeholder is replace with just an empty image. --- bundles/org.eclipse.jface/icons/full/page.png | Bin 2081 -> 91 bytes .../org.eclipse.jface/icons/full/page@2x.png | Bin 3743 -> 123 bytes .../icons/full/title_banner.png | Bin 2156 -> 98 bytes .../icons/full/title_banner@2x.png | Bin 4187 -> 157 bytes 4 files changed, 0 insertions(+), 0 deletions(-) diff --git a/bundles/org.eclipse.jface/icons/full/page.png b/bundles/org.eclipse.jface/icons/full/page.png index 45d0453aaca5b8251e45392351984051d33749b6..a5d8e737766895fadbb08f04d21dabfd09f69f94 100644 GIT binary patch delta 62 zcmZ1|5IsTJfe? Jmvv4FO#mdS5a$2@ delta 2068 zcmV+v26_AJ; zO_U_HsV15J+3B>MX_CqG4|g&`>QJQ;UJEYBV|U>S`-FYKvdgk>SP73pXp{i%viI)Y zdzS@d>hvG_J9phe35m39tW5UKeCO^z{Iln?=lss_)Kh_Hf5ks~9P1 zJog98_EQ$yvFeZ2#0wvBTtTRh*~6=UUpcadDSu?mZwl?f9~O;-=G4q=V3puoFO>~P zQTKY@k*qyk^}yYjEse^^O|e#E)AaejZQvTb5vjxhMU@Z36k z#9u`C&cBMCdkPy}u?0d~LcYMBd`;vylz+>1BwvUhxms^O>MM_DPn(NK%fpDYD|~yp zHzFMnWdv5}`+jC;f8_i1!-7ALe)%kneDPy!cr{Bnf3haG${u{F`ff-L0JsDT{-_uj z<##scRgW?t@&%3^MVNhGnFQZoDt9Kc<>bNQCdVNrh2v1E_+DzM*uhjRupKTI;D-yK zC4;FAfbs8c@DM@~ASkG%U&?=oAQ!{e<gBTWDymS;x0Rsc%mU0OZ&XKz! zt2M-KzIGy}&Oq(QI;aG`nn?79pb$yk0$?8BaWOmlbb;*7b8M+&6$f^Q8w%UY@cCy& z%_E_o1B6GlTrdD}6T(r|Y>(in@m&poL#%hjqw3nJ{Rj%T15d!1mJg;_f*&rC<44#{ zfB4Zd(RfCwc>EY!HlE3m;8`3A$y6@FPu!5YUN06Crwaw+XG%oQHw!R(Hmax*&n~FH zcYZG7d_LE4;VRdD@oF8!C*Qxu9sTtRpCMQb3Ji7$j(8}D+cdVe1a^p}fbch%BGLF3 zZj4U2$T)egzbY3yn979q3uQvbg%YSpV82)-z%Ldy;O{Zj&z9uobv&4qUlK|)REv@scu)}#y*g>Cb)R5WU z=e`3`|45$kln)maClW zIW4Y@-$?B1`vX%Tvv0oM>If@=fs`$DZmWU0Lj*8HIwDbNm`GK1c`{T+`gmK{WR}w6 zKBerOdcDOoak|w&ok1xeSqJro%t*Z}43+?xe@8wDMx|!t zdH9tDRjKU3)ynA*w!*bxQ5=2*Qw|8&fPk;Tx7H}gS249KQedKXh_pnsP($t$>Kx3` zA<+{_0)sPIYM_&qon)%YL}j#hyR+05_emAtKxr&f@SZxQxef2zGXXIE#DQ)hm70k) z0@YM-4Zwi2c;oyy|80waf2o!ZhgC~P!)p|_S1~>824;LGnkAYI!dM-VkBxP`TlOrVEfTRnM^trRNU${@8)E3vt02n`m!LWg6*;dCYA>aTcA&cQy ztfe5q^zN`mo%0o`d2+j4{~%JKr*|oI&b@6gT&e+s+6uv2>B~xae=~VwuzUv?xtToJ zW}(uIJ(I8L0SZdnMV<(N@e>#{bI9O^QfsDPLdOc$Nrv+E0Kiwv(yMBtHeuF(gh?!( zaDmPh0Sg_a?wQ`D?w;7I?U{*b|J&sLjvgwZqi51v*JOek5HL`D{SRQ|Fr2o*VA|gA zIcDsgJdW~V34mE9e;5SBH+R5Qa9vFY>>l%hENlS^_#!s9bx-_UX7Fs&_dbX;^tyNJ zy6^9`4tin@00N;f%xezG{QLt3LD6jJnHxz&PMZH}ue%UMwpFjLQFDnB8T$V9-3GFiyU_7>-t}JFLy> z+154mAhLIGe|q=8=u8ZP!F2cGdtOf(7=4fXpnec`6=)@a`On?u2?2xt=OTci)rUjb zNpCUqd$w8sPDS;7>5fJ?24UxzU*CKnPdFIu7gH&wJ}Sc;0OKDp8o1pcAblfKQMZTO yd%QqAu?vx`R4|r-=`DS5+gdH&)(gc8g`y~Uf(MFdy=tx9)@|!hnE=VZLWmb-w5Ro^j)MY@ZynzVtE2J_`1iQ;yM}<~ql) z{WHB~EZbjC+9vq-@%Q$L;Lm^c(`?&}139;6eUsf9@g>(f|C`*7$gj_}MIYqbVh`lE z$I}(qRvi#@togdox*m40pluWS6+s7`P=X;<_gpI0`~pNFmD}=SDgfbM`NYdK1l*Rf z|32L|?ms-+1iCzY(m%3qPl0{TX`T9MZu_+Rmf1e-Z+?Bov4?+=W1saUr+x01=Q|=( z3-G9~c-F-SF-Pp-g7)QU1ud(-yU>yFE#^o}?}9UEdo{mjPk9Xx%^;OkfHSFzBGu3&y?a z;**}~qIq;`0rg61Y0FqRSscRfUj^eq3uyYt>zE1fib%scA~OIW84}x))8+QK(`B|* zIWjVVBX=i)pRZ-hR)D91d7c%wuk*(R0fP=YK|XLT`IuvQp1!w`*hi&_!IXjB3Io5v z#~muMO*mM1d&*Y=@PQAs+~CCma<~+q{SDtbKU3mbm?^TxWJx`-TsgixS5B_ZsUQ>B zIC4kgFAG6n3K1~q3I{qA*i(t(! zFsn=R=+otG<4%Irg#o0c2aw-tC;*dIY@3l;MnvRlosorlaxqrzj1wAN%h~t<6@Cvc z2p9wmI)Pk(Jk7EAo`);U5hd|52dpm;ks|<*K=BxgzyL6(X9G;Kq_zbGYCNjc=!q>d z*yF_pC!MeoUoNcd#pOYP>5I$I1STD`ZA>q2OU@`JlQTu+7B=w5w;#Vq?0{ur9lJ7% z?7Ly@wuVcXlsg*GNZ$2%DpI`(B;Aeb(a?;Yja_8%4YcKjl~|CkW}@EE`2 zqhtKmkI;v5s7)b0-!mMJh5qU`O?-U}N97LVNbD1ji*HW}CL*B>Opf&SEFQq5NY}Nn zROg5-1=C4sjWbS6qtXk@Py!}f;a;0nfv-O!$2VjviH%w1WHLuarsT=VEqU_JEu3kD zUt6ekuIDT8B)%HvN(Q)WE>t_Vo>x;_c}ikOzLMCPuW{}?uXOD$RC;!wS5a>jsHwgA zO6R-h-*UN692MFZ6EZ8fEk&H z=ycDqh`?2b4^|m?7s3IEX^wdC+8HIx)zE|L<|c`|AGOG&_Jxh zjO1#}U{AbgaIA%0FyKj;hS(_5xsrt%G6mC7TZ=02Z5Jw?JFyC4mq0_lDb$jCFtv9t zfao1Mb^ja#r=!4=VxFLUH39~mN0>y|OI0|Dzzfy+_OzVsk z*N}@V>h8osRM-?|=d#}drmW7jytLl6LS!P>h$`)C%S_Jo<(1B)GNX5+sM?h*(o5t1PlV^ zu}&jk41Srb^Ni)GyC!6-$tk%N&S^b~{cE2#Qh|XNvRoZld8D=lWpz}v)aZz*((!bELV7@gb8&7NH{lWVtx zt(trjCa-pZXKy7{uF0<(v6CD!=`Dr=0i))}t=Ylx<!_`o`p(yt zX7^5IT^C&izyqcN(*~R3UMi#K4Vm7xn{EUH!+?T-8FB}{>JHZ$_@deAa__hYf@GKj zb4qk`=1Glx7MRu|&H^}iQs;tvm3@&=N4$oqh!{-giN!Sd3Tc&n9hgQot1RyA>RR^> zHeGEOcrw8s>l&EU4R?32xFBE1Y5HJXshrMi-NbI99l{*ZR;gc|(<5dCp;0p!|ln?-hBe@lxuX2aymAB2|S6Js4 z>0Aqo40v>jmRuq>d6vR&T%=~#N|}M8;RrMq7+b zamT=SJhWH501wv+eSPN&Er0;xF(+Q@>C-qDxfi%d#2&&); ztxO0Q z1k4ZuCiULB1O90rmTx2`2aL&J0HdU4YQPjCHg(R^0zmZ5RFuBKy|}9B?oz{bZ@fPs z#sL}*z-TXZCFmPnn`*A!Nnu04AYg_BFzm_$ej~q90zd)l#56X+qZR-n;5Wn!snIh_ z238q}i1D)fwd%$@ODtdtsl9$TzJGNC05Tkbf%hx=MlXQHo8pfP0tNvS(!kJf#OfTQ z6{gPd#bD*}M`f^p!Bp<>vMM4%TkniCU+rFGvbbZ+G$P)3{~7@zY$FvIt=XMmyzJe` zz`}-r8Iiz1T!sQLShMd1`u!7Q_vC><2?j6{i#uFq0n^CkuE?6^?kHokC${DXZ(J`R zOtk|vl7UfHk!uVVPm-~TOzDdY0w!p{s1Yzh1IA+UJrCbQ5v$25fua&9FskOC0VE_1 zN!^X^XyZ?w*oK?lxP~@wT;nYO#jSw=LBQM(n99qJwT4UNW@8hT0z<%zY+(AVN1+4^ z=JP$vOe)0Whe5?Z%;cIbvHTofe#JY7g{1mN&l1ZG?=lFt)?$9hU}#wM_@oEJ#NC5Qb6a=xrJwG^UIUo;cjbO~AYg(9 zjG@V$$ijkvLBI?uFvSl64E+D;NObmzzlDjchMHl%h}RVRvBb-c^^hJXnrU`&nO>me@vfiYesQxGr+ zm?sWQMI%7vs&{TfYxknY+i*hZ4+;V%q=C8Y-GqQaz=SF={|BuSb(5jV6+{34002ov JPDHLkV1jui|K0!q diff --git a/bundles/org.eclipse.jface/icons/full/title_banner.png b/bundles/org.eclipse.jface/icons/full/title_banner.png index f6d82fa02014d83ec1d601f80cd727a225380cc4..3e905bae7986485f49e1e5cae51ba88be176cc9a 100644 GIT binary patch delta 69 zcmaDOkTgNro=2M6e+V;4L_t(|+U?nEP*Z0b2k^G5cB{5lTQ4Y59qrm8E(nxM5fnsP ztyMa8TidQ}cX!4wyI(r9)7kBIW-~kM?jo&hDcGh2A}Nr1N)nLdkQ<4)l0b++iLJvb zmxPmZ$w@-g>CAq~zAtW^n1+x*pq`|edA?_U^SuA}dEWEDe*-`Lf`0x7S!(~X(`;W4h+*}t_+6eT?mi{*dlk34+UdmQ_^(>3EMfB1BAGprAJR6)-%>4{ z%%~GgmedNJ`)fqb14)O)VzC}#)!SB|X}GcRuVIj2RrB!ewU_XM&pWY_^Pr=W4htex zHByhVxa1~?6sS~3;jgA^-HN-WSRt60dre@LNNtQJRVgBZ(!Q0K*1anfP2 zy0DcWw1MNs2Qd5}LItp@5qx`{#GcQQyNi+ziw$l!RvY%@U8D$DRmjw?#%`jJBPWWI z3Jd1azYzDDs!*g^u$oY3db5%)Z0ez(55{UpbgXLL(5kZ_mmpL$SZoQtr%g!|CKVRk z+5Ulyf36Q8MT5nW;Tg>UDygtSyD1thju_8qQP2fRgT-R0mwf~RJRDLaERJ{*K;Z>R zgLMupy0djtB&-W6=Wf0V&rb?0c+;I1Ppqx#jEocxt5HSmLbR^Dq`+dcEzAGid1K?J z5GqEjT9nxFmBIB~Qeaif@KtQVcnXAy73;HZf9JM#HJ00|b><~B7JP`S5sf__K#CRX zI&{zm!TTzdUZ3+h!EmphQ_e`fA z%Z)eICjw__t%#_oZKqzY;X6*$v`xKnmOuIKj}zow*vjC1nh(|m5a=Qul@lEn9TBTh ze@c~p-eEt&77>;80{rzl0d}gc-T6+f!13-UUr+s}=HldU&+*59x8zW@DE(L@q-e0} zK~AAY&))fBaiwH&gM>K56=9W)66b48V(iynh#aTB5Mih4h0eF@gwA( zG*EM4b!hNC(q3W%vnORe@V`%L(s4G?Of zSRm`tBnD5`Tv&+4RVGkT#{^pMiHj=wH3UH2_gHL;e>qn|ZVEsx6iaBpGhkMQf5Yn3 zx{KP4#0yMQx4;7Dr0%l=peEg0UbH06QQyxL@ir z`(6(reG}wt5eW_0%!c?5RY}zDh=7 z-2)XTEJRQ3l7p;L4A2EKllPFkf1f%gHMx$USSad$m@TDJ?n1=@i>Gj>$$DM+ z>i%2h>OtR8*?{k5g$X~-XslXv^oLLj#NtS>rxYNQlmqUg$^qZeguuER=AlsY#Nw*Q zwjp5f1Y<&p%0j)AFjx=@nGGsNEVcqm6RI4U!plUV&_EO_`^XoU602V5e|US*u;3F5 z*yuO%XM>6os{wVSc4(dH9ldyd7eIm~w^I8xSEi371QuLjcrttggjxtztA>2~5}3YG z6I~F1f~6dyUrZP*q0;w60BSy1@Rk!9$ShQk7eJ_BESc3)qPgNek`P!Twde6*s93Pz zfGO<7o|X2y@=z0i3WKE?fAm%)1QrPM)uB+)Vts{9?hu=(9GS(H4`-)vSYk6-+&esd znDJO#wg2bgpytAA0Rb-6J9o=KfX`F}EVb2D9t&32Lb1?Az=Ag)oTXyL0!Mb6+DzrD z0FufQ8LQhw?$Zyu4>KOC*$e_*A0BEpEYwP;_ke7gfrV~~J+Cf)dELhS3cd>q$Jj_@u zICu&TH#bCs)!gISq6Ek8^2qdacc5a!(%9e;TpFxq02OyEv2J4RJy5e?b!h0V@Yopu zlwlrN-DbMbI0BC#e?zg*QUAl8p-^G4E@`~mjkeo+15oq9x;*47HjYd)6AOOh>jVq( zTv$@$^iKUZ-rT+*sQF-NhFoQg#X=O<*FdO9SgL;CF7tQZT=RFg7lhRf22sN|-U>!y z!S8$mEtL`pOKYRkA(RzBEfh-$)*I8e48=l>_H_ZMP%Omgf7)WSxc69RIx0R``aw_W zQed^p@RM=HvRM4fgQ0@41SUFFH{!{>gA_lk-eGS!BeBFf@7l0fnyIb2Yo1K&^#D?w zu=Drdmz+eVChFZ zrHsUqsL4&Ce^5hL-5CL>#lX^8iE_qafgA9V(5|vg+}u4J1Ql;A1=t7mSG|WAhZP#^ zmTSIeu8!Z%UQDc>KKgkR)3D%b6MO{K1JgSp)M8`lhup=C!-DTs0Vuug`!w75fA=m0 zme%Uo&pa$Oxf()&+c0(H#;wc%)M8`lu6PbG59|NyS&en{X8P4}Z}w7Q8HQYCjKdNd z@C{(=-*E?O>9CAe*TJw@w)+@M)<GIlF#sj+5uLZ)F^CvK+OreLW5gf$n|{{Rmd Vxa%ngsJ{RJ002ovPDHLkV1nSJ8ngfa 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 866e2ea8373ad7f92e3ebf0a9f51e774e5c6143a..43860165917fece343dd1f012d61ad0d94ef8d41 100644 GIT binary patch literal 157 zcmeAS@N?(olHy`uVBq!ia0vp^(}1{zgAGU)$zLi0QYoG;jv*CsZx0$W0(plPeD%-e gkzW90QVldLXEgoHz&MkudmqS5Pgg&ebxsLQ011s1Bme*a delta 4191 zcmW+%c_5VS*S5`IEZJtrPARjbkVy6=Wy#3Qcu>ap*(y<%DD>bRyjd#@dhNnw1`i@j z$&$o`vPPsrWXU?RRKDrE|2^lr&wZV9UFXi_{-}Ka5Gba4-olg+HoiQ$=a?4S#I-sy za!GS+h^++w9sp8Yvag zlVbU0o9&pI>Tokuh!O1P`m+-Z*l*MZ4daEC06t zRKPFkuGBP*Afvmx9#hYaJ=sQ)yG88m)WG<=fxAVNHKqNZBM(8AtlJLRawcwH z*my_BjVz@&w-LJhL4IVkPo@DISa4_F3cyG49CvMA|i!Sjy zx>jC*8asEFwEI(aI@PFq==iR7?t?$tD_a|4pG+ci>|W=iPae&CB4f=`A6(%l2neMv z>gD!X4c2y-8KH-c2bw>UPc!}fq+lN=`<9j@i2q>%Xr_KYj`ly`oN96Xr#W;23VubyoEHK@N~JiN9;eN{ z((EIx?ZXD6*9A!_cVV7SSamc0{}!~Vijgc70N=YkY>^>bNGlQ4khT-TZ~ z4IVTiO}N|I^UZZ+?mQE{qdItjiu~W6x_Y=jp^cj1dM%l~Fhg8{VaA-9y7Do$sFhJZ-pa2gArfif1{!`g%!f3+!cmmYps&*O3D@jRRp; zzV^5rP9KX5?Rv9HyoH4D$Wh1hv74LmkcUU?=bZl>HY0PY=seN0Jp_+%k9!}QcqtSb z0)Y$N!HUa;Dl-8f_)hkAj39P0wkJXf*`Ba~%Wxa``F7`Pv{!V|Iud0ImWXWer3}?5 zP%PP7m%y#J06=0M^BZY`Xso7k&G?nn|Y^(>D67+M0dt(hdu`+Gopvetl9dBGCmc-a7ag-KV&y*JI;Fre4fkA&3mZwtU*PhMk@xDw% z6Ap3~N(}=}gC$@9C=gtXA0a%$yM7Q}ycnx;EKxc2($|CJ{&HEPkjC-NyGKS>7vEZU zR2?UMH;!t+-`&%V!jw{G*XT<9a02A+wb30`*pv6>6mU8Mvm99W#aAQWU`MBa+f6hz z!Z?w!PehHbVx`qN!nh~&(u()WfH`dOQO|aQ5HX7~J1VpF4IIuAl@@q1eVeDFd8ck> zkLqK}6{G#MnK?~f@1Bc^y;=_mpzA90@_0I6*s4#^@n>%PE~XXVd(F7ni2)X+ zU^Ev&fYo)V_~=XdPZery7924*@&qEuc50e}SbM)u8HcnKFzNU%gylEKSoUkO)Vl{q zADaqtRD}ayR{Gq@R~Oqn-YcY4ZbE6h8eOJ&orh2u#}>)WM(}mS>xpcQ+8qAoXeqJq z;wyZ*KT(dJe~9TUUkC*#+TM*yI0j*e#fyt8J`8-Ts^_=Mvm&J(NDtOMt!nn<#RqFI zF3L*rwIkZmO)oFpDE8pRsYjoH!4+sjG#6EQqf4MlT}}h0uEplvm|%=Ke>-AbzfDp~ z&b`sPVB#q{3)1tzRMb4scS9?MFJf|Yxrl1*h+Z_k-uMi%{6WMRZYd7z>z0;9HRG$r zP!ljjdel{Kp#9dOsD7=&SC-w;*zxyZT13Wg5o#x#fTI$hobdC@;zp6ZKdIr9<;BZ! zC)M}Pizg!})q+TtJ91d&vdA6*x~emSiXM1wHROE;bMbxFJZJdWx0&5e7OxwW3OvMd zz8|iA^gC`J*IA~Wj<;M!)?MuClx5w!qc4WS{`j4fYM1>4fHUv~WE-Eye4sAQlt1Ir zsJFf3mFr!y<4aYEI&+MB2DVb{=%=4$!;~2SO@n6>Qn7`Hxw* zYzIPqX3--z_1Y62+jgn~t9|8_gEhp*bxWD=4q6Ww-LW0fNq|(f9IN?A=&4^tPdjd! zJTCFYPt(OvLX_LNe*n197D$|Bm-d>Ku%V|xGj%r!0*M*Wud_%vkexh(;j%nui$1Y@ zK4j>cK;kTfP%BRSW!9<8WM1pQVv!@sM8veHe;OKQHgMHQq5^vDV5x^|*u$pJ|F-Jn zVq$+4&QfDsLMu8Oa;qMjqPrZ1>+n}JI3->{)~@nGr=trHDj-f;{mwYULAIVpJ+y(M zQ=grxibHj%zN&{sCD=jpOO2?!>adt~Dsj}~+_fL_I|ti6(73P*OJ_UbfPD5BnBv4T znt7(wY&H(|0{J&~=MvZ>Nz|jXEfiez7$=zPeltrB=?aEq_31A-ev_vf+;u`viyq>XC}K?w zY8N7q%z8Zs+ zeB0M}Iob&xN?RzwZj>31AXPk?c=y5k!;z5UM=&P54o!UjzcUFCz$26gwo2Vgy4g~M zfaA>k5~ZJwNphzXtgOV`b?RNW4&hL3n4uJnb^c*L%9_-WzB7Nuk{R+aV6b!Js$=So zdb@`p&Z)L?^#HK|Qnu-KSvhPQg;2#g%Vog-ip*X7Mc>hc*&(eX?l)cObv2?^HP5em zx~jXkC2&)!xln#1LSTV2KS6~`RIRNPTlA}X(|op`yByytQTOO)1LxB{(GlZRAW1jl zOY}We>A!UAa3elejK=H;6yxAWEXYVR;A9fp4pbV$tkn1kso@^-0M<~NrD$tJt6yn86G88*k z9$t_->k{Tx_V7Ogyry7cT(umYL%JxU;h(2QoPPj%6QvkHt7Fx=4|IF;F#_Yc?$p(?s(YknQ9-~ z;{-q#@VCY#^$qaVf~W`t|A_E=9#$+y!hN`24+TfqF!y{STvsMv-8{EMRUoF|A3kie*e{)7iy4Ad?|E*P}z7*J-u z>xl8uZ1KeA9W8H(cd+Ea%~$nR3&~JBhdG85 z%!o+}_}!JuC;eD}Iy`Z0EEST8nPnw#o6)N)=YxwA@W6s1%aqzFh9f_^WilMJ(T6q6 zyRRxtlQBxSE;a*f+a6}oY+e5lXtT>xW2Yu%8vc{&h8|z9Cy2Crz)=Qg^3bkq(Uj{T zAK`(h&HL*glm8ajQMvcT>?c^fI7wGkAlZ}|icmCRHvYhpNCq>~Gx=!wx%iUhkR>ZX zxb>00EH%}aEjnS7gaY0*Fv8{e#ZkP_^JA72o~7lNnI{es4|hEDtw0MTssN5JBw_`{ zMi7pL37)_SaaCNL``St4OWK>8pz#FLN(g5;IsF&pQo0z7{x&{(IvHZ z5i-R0b`{}K7=21xS>Ugj;Y5fhX7=up;`!e`5i6~euYBWSEC*^QV38UEP8+qjtXd#* zA%X&pS0IraSS>Q$Tb>{P^d)FMOF91&NXHln~*R7kr!**N!;C Z+~+6i{@4ir$>#cd&Rbrvs5Enr`9GuT#s&ZY

+ 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. +