diff --git a/bundles/org.eclipse.core.commands/src/org/eclipse/core/commands/operations/TriggeredOperations.java b/bundles/org.eclipse.core.commands/src/org/eclipse/core/commands/operations/TriggeredOperations.java index a0635e90554..bfbbee0080d 100644 --- a/bundles/org.eclipse.core.commands/src/org/eclipse/core/commands/operations/TriggeredOperations.java +++ b/bundles/org.eclipse.core.commands/src/org/eclipse/core/commands/operations/TriggeredOperations.java @@ -295,10 +295,11 @@ private void removeAllChildren() { } /** - * Return the operation that triggered the other operations in this - * composite. + * Return the operation that triggered the other operations in this composite. * - * @return the IUndoableOperation that triggered the other children. + * @return the IUndoableOperation that triggered the other children or + * null if the triggeringOperation was removed + * @see TriggeredOperations#remove(IUndoableOperation) */ public IUndoableOperation getTriggeringOperation() { return triggeringOperation; 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 1902ea19495..d1349e8e07e 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.400.qualifier +Bundle-Version: 1.5.500.qualifier Bundle-Name: %pluginName Bundle-Vendor: %providerName Bundle-Localization: plugin diff --git a/bundles/org.eclipse.e4.ui.workbench.addons.swt/src/org/eclipse/e4/ui/workbench/addons/minmax/MinMaxAddonUtil.java b/bundles/org.eclipse.e4.ui.workbench.addons.swt/src/org/eclipse/e4/ui/workbench/addons/minmax/MinMaxAddonUtil.java index 372ba2e7d52..d667dc54bec 100644 --- a/bundles/org.eclipse.e4.ui.workbench.addons.swt/src/org/eclipse/e4/ui/workbench/addons/minmax/MinMaxAddonUtil.java +++ b/bundles/org.eclipse.e4.ui.workbench.addons.swt/src/org/eclipse/e4/ui/workbench/addons/minmax/MinMaxAddonUtil.java @@ -347,7 +347,7 @@ public static MWindow getWindowFor(MUIElement element) { // null since it's not in the 'children' hierarchy while (parent != null && !(parent instanceof MWindow)) { if (parent.getTags().contains(MIN_MAXIMIZEABLE_CHILDREN_AREA_TAG) && parent instanceof MArea) { - parent = ((MArea) parent).getCurSharedRef(); + parent = parent.getCurSharedRef(); } else { parent = parent.getParent(); } diff --git a/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/HandledContributionItem.java b/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/HandledContributionItem.java index 104db0fcfa2..ebd8a28e549 100644 --- a/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/HandledContributionItem.java +++ b/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/HandledContributionItem.java @@ -339,7 +339,7 @@ private String getToolTipText(boolean attachKeybinding) { private String legacyActionLabelSupport(String text, ParameterizedCommand command) { - return java.util.Optional.of(command).map(ParameterizedCommand::getCommand).map(Command::getHandler) + return java.util.Optional.ofNullable(command).map(ParameterizedCommand::getCommand).map(Command::getHandler) .map(IHandler::getHandlerLabel).filter(Objects::nonNull).orElse(text); } diff --git a/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/SashLayout.java b/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/SashLayout.java index 36e2da08d82..4833b766d94 100644 --- a/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/SashLayout.java +++ b/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/SashLayout.java @@ -163,7 +163,7 @@ protected void layout(Composite composite, boolean flushCache) { Rectangle bounds = composite.getBounds(); if (composite instanceof Shell) - bounds = ((Shell) composite).getClientArea(); + bounds = composite.getClientArea(); else { bounds.x = 0; bounds.y = 0; 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 fef5c44318d..f4f1df6ffe7 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.400.qualifier +Bundle-Version: 1.15.500.qualifier Bundle-Name: %pluginName Bundle-Vendor: %providerName Bundle-Localization: plugin diff --git a/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/internal/LocaleChangeServiceImpl.java b/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/internal/LocaleChangeServiceImpl.java index 1c0ca43ce0b..d8f814bf027 100644 --- a/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/internal/LocaleChangeServiceImpl.java +++ b/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/internal/LocaleChangeServiceImpl.java @@ -25,7 +25,6 @@ import org.eclipse.e4.core.services.translation.TranslationService; import org.eclipse.e4.ui.model.application.MApplication; import org.eclipse.e4.ui.model.application.ui.MElementContainer; -import org.eclipse.e4.ui.model.application.ui.MLocalizable; import org.eclipse.e4.ui.model.application.ui.MUIElement; import org.eclipse.e4.ui.model.application.ui.advanced.MPerspective; import org.eclipse.e4.ui.model.application.ui.basic.MPart; @@ -142,7 +141,7 @@ protected void updateLocalization(List children) { } } - ((MLocalizable) element).updateLocalization(); + element.updateLocalization(); } } 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 60f4214018f..09464aef653 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 @@ -13,9 +13,6 @@ */ package org.eclipse.jface.text.source.inlined; -import org.eclipse.jface.text.ITextViewer; -import org.eclipse.jface.text.source.Annotation; -import org.eclipse.jface.text.source.AnnotationPainter.IDrawingStrategy; import org.eclipse.swt.SWT; import org.eclipse.swt.custom.StyleRange; import org.eclipse.swt.custom.StyledText; @@ -27,6 +24,10 @@ import org.eclipse.swt.graphics.Point; import org.eclipse.swt.graphics.Rectangle; +import org.eclipse.jface.text.ITextViewer; +import org.eclipse.jface.text.source.Annotation; +import org.eclipse.jface.text.source.AnnotationPainter.IDrawingStrategy; + /** * {@link IDrawingStrategy} implementation to render {@link AbstractInlinedAnnotation}. * @@ -115,7 +116,7 @@ private boolean match(Font annotationFont, StyledText widget) { } int widgetFontHeight = widget.getFont().getFontData()[0].getHeight(); int annotationFontHeight = annotationFont.getFontData()[0].getHeight(); - return annotationFontHeight == widgetFontHeight; + return annotationFontHeight == widgetFontHeight; } /** @@ -201,7 +202,7 @@ 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.isEndOfLine(widgetOffset, textWidget)) { + if (annotation.isEmptyLine(widgetOffset, textWidget)) { drawAfterLine(annotation, gc, textWidget, widgetOffset, length, color); } else if (LineContentAnnotation.drawRightToPreviousChar(widgetOffset, textWidget)) { drawAsRightOfPreviousCharacter(annotation, gc, textWidget, widgetOffset, length, color); 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 e0fbe501e5e..f451206f0d5 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 @@ -13,11 +13,6 @@ */ package org.eclipse.jface.text.source.inlined; -import org.eclipse.jface.text.ITextViewer; -import org.eclipse.jface.text.ITextViewerExtension5; -import org.eclipse.jface.text.Position; -import org.eclipse.jface.text.TextPresentation; -import org.eclipse.jface.text.source.ISourceViewer; import org.eclipse.swt.custom.StyleRange; import org.eclipse.swt.custom.StyledText; import org.eclipse.swt.graphics.Color; @@ -25,6 +20,12 @@ import org.eclipse.swt.graphics.GC; import org.eclipse.swt.graphics.GlyphMetrics; +import org.eclipse.jface.text.ITextViewer; +import org.eclipse.jface.text.ITextViewerExtension5; +import org.eclipse.jface.text.Position; +import org.eclipse.jface.text.TextPresentation; +import org.eclipse.jface.text.source.ISourceViewer; + /** * Inlined annotation which is drawn in the line content and which takes some place with a given * width. @@ -162,14 +163,12 @@ static boolean drawRightToPreviousChar(int widgetOffset, StyledText textWidget) textWidget.getLineAtOffset(widgetOffset) == textWidget.getLineAtOffset(widgetOffset - 1); } - boolean isEndOfLine(int widgetOffset, StyledText text) { + boolean isEmptyLine(int widgetOffset, StyledText text) { if (text.getCharCount() <= widgetOffset) { // Assuming widgetOffset >= 0 return true; } int line= text.getLineAtOffset(widgetOffset); - int startOfLine= text.getOffsetAtLine(line); - int offsetInLine= widgetOffset - startOfLine; - return offsetInLine >= text.getLine(line).length(); + String lineStr= text.getLine(line); + return lineStr.length() == 0; } - } diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/util/ConfigureColumns.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/util/ConfigureColumns.java index 2cbe746f63b..9b3ef42694a 100644 --- a/bundles/org.eclipse.jface/src/org/eclipse/jface/util/ConfigureColumns.java +++ b/bundles/org.eclipse.jface/src/org/eclipse/jface/util/ConfigureColumns.java @@ -172,9 +172,9 @@ private boolean createColumnObjects() { private Image getColumnImage(Item item) { if (item instanceof TableColumn) { - return ((TableColumn) item).getImage(); + return item.getImage(); } else if (item instanceof TreeColumn) { - return ((TreeColumn) item).getImage(); + return item.getImage(); } return null; } @@ -301,12 +301,12 @@ private void createLabel(final Composite composite, String string) { private String getColumnName(Item item) { String result = ""; //$NON-NLS-1$ if (item instanceof TableColumn) { - result = ((TableColumn) item).getText(); + result = item.getText(); if (result.trim().isEmpty()) { result = ((TableColumn) item).getToolTipText(); } } else if (item instanceof TreeColumn) { - result = ((TreeColumn) item).getText(); + result = item.getText(); if (result.trim().isEmpty()) { result = ((TreeColumn) item).getToolTipText(); } 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 b4ad4bb24f9..49d207da620 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.400.qualifier +Bundle-Version: 3.14.500.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/src/org/eclipse/ltk/core/refactoring/participants/ProcessorBasedRefactoring.java b/bundles/org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/core/refactoring/participants/ProcessorBasedRefactoring.java index 15e9b34cb96..aca29f94def 100644 --- a/bundles/org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/core/refactoring/participants/ProcessorBasedRefactoring.java +++ b/bundles/org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/core/refactoring/participants/ProcessorBasedRefactoring.java @@ -430,7 +430,7 @@ private static void disableParticipant(final RefactoringParticipant participant, private void addToTextChangeMap(Change change) { if (change instanceof TextChange) { - Object element= ((TextChange) change).getModifiedElement(); + Object element= change.getModifiedElement(); if (element != null) { fTextChangeMap.put(element, (TextChange) change); } diff --git a/bundles/org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/internal/core/refactoring/UndoManager2.java b/bundles/org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/internal/core/refactoring/UndoManager2.java index afb1d5ed9ee..3c34e3fba6f 100644 --- a/bundles/org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/internal/core/refactoring/UndoManager2.java +++ b/bundles/org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/internal/core/refactoring/UndoManager2.java @@ -173,9 +173,10 @@ public void changePerformed(Change change, boolean successful) { @Override public void addUndo(String name, Change change) { if (fActiveOperation != null) { - UndoableOperation2ChangeAdapter operation= (UndoableOperation2ChangeAdapter)fActiveOperation.getTriggeringOperation(); - operation.setUndoChange(change); - operation.setLabel(name); + if (fActiveOperation.getTriggeringOperation() instanceof UndoableOperation2ChangeAdapter operation) { + operation.setUndoChange(change); + operation.setLabel(name); + } fOperationHistory.add(fActiveOperation); fActiveOperation= null; } diff --git a/bundles/org.eclipse.search/META-INF/MANIFEST.MF b/bundles/org.eclipse.search/META-INF/MANIFEST.MF index 8973a63ae63..f49bba72f71 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.16.200.qualifier +Bundle-Version: 3.16.300.qualifier Bundle-Activator: org.eclipse.search.internal.ui.SearchPlugin Bundle-ActivationPolicy: lazy Bundle-Vendor: %providerName diff --git a/bundles/org.eclipse.search/search/org/eclipse/search/internal/ui/SearchPageDescriptor.java b/bundles/org.eclipse.search/search/org/eclipse/search/internal/ui/SearchPageDescriptor.java index f7bc43ad3ae..8bc61bf9397 100644 --- a/bundles/org.eclipse.search/search/org/eclipse/search/internal/ui/SearchPageDescriptor.java +++ b/bundles/org.eclipse.search/search/org/eclipse/search/internal/ui/SearchPageDescriptor.java @@ -34,7 +34,6 @@ import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.Platform; -import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IResource; import org.eclipse.jface.dialogs.IDialogSettings; @@ -336,7 +335,7 @@ public int computeScore(Object element) { IResource resource= ((IAdaptable)element).getAdapter(IResource.class); if (resource != null && resource.getType() == IResource.FILE) { - String extension= ((IFile)resource).getFileExtension(); + String extension= resource.getFileExtension(); if (extension != null) score= Math.max(score, getScoreForFileExtension(extension)); } diff --git a/bundles/org.eclipse.ui.editors/src/org/eclipse/ui/internal/texteditor/LineNumberColumn.java b/bundles/org.eclipse.ui.editors/src/org/eclipse/ui/internal/texteditor/LineNumberColumn.java index 74afbe2a0fd..d8aa52f331b 100644 --- a/bundles/org.eclipse.ui.editors/src/org/eclipse/ui/internal/texteditor/LineNumberColumn.java +++ b/bundles/org.eclipse.ui.editors/src/org/eclipse/ui/internal/texteditor/LineNumberColumn.java @@ -530,7 +530,7 @@ private boolean ensureQuickDiffProvider(String diffProviderId) { modelExtension.addAnnotationModel(IChangeRulerColumn.QUICK_DIFF_MODEL_ID, newDiffer); if (fDelegate instanceof IChangeRulerColumn) - ((IChangeRulerColumn) fDelegate).setModel(annotationModel); // picks up the new model attachment + fDelegate.setModel(annotationModel); // picks up the new model attachment return true; } @@ -543,7 +543,7 @@ private boolean ensureQuickDiffProvider(String diffProviderId) { private void installChangeRulerModel(IVerticalRulerColumn column) { if (column instanceof IChangeRulerColumn) { IAnnotationModel model= getAnnotationModelWithDiffer(); - ((IChangeRulerColumn) column).setModel(model); + column.setModel(model); if (model != null) { ISourceViewer viewer= fViewer; if (viewer != null && viewer.getAnnotationModel() == null && column.getControl() != null) @@ -559,7 +559,7 @@ private void installChangeRulerModel(IVerticalRulerColumn column) { */ private void uninstallChangeRulerModel(IVerticalRulerColumn column) { if (column instanceof IChangeRulerColumn) - ((IChangeRulerColumn) column).setModel(null); + column.setModel(null); IAnnotationModel model= getDiffer(); if (model instanceof ILineDifferExtension) ((ILineDifferExtension) model).suspend(); diff --git a/bundles/org.eclipse.ui.editors/src/org/eclipse/ui/texteditor/AddMarkerAction.java b/bundles/org.eclipse.ui.editors/src/org/eclipse/ui/texteditor/AddMarkerAction.java index a593ec97694..76eeb3e1474 100644 --- a/bundles/org.eclipse.ui.editors/src/org/eclipse/ui/texteditor/AddMarkerAction.java +++ b/bundles/org.eclipse.ui.editors/src/org/eclipse/ui/texteditor/AddMarkerAction.java @@ -331,7 +331,7 @@ protected IResource getResource() { ITextEditor editor= getTextEditor(); if (editor != null) { IEditorInput input= editor.getEditorInput(); - return ((IAdaptable) input).getAdapter(IResource.class); + return input.getAdapter(IResource.class); } return null; } diff --git a/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/CloseUnrelatedProjectsAction.java b/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/CloseUnrelatedProjectsAction.java index 3d8c3ad6252..6bb045a4647 100644 --- a/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/CloseUnrelatedProjectsAction.java +++ b/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/CloseUnrelatedProjectsAction.java @@ -162,7 +162,7 @@ private boolean promptForConfirmation() { IResource firstSelected = selection.get(0); String projectName = null; if (firstSelected instanceof IProject) { - projectName = ((IProject) firstSelected).getName(); + projectName = firstSelected.getName(); } message = NLS.bind(IDEWorkbenchMessages.CloseUnrelatedProjectsAction_confirmMsg1, projectName); } else // if more then one project is selected then print there number diff --git a/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/CopyResourceAction.java b/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/CopyResourceAction.java index 4132c0acd2d..59204d631a1 100644 --- a/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/CopyResourceAction.java +++ b/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/CopyResourceAction.java @@ -288,7 +288,7 @@ protected boolean updateSelection(IStructuredSelection selection) { if (selectedResources.isEmpty()) { return false; } - IContainer firstParent = ((IResource) selectedResources.get(0)) + IContainer firstParent = selectedResources.get(0) .getParent(); if (firstParent == null) { return false; 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 e9c2740182b..4f37678762d 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.300.qualifier +Bundle-Version: 3.9.400.qualifier Bundle-Activator: org.eclipse.ui.internal.navigator.resources.plugin.WorkbenchNavigatorPlugin Bundle-Vendor: %Plugin.providerName Bundle-Localization: plugin diff --git a/bundles/org.eclipse.ui.navigator.resources/src/org/eclipse/ui/internal/navigator/resources/actions/PasteAction.java b/bundles/org.eclipse.ui.navigator.resources/src/org/eclipse/ui/internal/navigator/resources/actions/PasteAction.java index 4117fffbf68..8674abdf5c2 100644 --- a/bundles/org.eclipse.ui.navigator.resources/src/org/eclipse/ui/internal/navigator/resources/actions/PasteAction.java +++ b/bundles/org.eclipse.ui.navigator.resources/src/org/eclipse/ui/internal/navigator/resources/actions/PasteAction.java @@ -187,7 +187,7 @@ private IContainer getContainer(IResource[] clipboardContent) { } if (selection.get(0) instanceof IFile) { - return ((IFile) selection.get(0)).getParent(); + return selection.get(0).getParent(); } return (IContainer) selection.get(0); } 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 f860ce34324..a8fcea10af4 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 @@ -145,8 +145,10 @@ public void fillContextMenu(IMenuManager menu) { buildAction.selectionChanged(selection); menu.appendToGroup(ICommonMenuConstants.GROUP_BUILD, buildAction); } - // To refresh, even if one project is open - if (hasOpenProjects) { + // 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) { refreshAction.selectionChanged(selection); menu.appendToGroup(ICommonMenuConstants.GROUP_BUILD, refreshAction); } diff --git a/bundles/org.eclipse.ui.navigator/META-INF/MANIFEST.MF b/bundles/org.eclipse.ui.navigator/META-INF/MANIFEST.MF index 25dfe3706e2..69d1172c38e 100644 --- a/bundles/org.eclipse.ui.navigator/META-INF/MANIFEST.MF +++ b/bundles/org.eclipse.ui.navigator/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; singleton:=true -Bundle-Version: 3.12.400.qualifier +Bundle-Version: 3.12.500.qualifier Bundle-Activator: org.eclipse.ui.internal.navigator.NavigatorPlugin Bundle-Vendor: %Plugin.providerName Bundle-Localization: plugin diff --git a/bundles/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/NavigatorContentServiceContentProvider.java b/bundles/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/NavigatorContentServiceContentProvider.java index 81c8b35321d..af400de3305 100644 --- a/bundles/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/NavigatorContentServiceContentProvider.java +++ b/bundles/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/NavigatorContentServiceContentProvider.java @@ -441,7 +441,7 @@ private boolean callNormalHasChildren(Object anElementOrPath, Object anElement, ITreePathContentProvider tpcp = cp; return tpcp.hasChildren((TreePath) anElementOrPath); } - return ((ITreeContentProvider) cp).hasChildren(anElement); + return cp.hasChildren(anElement); } private boolean pipelineHasChildren(Object anElementOrPath, Object anElement, @@ -632,8 +632,8 @@ public void run() throws Exception { if (!isOverridingDescriptorInSet(foundExtension.getDescriptor(), descriptors)) { if (foundExtension.internalGetContentProvider().isTreePath()) { - TreePath[] parentTreePaths = ((ITreePathContentProvider) foundExtension - .internalGetContentProvider()).getParents(anElement); + TreePath[] parentTreePaths = foundExtension + .internalGetContentProvider().getParents(anElement); for (TreePath parentTreePath : parentTreePaths) { diff --git a/bundles/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/NavigatorPipelineService.java b/bundles/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/NavigatorPipelineService.java index f7b4d35af50..4e45784a0fc 100644 --- a/bundles/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/NavigatorPipelineService.java +++ b/bundles/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/NavigatorPipelineService.java @@ -25,7 +25,6 @@ import org.eclipse.ui.internal.navigator.extensions.NavigatorContentExtension; import org.eclipse.ui.navigator.INavigatorContentDescriptor; import org.eclipse.ui.navigator.INavigatorPipelineService; -import org.eclipse.ui.navigator.IPipelinedTreeContentProvider; import org.eclipse.ui.navigator.PipelinedShapeModification; import org.eclipse.ui.navigator.PipelinedViewerUpdate; @@ -79,8 +78,8 @@ private void pipelineInterceptAdd(final PipelinedShapeModification anAddModifica SafeRunner.run(new NavigatorSafeRunnable() { @Override public void run() throws Exception { - ((IPipelinedTreeContentProvider) extension - .internalGetContentProvider()) + extension + .internalGetContentProvider() .interceptAdd(anAddModification); } @@ -139,8 +138,8 @@ private void pipelineInterceptRemove(final PipelinedShapeModification aRemoveMod SafeRunner.run(new NavigatorSafeRunnable() { @Override public void run() throws Exception { - ((IPipelinedTreeContentProvider) overridingExtension - .internalGetContentProvider()).interceptRemove(aRemoveModification); + overridingExtension + .internalGetContentProvider().interceptRemove(aRemoveModification); } @Override @@ -189,8 +188,8 @@ private boolean pipelineInterceptRefresh(final NavigatorContentExtension overrid SafeRunner.run(new NavigatorSafeRunnable() { @Override public void run() throws Exception { - intercepted[0] |= ((IPipelinedTreeContentProvider) nceLocal - .internalGetContentProvider()) + intercepted[0] |= nceLocal + .internalGetContentProvider() .interceptRefresh(aRefreshSynchronization); if (nceLocal.getDescriptor().hasOverridingExtensions()) @@ -242,8 +241,8 @@ private boolean pipelineInterceptUpdate(final NavigatorContentExtension override SafeRunner.run(new NavigatorSafeRunnable() { @Override public void run() throws Exception { - intercepted[0] |= ((IPipelinedTreeContentProvider) nceLocal - .internalGetContentProvider()) + intercepted[0] |= nceLocal + .internalGetContentProvider() .interceptUpdate(anUpdateSynchronization); if (nceLocal.getDescriptor().hasOverridingExtensions()) diff --git a/bundles/org.eclipse.ui.views/META-INF/MANIFEST.MF b/bundles/org.eclipse.ui.views/META-INF/MANIFEST.MF index 7e22568a08b..711668e3508 100644 --- a/bundles/org.eclipse.ui.views/META-INF/MANIFEST.MF +++ b/bundles/org.eclipse.ui.views/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %pluginName Bundle-SymbolicName: org.eclipse.ui.views; singleton:=true -Bundle-Version: 3.12.300.qualifier +Bundle-Version: 3.12.400.qualifier Bundle-Vendor: %providerName Bundle-Localization: plugin Export-Package: org.eclipse.ui.internal.views.contentoutline;x-internal:=true, diff --git a/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/PropertySheetEntry.java b/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/PropertySheetEntry.java index acffacc707a..6394f598931 100644 --- a/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/PropertySheetEntry.java +++ b/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/PropertySheetEntry.java @@ -553,7 +553,7 @@ private void refreshChildEntries() { // Dispose of entries which are no longer needed for (PropertySheetEntry element : entriesToDispose) { - ((IPropertySheetEntry) element).dispose(); + element.dispose(); } } diff --git a/bundles/org.eclipse.ui.workbench.texteditor/icons/full/obj16/case_sensitive.png b/bundles/org.eclipse.ui.workbench.texteditor/icons/full/elcl16/case_sensitive.png similarity index 100% rename from bundles/org.eclipse.ui.workbench.texteditor/icons/full/obj16/case_sensitive.png rename to bundles/org.eclipse.ui.workbench.texteditor/icons/full/elcl16/case_sensitive.png diff --git a/bundles/org.eclipse.ui.workbench.texteditor/icons/full/obj16/case_sensitive@2x.png b/bundles/org.eclipse.ui.workbench.texteditor/icons/full/elcl16/case_sensitive@2x.png similarity index 100% rename from bundles/org.eclipse.ui.workbench.texteditor/icons/full/obj16/case_sensitive@2x.png rename to bundles/org.eclipse.ui.workbench.texteditor/icons/full/elcl16/case_sensitive@2x.png diff --git a/bundles/org.eclipse.ui.workbench.texteditor/icons/full/elcl16/close_replace.png b/bundles/org.eclipse.ui.workbench.texteditor/icons/full/elcl16/close_replace.png new file mode 100644 index 00000000000..263ed7f4529 Binary files /dev/null and b/bundles/org.eclipse.ui.workbench.texteditor/icons/full/elcl16/close_replace.png differ diff --git a/bundles/org.eclipse.ui.workbench.texteditor/icons/full/elcl16/close_replace@2x.png b/bundles/org.eclipse.ui.workbench.texteditor/icons/full/elcl16/close_replace@2x.png new file mode 100644 index 00000000000..2e70d7321ee Binary files /dev/null and b/bundles/org.eclipse.ui.workbench.texteditor/icons/full/elcl16/close_replace@2x.png differ diff --git a/bundles/org.eclipse.ui.workbench.texteditor/icons/full/elcl16/open_replace.png b/bundles/org.eclipse.ui.workbench.texteditor/icons/full/elcl16/open_replace.png new file mode 100644 index 00000000000..0801ecae190 Binary files /dev/null and b/bundles/org.eclipse.ui.workbench.texteditor/icons/full/elcl16/open_replace.png differ diff --git a/bundles/org.eclipse.ui.workbench.texteditor/icons/full/elcl16/open_replace@2x.png b/bundles/org.eclipse.ui.workbench.texteditor/icons/full/elcl16/open_replace@2x.png new file mode 100644 index 00000000000..3638db358a2 Binary files /dev/null and b/bundles/org.eclipse.ui.workbench.texteditor/icons/full/elcl16/open_replace@2x.png differ diff --git a/bundles/org.eclipse.ui.workbench.texteditor/icons/full/obj16/regex.png b/bundles/org.eclipse.ui.workbench.texteditor/icons/full/elcl16/regex.png similarity index 100% rename from bundles/org.eclipse.ui.workbench.texteditor/icons/full/obj16/regex.png rename to bundles/org.eclipse.ui.workbench.texteditor/icons/full/elcl16/regex.png diff --git a/bundles/org.eclipse.ui.workbench.texteditor/icons/full/obj16/regex@2x.png b/bundles/org.eclipse.ui.workbench.texteditor/icons/full/elcl16/regex@2x.png similarity index 100% rename from bundles/org.eclipse.ui.workbench.texteditor/icons/full/obj16/regex@2x.png rename to bundles/org.eclipse.ui.workbench.texteditor/icons/full/elcl16/regex@2x.png diff --git a/bundles/org.eclipse.ui.workbench.texteditor/icons/full/obj16/replace.png b/bundles/org.eclipse.ui.workbench.texteditor/icons/full/elcl16/replace.png similarity index 100% rename from bundles/org.eclipse.ui.workbench.texteditor/icons/full/obj16/replace.png rename to bundles/org.eclipse.ui.workbench.texteditor/icons/full/elcl16/replace.png diff --git a/bundles/org.eclipse.ui.workbench.texteditor/icons/full/obj16/replace@2x.png b/bundles/org.eclipse.ui.workbench.texteditor/icons/full/elcl16/replace@2x.png similarity index 100% rename from bundles/org.eclipse.ui.workbench.texteditor/icons/full/obj16/replace@2x.png rename to bundles/org.eclipse.ui.workbench.texteditor/icons/full/elcl16/replace@2x.png diff --git a/bundles/org.eclipse.ui.workbench.texteditor/icons/full/obj16/replace_all.png b/bundles/org.eclipse.ui.workbench.texteditor/icons/full/elcl16/replace_all.png similarity index 100% rename from bundles/org.eclipse.ui.workbench.texteditor/icons/full/obj16/replace_all.png rename to bundles/org.eclipse.ui.workbench.texteditor/icons/full/elcl16/replace_all.png diff --git a/bundles/org.eclipse.ui.workbench.texteditor/icons/full/obj16/replace-all@2x.png b/bundles/org.eclipse.ui.workbench.texteditor/icons/full/elcl16/replace_all@2x.png similarity index 100% rename from bundles/org.eclipse.ui.workbench.texteditor/icons/full/obj16/replace-all@2x.png rename to bundles/org.eclipse.ui.workbench.texteditor/icons/full/elcl16/replace_all@2x.png diff --git a/bundles/org.eclipse.ui.workbench.texteditor/icons/full/obj16/search_all.png b/bundles/org.eclipse.ui.workbench.texteditor/icons/full/elcl16/search_all.png similarity index 100% rename from bundles/org.eclipse.ui.workbench.texteditor/icons/full/obj16/search_all.png rename to bundles/org.eclipse.ui.workbench.texteditor/icons/full/elcl16/search_all.png diff --git a/bundles/org.eclipse.ui.workbench.texteditor/icons/full/obj16/search_all@2x.png b/bundles/org.eclipse.ui.workbench.texteditor/icons/full/elcl16/search_all@2x.png similarity index 100% rename from bundles/org.eclipse.ui.workbench.texteditor/icons/full/obj16/search_all@2x.png rename to bundles/org.eclipse.ui.workbench.texteditor/icons/full/elcl16/search_all@2x.png diff --git a/bundles/org.eclipse.ui.workbench.texteditor/icons/full/obj16/search_in_area.png b/bundles/org.eclipse.ui.workbench.texteditor/icons/full/elcl16/search_in_area.png similarity index 100% rename from bundles/org.eclipse.ui.workbench.texteditor/icons/full/obj16/search_in_area.png rename to bundles/org.eclipse.ui.workbench.texteditor/icons/full/elcl16/search_in_area.png diff --git a/bundles/org.eclipse.ui.workbench.texteditor/icons/full/obj16/search_in_area@2x.png b/bundles/org.eclipse.ui.workbench.texteditor/icons/full/elcl16/search_in_area@2x.png similarity index 100% rename from bundles/org.eclipse.ui.workbench.texteditor/icons/full/obj16/search_in_area@2x.png rename to bundles/org.eclipse.ui.workbench.texteditor/icons/full/elcl16/search_in_area@2x.png diff --git a/bundles/org.eclipse.ui.workbench.texteditor/icons/full/obj16/select_next.png b/bundles/org.eclipse.ui.workbench.texteditor/icons/full/elcl16/select_next.png similarity index 100% rename from bundles/org.eclipse.ui.workbench.texteditor/icons/full/obj16/select_next.png rename to bundles/org.eclipse.ui.workbench.texteditor/icons/full/elcl16/select_next.png diff --git a/bundles/org.eclipse.ui.workbench.texteditor/icons/full/obj16/search_next@2x.png b/bundles/org.eclipse.ui.workbench.texteditor/icons/full/elcl16/select_next@2x.png similarity index 100% rename from bundles/org.eclipse.ui.workbench.texteditor/icons/full/obj16/search_next@2x.png rename to bundles/org.eclipse.ui.workbench.texteditor/icons/full/elcl16/select_next@2x.png diff --git a/bundles/org.eclipse.ui.workbench.texteditor/icons/full/obj16/select_prev.png b/bundles/org.eclipse.ui.workbench.texteditor/icons/full/elcl16/select_prev.png similarity index 100% rename from bundles/org.eclipse.ui.workbench.texteditor/icons/full/obj16/select_prev.png rename to bundles/org.eclipse.ui.workbench.texteditor/icons/full/elcl16/select_prev.png diff --git a/bundles/org.eclipse.ui.workbench.texteditor/icons/full/obj16/search_prev@2x.png b/bundles/org.eclipse.ui.workbench.texteditor/icons/full/elcl16/select_prev@2x.png similarity index 100% rename from bundles/org.eclipse.ui.workbench.texteditor/icons/full/obj16/search_prev@2x.png rename to bundles/org.eclipse.ui.workbench.texteditor/icons/full/elcl16/select_prev@2x.png diff --git a/bundles/org.eclipse.ui.workbench.texteditor/icons/full/obj16/whole_word.png b/bundles/org.eclipse.ui.workbench.texteditor/icons/full/elcl16/whole_word.png similarity index 100% rename from bundles/org.eclipse.ui.workbench.texteditor/icons/full/obj16/whole_word.png rename to bundles/org.eclipse.ui.workbench.texteditor/icons/full/elcl16/whole_word.png diff --git a/bundles/org.eclipse.ui.workbench.texteditor/icons/full/obj16/whole_word@2x.png b/bundles/org.eclipse.ui.workbench.texteditor/icons/full/elcl16/whole_word@2x.png similarity index 100% rename from bundles/org.eclipse.ui.workbench.texteditor/icons/full/obj16/whole_word@2x.png rename to bundles/org.eclipse.ui.workbench.texteditor/icons/full/elcl16/whole_word@2x.png diff --git a/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/AccessibleToolBar.java b/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/AccessibleToolBar.java new file mode 100644 index 00000000000..959aa66f984 --- /dev/null +++ b/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/AccessibleToolBar.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.texteditor; + +import java.util.ArrayList; +import java.util.List; + +import org.eclipse.swt.SWT; +import org.eclipse.swt.graphics.Color; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.ToolBar; +import org.eclipse.swt.widgets.ToolItem; + +import org.eclipse.jface.layout.GridLayoutFactory; + +/** + * This class wraps the ToolBar to make it possible to use tabulator-keys to + * navigate between the buttons of a ToolBar. For this, we simulate a singular + * ToolBar by putting each ToolItem into it's own ToolBar and composing them + * into a Composite. Since the "Enter" keypress could not previously trigger + * activation behavior, we listen for it manually and send according events if + * necessary. + */ +class AccessibleToolBar extends Composite { + + private List toolBars = new ArrayList<>(); + + public AccessibleToolBar(Composite parent) { + super(parent, SWT.NONE); + GridLayoutFactory.fillDefaults().numColumns(0).spacing(0, 0).margins(0, 0).applyTo(this); + } + + /** + * Creates a ToolItem handled by this ToolBar and returns it. Will add a + * KeyListener which will handle presses of "Enter". + * + * @param styleBits the StyleBits to apply to the created ToolItem + * @return a newly created ToolItem + */ + public ToolItem createToolItem(int styleBits) { + ToolBar parent = new ToolBar(this, SWT.FLAT | SWT.HORIZONTAL); + ToolItem toolItem = new ToolItem(parent, styleBits); + + addToolItemTraverseListener(parent, toolItem); + + ((GridLayout) getLayout()).numColumns++; + + toolBars.add(parent); + return toolItem; + } + + private void addToolItemTraverseListener(ToolBar parent, ToolItem result) { + parent.addTraverseListener(e -> { + if (e.keyCode == SWT.CR || e.keyCode == SWT.KEYPAD_CR) { + result.setSelection(!result.getSelection()); + e.doit = false; + } + }); + } + + @Override + public void setBackground(Color color) { + super.setBackground(color); + for (ToolBar bar : toolBars) { // some ToolItems (like SWT.SEPARATOR) don't easily inherit the color from the + // parent control. + bar.setBackground(color); + } + } + +} diff --git a/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/AccessibleToolItemBuilder.java b/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/AccessibleToolItemBuilder.java new file mode 100644 index 00000000000..45e3c40ef72 --- /dev/null +++ b/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/AccessibleToolItemBuilder.java @@ -0,0 +1,74 @@ +/******************************************************************************* + * 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.texteditor; + +import java.util.Objects; + +import org.eclipse.swt.SWT; +import org.eclipse.swt.events.SelectionListener; +import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.widgets.ToolItem; + +/** + * Builder for ToolItems for {@link AccessibleToolBar}. + */ +class AccessibleToolItemBuilder { + private final AccessibleToolBar accessibleToolBar; + private int styleBits = SWT.NONE; + private Image image; + private String toolTipText; + private SelectionListener selectionListener; + + public AccessibleToolItemBuilder(AccessibleToolBar accessibleToolBar) { + this.accessibleToolBar = Objects.requireNonNull(accessibleToolBar); + } + + public AccessibleToolItemBuilder withStyleBits(int newStyleBits) { + this.styleBits = newStyleBits; + return this; + } + + public AccessibleToolItemBuilder withImage(Image newImage) { + this.image = newImage; + return this; + } + + public AccessibleToolItemBuilder withToolTipText(String newToolTipText) { + this.toolTipText = newToolTipText; + return this; + } + + public AccessibleToolItemBuilder withSelectionListener(SelectionListener newSelectionListener) { + this.selectionListener = newSelectionListener; + return this; + } + + public ToolItem build() { + ToolItem toolItem = accessibleToolBar.createToolItem(styleBits); + + if (image != null) { + toolItem.setImage(image); + } + + if (toolTipText != null) { + toolItem.setToolTipText(toolTipText); + } + + if (selectionListener != null) { + toolItem.addSelectionListener(selectionListener); + } + + return toolItem; + } +} 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 dd9466e0f19..442f7f558d3 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 @@ -1003,7 +1003,7 @@ private void storeButtonWithMnemonicInMap(Button button) { private void setGridData(Control component, int horizontalAlignment, boolean grabExcessHorizontalSpace, int verticalAlignment, boolean grabExcessVerticalSpace) { GridData gd; - if (component instanceof Button && (((Button) component).getStyle() & SWT.PUSH) != 0) { + if (component instanceof Button && (component.getStyle() & SWT.PUSH) != 0) { SWTUtil.setButtonDimensionHint((Button) component); gd = (GridData) component.getLayoutData(); } else { diff --git a/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/FindReplaceOverlay.java b/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/FindReplaceOverlay.java index 5f465d90b56..42975f9a5eb 100644 --- a/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/FindReplaceOverlay.java +++ b/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/FindReplaceOverlay.java @@ -26,6 +26,8 @@ import org.eclipse.swt.events.KeyListener; import org.eclipse.swt.events.PaintListener; import org.eclipse.swt.events.SelectionListener; +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; @@ -40,7 +42,6 @@ import org.eclipse.swt.widgets.Scrollable; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Text; -import org.eclipse.swt.widgets.ToolBar; import org.eclipse.swt.widgets.ToolItem; import org.eclipse.swt.widgets.Widget; @@ -87,7 +88,7 @@ class FindReplaceOverlay extends Dialog { private Composite searchContainer; private Composite searchBarContainer; private Text searchBar; - private ToolBar searchTools; + private AccessibleToolBar searchTools; private ToolItem searchInSelectionButton; private ToolItem wholeWordSearchButton; @@ -100,7 +101,7 @@ class FindReplaceOverlay extends Dialog { private Composite replaceContainer; private Composite replaceBarContainer; private Text replaceBar; - private ToolBar replaceTools; + private AccessibleToolBar replaceTools; private ToolItem replaceButton; private ToolItem replaceAllButton; @@ -226,10 +227,17 @@ public void controlResized(ControlEvent e) { } }; - private FocusListener overlayFocusListener = FocusListener.focusLostAdapter(e -> { - findReplaceLogic.activate(SearchOptions.GLOBAL); - searchInSelectionButton.setSelection(false); - }); + private ShellAdapter overlayDeactivationListener = new ShellAdapter() { + @Override + public void shellActivated(ShellEvent e) { + // Do nothing + } + + @Override + public void shellDeactivated(ShellEvent e) { + removeSearchScope(); + } + }; private PaintListener widgetMovementListener = __ -> positionToPart(); @@ -317,7 +325,7 @@ public int open() { } overlayOpen = true; applyOverlayColors(backgroundToUse, true); - initFindStringFromSelection(); + updateFromTargetSelection(); getShell().layout(); positionToPart(); @@ -361,7 +369,7 @@ private void applyOverlayColors(Color color, boolean tryToColorReplaceBar) { } private void unbindListeners() { - getShell().removeFocusListener(overlayFocusListener); + getShell().removeShellListener(overlayDeactivationListener); if (targetPart != null && targetPart instanceof StatusTextEditor textEditor) { Control targetWidget = textEditor.getSourceViewer().getTextWidget(); if (targetWidget != null) { @@ -373,7 +381,7 @@ private void unbindListeners() { } private void bindListeners() { - getShell().addFocusListener(overlayFocusListener); + getShell().addShellListener(overlayDeactivationListener); if (targetPart instanceof StatusTextEditor textEditor) { Control targetWidget = textEditor.getSourceViewer().getTextWidget(); @@ -423,7 +431,7 @@ private void retrieveBackgroundColor() { } private void createSearchTools() { - searchTools = new ToolBar(searchContainer, SWT.HORIZONTAL); + searchTools = new AccessibleToolBar(searchContainer); GridDataFactory.fillDefaults().grab(false, true).align(GridData.CENTER, GridData.END).applyTo(searchTools); createWholeWordsButton(); @@ -432,104 +440,106 @@ private void createSearchTools() { createAreaSearchButton(); @SuppressWarnings("unused") - ToolItem separator = new ToolItem(searchTools, SWT.SEPARATOR); - - searchUpButton = new ToolItem(searchTools, SWT.PUSH); - searchUpButton.setImage(FindReplaceOverlayImages.get(FindReplaceOverlayImages.OBJ_FIND_PREV)); - searchUpButton.setToolTipText(FindReplaceMessages.FindReplaceOverlay_upSearchButton_toolTip); - searchUpButton.addSelectionListener(SelectionListener.widgetSelectedAdapter(e -> { - performSearch(false); - evaluateFindReplaceStatus(); - })); - searchDownButton = new ToolItem(searchTools, SWT.PUSH); + ToolItem separator = searchTools.createToolItem(SWT.SEPARATOR); + + searchUpButton = new AccessibleToolItemBuilder(searchTools).withStyleBits(SWT.PUSH) + .withImage(FindReplaceOverlayImages.get(FindReplaceOverlayImages.KEY_FIND_PREV)) + .withToolTipText(FindReplaceMessages.FindReplaceOverlay_upSearchButton_toolTip) + .withSelectionListener(SelectionListener.widgetSelectedAdapter(e -> { + performSearch(false); + evaluateFindReplaceStatus(); + })).build(); + searchDownButton = new AccessibleToolItemBuilder(searchTools).withStyleBits(SWT.PUSH) + .withImage(FindReplaceOverlayImages.get(FindReplaceOverlayImages.KEY_FIND_NEXT)) + .withToolTipText(FindReplaceMessages.FindReplaceOverlay_downSearchButton_toolTip) + .withSelectionListener(SelectionListener.widgetSelectedAdapter(e -> { + performSearch(true); + evaluateFindReplaceStatus(); + })).build(); searchDownButton.setSelection(true); // by default, search down - searchDownButton.setImage(FindReplaceOverlayImages.get(FindReplaceOverlayImages.OBJ_FIND_NEXT)); - searchDownButton.setToolTipText(FindReplaceMessages.FindReplaceOverlay_downSearchButton_toolTip); - searchDownButton.addSelectionListener(SelectionListener.widgetSelectedAdapter(e -> { - performSearch(true); - evaluateFindReplaceStatus(); - })); - searchAllButton = new ToolItem(searchTools, SWT.PUSH); - searchAllButton.setImage(FindReplaceOverlayImages.get(FindReplaceOverlayImages.OBJ_SEARCH_ALL)); - searchAllButton.setToolTipText(FindReplaceMessages.FindReplaceOverlay_searchAllButton_toolTip); - searchAllButton.addSelectionListener(SelectionListener.widgetSelectedAdapter(e -> { - performSelectAll(); - evaluateFindReplaceStatus(); - })); + + searchAllButton = new AccessibleToolItemBuilder(searchTools).withStyleBits(SWT.PUSH) + .withImage(FindReplaceOverlayImages.get(FindReplaceOverlayImages.KEY_SEARCH_ALL)) + .withToolTipText(FindReplaceMessages.FindReplaceOverlay_searchAllButton_toolTip) + .withSelectionListener(SelectionListener.widgetSelectedAdapter(e -> { + performSelectAll(); + evaluateFindReplaceStatus(); + })).build(); } private void createAreaSearchButton() { - searchInSelectionButton = new ToolItem(searchTools, SWT.CHECK); - searchInSelectionButton.setImage(FindReplaceOverlayImages.get(FindReplaceOverlayImages.OBJ_SEARCH_IN_AREA)); - searchInSelectionButton.setToolTipText(FindReplaceMessages.FindReplaceOverlay_searchInSelectionButton_toolTip); + searchInSelectionButton = new AccessibleToolItemBuilder(searchTools).withStyleBits(SWT.CHECK) + .withImage(FindReplaceOverlayImages.get(FindReplaceOverlayImages.KEY_SEARCH_IN_AREA)) + .withToolTipText(FindReplaceMessages.FindReplaceOverlay_searchInSelectionButton_toolTip) + .withSelectionListener(SelectionListener.widgetSelectedAdapter(e -> { + activateInFindReplacerIf(SearchOptions.GLOBAL, !searchInSelectionButton.getSelection()); + updateIncrementalSearch(); + })).build(); searchInSelectionButton.setSelection(findReplaceLogic.isActive(SearchOptions.WHOLE_WORD)); - searchInSelectionButton.addSelectionListener(SelectionListener.widgetSelectedAdapter(e -> { - activateInFindReplacerIf(SearchOptions.GLOBAL, !searchInSelectionButton.getSelection()); - updateIncrementalSearch(); - })); } private void createRegexSearchButton() { - regexSearchButton = new ToolItem(searchTools, SWT.CHECK); - regexSearchButton.setImage(FindReplaceOverlayImages.get(FindReplaceOverlayImages.OBJ_FIND_REGEX)); - regexSearchButton.setToolTipText(FindReplaceMessages.FindReplaceOverlay_regexSearchButton_toolTip); + regexSearchButton = new AccessibleToolItemBuilder(searchTools).withStyleBits(SWT.CHECK) + .withImage(FindReplaceOverlayImages.get(FindReplaceOverlayImages.KEY_FIND_REGEX)) + .withToolTipText(FindReplaceMessages.FindReplaceOverlay_regexSearchButton_toolTip) + .withSelectionListener(SelectionListener.widgetSelectedAdapter(e -> { + activateInFindReplacerIf(SearchOptions.REGEX, ((ToolItem) e.widget).getSelection()); + wholeWordSearchButton.setEnabled(!findReplaceLogic.isActive(SearchOptions.REGEX)); + updateIncrementalSearch(); + })).build(); regexSearchButton.setSelection(findReplaceLogic.isActive(SearchOptions.REGEX)); - regexSearchButton.addSelectionListener(SelectionListener.widgetSelectedAdapter(e -> { - activateInFindReplacerIf(SearchOptions.REGEX, ((ToolItem) e.widget).getSelection()); - wholeWordSearchButton.setEnabled(!findReplaceLogic.isActive(SearchOptions.REGEX)); - updateIncrementalSearch(); - })); } private void createCaseSensitiveButton() { - caseSensitiveSearchButton = new ToolItem(searchTools, SWT.CHECK); - caseSensitiveSearchButton.setImage(FindReplaceOverlayImages.get(FindReplaceOverlayImages.OBJ_CASE_SENSITIVE)); - caseSensitiveSearchButton.setToolTipText(FindReplaceMessages.FindReplaceOverlay_caseSensitiveButton_toolTip); + caseSensitiveSearchButton = new AccessibleToolItemBuilder(searchTools).withStyleBits(SWT.CHECK) + .withImage(FindReplaceOverlayImages.get(FindReplaceOverlayImages.KEY_CASE_SENSITIVE)) + .withToolTipText(FindReplaceMessages.FindReplaceOverlay_caseSensitiveButton_toolTip) + .withSelectionListener(SelectionListener.widgetSelectedAdapter(e -> { + activateInFindReplacerIf(SearchOptions.CASE_SENSITIVE, caseSensitiveSearchButton.getSelection()); + updateIncrementalSearch(); + })).build(); caseSensitiveSearchButton.setSelection(findReplaceLogic.isActive(SearchOptions.CASE_SENSITIVE)); - caseSensitiveSearchButton.addSelectionListener(SelectionListener.widgetSelectedAdapter(e -> { - activateInFindReplacerIf(SearchOptions.CASE_SENSITIVE, caseSensitiveSearchButton.getSelection()); - updateIncrementalSearch(); - })); } private void createWholeWordsButton() { - wholeWordSearchButton = new ToolItem(searchTools, SWT.CHECK); - wholeWordSearchButton.setImage(FindReplaceOverlayImages.get(FindReplaceOverlayImages.OBJ_WHOLE_WORD)); - wholeWordSearchButton.setToolTipText(FindReplaceMessages.FindReplaceOverlay_wholeWordsButton_toolTip); + wholeWordSearchButton = new AccessibleToolItemBuilder(searchTools).withStyleBits(SWT.CHECK) + .withImage(FindReplaceOverlayImages.get(FindReplaceOverlayImages.KEY_WHOLE_WORD)) + .withToolTipText(FindReplaceMessages.FindReplaceOverlay_wholeWordsButton_toolTip) + .withSelectionListener(SelectionListener.widgetSelectedAdapter(e -> { + activateInFindReplacerIf(SearchOptions.WHOLE_WORD, wholeWordSearchButton.getSelection()); + updateIncrementalSearch(); + })).build(); wholeWordSearchButton.setSelection(findReplaceLogic.isActive(SearchOptions.WHOLE_WORD)); - wholeWordSearchButton.addSelectionListener(SelectionListener.widgetSelectedAdapter(e -> { - activateInFindReplacerIf(SearchOptions.WHOLE_WORD, wholeWordSearchButton.getSelection()); - updateIncrementalSearch(); - })); } private void createReplaceTools() { Color warningColor = JFaceColors.getErrorText(getShell().getDisplay()); - replaceTools = new ToolBar(replaceContainer, SWT.HORIZONTAL); + replaceTools = new AccessibleToolBar(replaceContainer); GridDataFactory.fillDefaults().grab(false, true).align(GridData.CENTER, GridData.END).applyTo(replaceTools); - replaceButton = new ToolItem(replaceTools, SWT.PUSH); - replaceButton.setImage(FindReplaceOverlayImages.get(FindReplaceOverlayImages.OBJ_REPLACE)); - replaceButton.setToolTipText(FindReplaceMessages.FindReplaceOverlay_replaceButton_toolTip); - replaceButton.addSelectionListener(SelectionListener.widgetSelectedAdapter(e -> { - if (getFindString().isEmpty()) { - showUserFeedback(warningColor, true); - return; - } - performSingleReplace(); - evaluateFindReplaceStatus(); - })); - replaceAllButton = new ToolItem(replaceTools, SWT.PUSH); - replaceAllButton.setImage(FindReplaceOverlayImages.get(FindReplaceOverlayImages.OBJ_REPLACE_ALL)); - replaceAllButton.setToolTipText(FindReplaceMessages.FindReplaceOverlay_replaceAllButton_toolTip); - replaceAllButton.addSelectionListener(SelectionListener.widgetSelectedAdapter(e -> { - if (getFindString().isEmpty()) { - showUserFeedback(warningColor, true); - return; - } - performReplaceAll(); - evaluateFindReplaceStatus(); - })); + replaceButton = new AccessibleToolItemBuilder(replaceTools).withStyleBits(SWT.PUSH) + .withImage(FindReplaceOverlayImages.get(FindReplaceOverlayImages.KEY_REPLACE)) + .withToolTipText(FindReplaceMessages.FindReplaceOverlay_replaceButton_toolTip) + .withSelectionListener(SelectionListener.widgetSelectedAdapter(e -> { + if (getFindString().isEmpty()) { + showUserFeedback(warningColor, true); + return; + } + performSingleReplace(); + evaluateFindReplaceStatus(); + })).build(); + + replaceAllButton = new AccessibleToolItemBuilder(replaceTools).withStyleBits(SWT.PUSH) + .withImage(FindReplaceOverlayImages.get(FindReplaceOverlayImages.KEY_REPLACE_ALL)) + .withToolTipText(FindReplaceMessages.FindReplaceOverlay_replaceAllButton_toolTip) + .withSelectionListener(SelectionListener.widgetSelectedAdapter(e -> { + if (getFindString().isEmpty()) { + showUserFeedback(warningColor, true); + return; + } + performReplaceAll(); + evaluateFindReplaceStatus(); + })).build(); } private void createSearchBar() { @@ -629,17 +639,17 @@ private void createReplaceToggle() { GridDataFactory.fillDefaults().grab(false, true).align(GridData.BEGINNING, GridData.FILL) .applyTo(replaceToggle); replaceToggle.setToolTipText(FindReplaceMessages.FindReplaceOverlay_replaceToggle_toolTip); - replaceToggle.setText("⯈"); //$NON-NLS-1$ + replaceToggle.setImage(FindReplaceOverlayImages.get(FindReplaceOverlayImages.KEY_OPEN_REPLACE_AREA)); replaceToggle.addSelectionListener(SelectionListener.widgetSelectedAdapter(e -> toggleReplace())); } private void toggleReplace() { if (!replaceBarOpen) { createReplaceDialog(); - replaceToggle.setText("⯅"); //$NON-NLS-1$ + replaceToggle.setImage(FindReplaceOverlayImages.get(FindReplaceOverlayImages.KEY_CLOSE_REPLACE_AREA)); } else { hideReplace(); - replaceToggle.setText("⯈"); //$NON-NLS-1$ + 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 @@ -815,7 +825,7 @@ private void performSearch(boolean forward) { findReplaceLogic.activate(SearchOptions.INCREMENTAL); } - private void initFindStringFromSelection() { + private void updateFromTargetSelection() { String initText = findReplaceLogic.getTarget().getSelectionText(); if (initText.isEmpty()) { return; @@ -863,4 +873,9 @@ private static boolean okayToUse(Widget widget) { public void setPositionToTop(boolean shouldPositionOverlayOnTop) { positionAtTop = shouldPositionOverlayOnTop; } + + private void removeSearchScope() { + findReplaceLogic.activate(SearchOptions.GLOBAL); + searchInSelectionButton.setSelection(false); + } } \ No newline at end of file diff --git a/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/FindReplaceOverlayImages.java b/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/FindReplaceOverlayImages.java index 2017e13f966..15d034b037a 100644 --- a/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/FindReplaceOverlayImages.java +++ b/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/FindReplaceOverlayImages.java @@ -33,25 +33,19 @@ * find/replace-operations. */ class FindReplaceOverlayImages { - static final String PREFIX_OBJ = TextEditorPlugin.PLUGIN_ID + ".obj."; //$NON-NLS-1$ - - static final String OBJ_FIND_NEXT = PREFIX_OBJ + "select_next.png"; //$NON-NLS-1$ - - static final String OBJ_FIND_PREV = PREFIX_OBJ + "select_prev.png"; //$NON-NLS-1$ - - static final String OBJ_FIND_REGEX = PREFIX_OBJ + "regex_gear.gif"; //$NON-NLS-1$ - - static final String OBJ_REPLACE = PREFIX_OBJ + "replace.png"; //$NON-NLS-1$ - - static final String OBJ_REPLACE_ALL = PREFIX_OBJ + "replace_all.png"; //$NON-NLS-1$ - - static final String OBJ_WHOLE_WORD = PREFIX_OBJ + "whole_word.png"; //$NON-NLS-1$ - - static final String OBJ_CASE_SENSITIVE = PREFIX_OBJ + "case_sensitive.png"; //$NON-NLS-1$ - - static final String OBJ_SEARCH_ALL = PREFIX_OBJ + "search_all.png"; //$NON-NLS-1$ - - static final String OBJ_SEARCH_IN_AREA = PREFIX_OBJ + "search_in_selection.png"; //$NON-NLS-1$ + private static final String PREFIX_ELCL = TextEditorPlugin.PLUGIN_ID + ".elcl."; //$NON-NLS-1$ + + static final String KEY_FIND_NEXT = PREFIX_ELCL + "select_next"; //$NON-NLS-1$ + static final String KEY_FIND_PREV = PREFIX_ELCL + "select_prev"; //$NON-NLS-1$ + static final String KEY_FIND_REGEX = PREFIX_ELCL + "regex"; //$NON-NLS-1$ + static final String KEY_REPLACE = PREFIX_ELCL + "replace"; //$NON-NLS-1$ + static final String KEY_REPLACE_ALL = PREFIX_ELCL + "replace_all"; //$NON-NLS-1$ + static final String KEY_WHOLE_WORD = PREFIX_ELCL + "whole_word"; //$NON-NLS-1$ + static final String KEY_CASE_SENSITIVE = PREFIX_ELCL + "case_sensitive"; //$NON-NLS-1$ + static final String KEY_SEARCH_ALL = PREFIX_ELCL + "search_all"; //$NON-NLS-1$ + static final String KEY_SEARCH_IN_AREA = PREFIX_ELCL + "search_in_selection"; //$NON-NLS-1$ + static final String KEY_OPEN_REPLACE_AREA = PREFIX_ELCL + "open_replace"; //$NON-NLS-1$ + static final String KEY_CLOSE_REPLACE_AREA = PREFIX_ELCL + "close_replace"; //$NON-NLS-1$ /** * The image registry containing {@link Image images}. @@ -60,21 +54,23 @@ class FindReplaceOverlayImages { private static String ICONS_PATH = "$nl$/icons/full/"; //$NON-NLS-1$ - private final static String OBJ = ICONS_PATH + "obj16/"; //$NON-NLS-1$ + private final static String ELCL = ICONS_PATH + "elcl16/"; //$NON-NLS-1$ /** * Declare all images */ private static void declareImages() { - declareRegistryImage(OBJ_FIND_NEXT, OBJ + "select_next.png"); //$NON-NLS-1$ - declareRegistryImage(OBJ_FIND_PREV, OBJ + "select_prev.png"); //$NON-NLS-1$ - declareRegistryImage(OBJ_FIND_REGEX, OBJ + "regex.png"); //$NON-NLS-1$ - declareRegistryImage(OBJ_REPLACE_ALL, OBJ + "replace_all.png"); //$NON-NLS-1$ - declareRegistryImage(OBJ_REPLACE, OBJ + "replace.png"); //$NON-NLS-1$ - declareRegistryImage(OBJ_WHOLE_WORD, OBJ + "whole_word.png"); //$NON-NLS-1$ - declareRegistryImage(OBJ_CASE_SENSITIVE, OBJ + "case_sensitive.png"); //$NON-NLS-1$ - declareRegistryImage(OBJ_SEARCH_ALL, OBJ + "search_all.png"); //$NON-NLS-1$ - declareRegistryImage(OBJ_SEARCH_IN_AREA, OBJ + "search_in_area.png"); //$NON-NLS-1$ + declareRegistryImage(KEY_FIND_NEXT, ELCL + "select_next.png"); //$NON-NLS-1$ + declareRegistryImage(KEY_FIND_PREV, ELCL + "select_prev.png"); //$NON-NLS-1$ + declareRegistryImage(KEY_FIND_REGEX, ELCL + "regex.png"); //$NON-NLS-1$ + declareRegistryImage(KEY_REPLACE_ALL, ELCL + "replace_all.png"); //$NON-NLS-1$ + declareRegistryImage(KEY_REPLACE, ELCL + "replace.png"); //$NON-NLS-1$ + declareRegistryImage(KEY_WHOLE_WORD, ELCL + "whole_word.png"); //$NON-NLS-1$ + declareRegistryImage(KEY_CASE_SENSITIVE, ELCL + "case_sensitive.png"); //$NON-NLS-1$ + declareRegistryImage(KEY_SEARCH_ALL, ELCL + "search_all.png"); //$NON-NLS-1$ + declareRegistryImage(KEY_SEARCH_IN_AREA, ELCL + "search_in_area.png"); //$NON-NLS-1$ + declareRegistryImage(KEY_OPEN_REPLACE_AREA, ELCL + "open_replace.png"); //$NON-NLS-1$ + declareRegistryImage(KEY_CLOSE_REPLACE_AREA, ELCL + "close_replace.png"); //$NON-NLS-1$ } /** diff --git a/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/templates/AbstractTemplatesPage.java b/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/templates/AbstractTemplatesPage.java index 11b1b13d58c..95db4172441 100644 --- a/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/templates/AbstractTemplatesPage.java +++ b/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/templates/AbstractTemplatesPage.java @@ -1510,7 +1510,7 @@ public void dragOver(DropTargetEvent event) { public void drop(DropTargetEvent event) { if (event.item == null) return; - Object object= ((TreeItem) event.item).getData(); + Object object= event.item.getData(); final String contextId; if (object instanceof TemplateContextType) contextId= ((TemplateContextType) object).getId(); diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PluginActionSetBuilder.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PluginActionSetBuilder.java index 6d35273fe61..5d6a92ee4a8 100644 --- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PluginActionSetBuilder.java +++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PluginActionSetBuilder.java @@ -619,7 +619,7 @@ private void revokeActionSetFromCoolbar(ICoolBarManager coolbarMgr, String actio if (item instanceof IToolBarManager) { revokeActionSetFromToolbar((IToolBarManager) item, actionsetId); } else if (item instanceof IToolBarContributionItem) { - id = ((IToolBarContributionItem) item).getId(); + id = item.getId(); if (actionsetId.equals(id)) { itemsToRemove.add(item); } diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchPage.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchPage.java index e487b14a0fa..3a30b16a229 100644 --- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchPage.java +++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchPage.java @@ -1030,13 +1030,13 @@ public MPart findPart(IWorkbenchPart part) { for (ViewReference reference : viewReferences) { if (part == reference.getPart(false)) { - return ((WorkbenchPartReference) reference).getModel(); + return reference.getModel(); } } for (EditorReference reference : editorReferences) { if (part == reference.getPart(false)) { - return ((WorkbenchPartReference) reference).getModel(); + return reference.getModel(); } } return null; diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/databinding/MultiSelectionProperty.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/databinding/MultiSelectionProperty.java index b2ff183f4e5..56501815295 100644 --- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/databinding/MultiSelectionProperty.java +++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/databinding/MultiSelectionProperty.java @@ -36,9 +36,9 @@ public Object getElementType() { protected List doGetList(S source) { ISelection selection; if (partId != null) { - selection = ((ISelectionService) source).getSelection(partId); + selection = source.getSelection(partId); } else { - selection = ((ISelectionService) source).getSelection(); + selection = source.getSelection(); } if (selection instanceof IStructuredSelection) { List list = ((IStructuredSelection) selection).toList(); diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/databinding/SingleSelectionProperty.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/databinding/SingleSelectionProperty.java index 0baa077703a..ce09c025353 100644 --- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/databinding/SingleSelectionProperty.java +++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/databinding/SingleSelectionProperty.java @@ -28,9 +28,9 @@ public INativePropertyListener adaptListener(ISimplePropertyListener openExportWizard(parent)); } else if (control instanceof Link) { - Composite linkParent = ((Link) control).getParent(); + Composite linkParent = control.getParent(); Link importLink = new Link(linkParent, SWT.WRAP | SWT.NO_FOCUS); ((GridLayout) parent.getLayout()).numColumns++; importLink.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_CENTER)); diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/SelectAllHandler.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/SelectAllHandler.java index 4fe24c769a4..9e8b24f4920 100644 --- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/SelectAllHandler.java +++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/SelectAllHandler.java @@ -51,7 +51,7 @@ public final Object execute(final ExecutionEvent event) throws ExecutionExceptio final int numParams = methodToExecute.getParameterTypes().length; if ((focusControl instanceof Composite) - && ((((Composite) focusControl).getStyle() & SWT.EMBEDDED) != 0)) { + && ((focusControl.getStyle() & SWT.EMBEDDED) != 0)) { // we only support selectAll for swing components if (numParams != 0) { diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/WidgetMethodHandler.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/WidgetMethodHandler.java index 596029ca4b1..601043ce538 100644 --- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/WidgetMethodHandler.java +++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/WidgetMethodHandler.java @@ -70,7 +70,7 @@ public Object execute(final ExecutionEvent event) throws ExecutionException { try { final Control focusControl = Display.getCurrent().getFocusControl(); if ((focusControl instanceof Composite) - && ((((Composite) focusControl).getStyle() & SWT.EMBEDDED) != 0)) { + && ((focusControl.getStyle() & SWT.EMBEDDED) != 0)) { /* * Okay. Have a seat. Relax a while. This is going to be a bumpy ride. If it is * an embedded widget, then it *might* be a Swing widget. At the point where @@ -210,7 +210,7 @@ protected Method getMethodToExecute() { } if ((method == null) && (focusControl instanceof Composite) - && ((((Composite) focusControl).getStyle() & SWT.EMBEDDED) != 0)) { + && ((focusControl.getStyle() & SWT.EMBEDDED) != 0)) { /* * We couldn't find the appropriate method on the current focus control. It is * possible that the current focus control is an embedded SWT composite, which diff --git a/tests/org.eclipse.jface.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.jface.tests/META-INF/MANIFEST.MF index 70ccca58dcd..15b357fd9f7 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.500.qualifier +Bundle-Version: 1.4.600.qualifier Automatic-Module-Name: org.eclipse.jface.tests Bundle-RequiredExecutionEnvironment: JavaSE-17 Require-Bundle: org.junit;bundle-version="4.12.0", diff --git a/tests/org.eclipse.jface.tests/src/org/eclipse/jface/tests/viewers/TestModelContentProvider.java b/tests/org.eclipse.jface.tests/src/org/eclipse/jface/tests/viewers/TestModelContentProvider.java index b798ce304b9..d6da01409a5 100644 --- a/tests/org.eclipse.jface.tests/src/org/eclipse/jface/tests/viewers/TestModelContentProvider.java +++ b/tests/org.eclipse.jface.tests/src/org/eclipse/jface/tests/viewers/TestModelContentProvider.java @@ -143,7 +143,7 @@ public void testModelChanged(TestModelChange change) { StructuredSelection selection = new StructuredSelection(change.getChildren()); if ((change.getModifiers() & TestModelChange.SELECT) != 0) { - ((StructuredViewer) fViewer).setSelection(selection); + fViewer.setSelection(selection); } if ((change.getModifiers() & TestModelChange.REVEAL) != 0) { Object element = selection.getFirstElement(); 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 815ff06a6a3..e7bf25f6f06 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 @@ -26,6 +26,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.GC; import org.eclipse.swt.graphics.Image; @@ -194,6 +195,62 @@ protected boolean condition() { }.waitForCondition(fViewer.getControl().getDisplay(), 3000)); } + @Test + public void testCodeMiningEmptyLine() { + fViewer.getDocument().set("\n"); + fViewer.setCodeMiningProviders(new ICodeMiningProvider[] { new ICodeMiningProvider() { + @Override + public CompletableFuture> provideCodeMinings(ITextViewer viewer, IProgressMonitor monitor) { + return CompletableFuture.completedFuture(Collections.singletonList(new StaticContentLineCodeMining(new Position(0, 1), "mining", this))); + } + + @Override + public void dispose() { + } + } }); + StyledText widget= fViewer.getTextWidget(); + Assert.assertTrue("Code mining is not visible in 1st empty line after line break character", new DisplayHelper() { + @Override + protected boolean condition() { + try { + StyleRange range= widget.getStyleRangeAtOffset(0); + return range == null && hasCodeMiningPrintedAfterTextOnLine(fViewer, 0); + } catch (BadLocationException e) { + e.printStackTrace(); + return false; + } + } + }.waitForCondition(fViewer.getTextWidget().getDisplay(), 1000)); + } + + @Test + public void testCodeMiningEndOfLine() { + fViewer.getDocument().set("a\n"); + fViewer.setCodeMiningProviders(new ICodeMiningProvider[] { new ICodeMiningProvider() { + @Override + public CompletableFuture> provideCodeMinings(ITextViewer viewer, IProgressMonitor monitor) { + return CompletableFuture.completedFuture(Collections.singletonList(new StaticContentLineCodeMining(new Position(1, 1), "mining", this))); + } + + @Override + public void dispose() { + } + } }); + StyledText widget= fViewer.getTextWidget(); + Assert.assertTrue("Code mining is not visible in 1st line after character a before line break character", new DisplayHelper() { + @Override + protected boolean condition() { + try { + StyleRange range= widget.getStyleRangeAtOffset(0); + return range != null && range.metrics != null && hasCodeMiningPrintedAfterTextOnLine(fViewer, 0) == false; + } catch (BadLocationException e) { + e.printStackTrace(); + return false; + } + } + }.waitForCondition(fViewer.getTextWidget().getDisplay(), 1000)); + } + @Test public void testCodeMiningMultiLine() { fViewer.getDocument().set("a\nbc"); @@ -225,7 +282,11 @@ protected boolean condition() { private static boolean hasCodeMiningPrintedAfterTextOnLine(ITextViewer viewer, int line) throws BadLocationException { StyledText widget = viewer.getTextWidget(); IDocument document= viewer.getDocument(); - Rectangle secondLineBounds = widget.getTextBounds(document.getLineOffset(1), document.getLineOffset(line) + document.getLineLength(line) - 1); + int lineLength= document.getLineLength(line) - 1; + if (lineLength < 0) { + lineLength= 0; + } + Rectangle secondLineBounds= widget.getTextBounds(document.getLineOffset(line), document.getLineOffset(line) + 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.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/adaptable/WorkingSetTestCase.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/adaptable/WorkingSetTestCase.java index 24401cd92bf..4a00d7377dc 100644 --- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/adaptable/WorkingSetTestCase.java +++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/adaptable/WorkingSetTestCase.java @@ -20,7 +20,6 @@ import org.eclipse.core.resources.mapping.ResourceMapping; import org.eclipse.core.resources.mapping.ResourceTraversal; import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IAdaptable; import org.eclipse.core.runtime.QualifiedName; import org.eclipse.ui.IResourceActionFilter; import org.eclipse.ui.IWorkingSet; @@ -42,11 +41,11 @@ public WorkingSetTestCase() { } private ResourceMapping getResourceMapping(IWorkingSet set) { - return ((IAdaptable) set).getAdapter(ResourceMapping.class); + return set.getAdapter(ResourceMapping.class); } private IWorkbenchAdapter getWorkbenchAdapter(IWorkingSet set) { - return ((IAdaptable) set).getAdapter(IWorkbenchAdapter.class); + return set.getAdapter(IWorkbenchAdapter.class); } private void assertMatches(ResourceMapping mapping, IResource[] resources) throws CoreException { diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/dialogs/ResourcePathCopyTest.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/dialogs/ResourcePathCopyTest.java index fe77d2e91bd..5bd9e45353b 100644 --- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/dialogs/ResourcePathCopyTest.java +++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/dialogs/ResourcePathCopyTest.java @@ -150,7 +150,7 @@ private void copyButtonSelection(Control[] children, Control childElement) // for getting location value Control control = children[5]; // for button click - ((Button) childElement).notifyListeners(SWT.Selection, new Event()); + childElement.notifyListeners(SWT.Selection, new Event()); assertNotNull(Toolkit.getDefaultToolkit().getSystemClipboard() .getData(DataFlavor.stringFlavor)); assertEquals(((Text) control).getText(), Toolkit.getDefaultToolkit()