From c87d92c092e861065ea947b4578638c6296d2056 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christoph=20L=C3=A4ubrich?= Date: Sun, 19 Jan 2025 20:20:14 +0100 Subject: [PATCH] Add static method to the interface of ISharedImages to get the instance Currently one needs to first obtain the PaltformUI Workbench and then call getSharedImages on this instance. As this actually maps down to WorkBenchPlugin that do not require a running workbench this limits the usage of such code only wanting to share images. This adds a new ISharedImages.get() that directly calls the code the IWorkbench implementation would call and replace static calls to the workbench with this one. --- .../eclipseui/org/eclipse/ui/ISharedImages.java | 9 +++++++++ .../org/eclipse/ui/actions/NewWizardAction.java | 4 ++-- .../org/eclipse/ui/internal/WorkbenchPartReference.java | 4 ++-- .../org/eclipse/ui/internal/about/ProductInfoPage.java | 2 +- .../ui/internal/dialogs/WorkbenchWizardElement.java | 3 ++- .../org/eclipse/ui/operations/RedoActionHandler.java | 5 ++--- .../org/eclipse/ui/operations/UndoActionHandler.java | 5 ++--- .../eclipseui/org/eclipse/ui/part/DrillDownAdapter.java | 3 +-- .../eclipseui/org/eclipse/ui/part/IntroPart.java | 3 +-- .../eclipseui/org/eclipse/ui/part/WorkbenchPart.java | 5 ++--- 10 files changed, 24 insertions(+), 19 deletions(-) diff --git a/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/ISharedImages.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/ISharedImages.java index 72e527f5076..fce09e563a2 100644 --- a/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/ISharedImages.java +++ b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/ISharedImages.java @@ -18,6 +18,7 @@ import org.eclipse.swt.graphics.Device; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.graphics.ImageData; +import org.eclipse.ui.internal.WorkbenchPlugin; /** * A registry for common images used by the workbench which may be useful to @@ -855,4 +856,12 @@ public interface ISharedImages { * @return the image descriptor, or null if not found */ ImageDescriptor getImageDescriptor(String symbolicName); + + /** + * @since 3.135 + * @return the default {@link ISharedImages} instance + */ + static ISharedImages get() { + return WorkbenchPlugin.getDefault().getSharedImages(); + } } diff --git a/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/actions/NewWizardAction.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/actions/NewWizardAction.java index e4e5c79e73c..da446820586 100644 --- a/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/actions/NewWizardAction.java +++ b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/actions/NewWizardAction.java @@ -99,11 +99,11 @@ public NewWizardAction(IWorkbenchWindow window) { this.workbenchWindow = window; tracker = new PerspectiveTracker(window, this); // @issues should be IDE-specific images - ISharedImages images = PlatformUI.getWorkbench().getSharedImages(); + ISharedImages images = window.getWorkbench().getSharedImages(); setImageDescriptor(images.getImageDescriptor(ISharedImages.IMG_TOOL_NEW_WIZARD)); setDisabledImageDescriptor(images.getImageDescriptor(ISharedImages.IMG_TOOL_NEW_WIZARD_DISABLED)); setToolTipText(WorkbenchMessages.NewWizardAction_toolTip); - PlatformUI.getWorkbench().getHelpSystem().setHelp(this, IWorkbenchHelpContextIds.NEW_ACTION); + window.getWorkbench().getHelpSystem().setHelp(this, IWorkbenchHelpContextIds.NEW_ACTION); } /** diff --git a/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/WorkbenchPartReference.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/WorkbenchPartReference.java index 2756199990e..0c495be51a4 100644 --- a/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/WorkbenchPartReference.java +++ b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/WorkbenchPartReference.java @@ -329,7 +329,7 @@ protected final String getRawTitle() { @Override public final Image getTitleImage() { if (isDisposed()) { - return PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_DEF_VIEW); + return ISharedImages.get().getImage(ISharedImages.IMG_DEF_VIEW); } WorkbenchWindow wbw = (WorkbenchWindow) PlatformUI.getWorkbench().getActiveWorkbenchWindow(); @@ -341,7 +341,7 @@ public final Image getTitleImage() { } } - return PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_DEF_VIEW); + return wbw.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_DEF_VIEW); } /* package */ void fireVisibilityChange() { diff --git a/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/about/ProductInfoPage.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/about/ProductInfoPage.java index 005aedf979a..970c585dcf2 100644 --- a/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/about/ProductInfoPage.java +++ b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/about/ProductInfoPage.java @@ -93,7 +93,7 @@ protected final void addCopySupport(Table table) { MenuItem copyItem = new MenuItem(menu, SWT.NONE); copyItem.addSelectionListener(SelectionListener.widgetSelectedAdapter(e -> handler.copySelection(table))); copyItem.setText(JFaceResources.getString("copy")); //$NON-NLS-1$ - copyItem.setImage(PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_TOOL_COPY)); + copyItem.setImage(ISharedImages.get().getImage(ISharedImages.IMG_TOOL_COPY)); table.setMenu(menu); diff --git a/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/WorkbenchWizardElement.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/WorkbenchWizardElement.java index 704608fc848..37c553a7615 100644 --- a/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/WorkbenchWizardElement.java +++ b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/WorkbenchWizardElement.java @@ -24,6 +24,7 @@ import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.ui.IPluginContribution; +import org.eclipse.ui.ISharedImages; import org.eclipse.ui.IWorkbenchWizard; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.SelectionEnabler; @@ -169,7 +170,7 @@ public ImageDescriptor getImageDescriptor() { } imageDescriptor = ResourceLocator .imageDescriptorFromBundle(configurationElement.getNamespaceIdentifier(), iconName) - .orElse(PlatformUI.getWorkbench().getSharedImages().getImageDescriptor(iconName)); + .orElse(ISharedImages.get().getImageDescriptor(iconName)); } return imageDescriptor; } diff --git a/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/operations/RedoActionHandler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/operations/RedoActionHandler.java index 2c1f91000e5..fb3ae6246dd 100644 --- a/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/operations/RedoActionHandler.java +++ b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/operations/RedoActionHandler.java @@ -21,7 +21,6 @@ import org.eclipse.ui.ISharedImages; import org.eclipse.ui.IWorkbenchCommandConstants; import org.eclipse.ui.IWorkbenchPartSite; -import org.eclipse.ui.PlatformUI; import org.eclipse.ui.internal.WorkbenchMessages; /** @@ -44,9 +43,9 @@ public final class RedoActionHandler extends OperationHistoryActionHandler { */ public RedoActionHandler(IWorkbenchPartSite site, IUndoContext context) { super(site, context); - setImageDescriptor(PlatformUI.getWorkbench().getSharedImages().getImageDescriptor(ISharedImages.IMG_TOOL_REDO)); + setImageDescriptor(ISharedImages.get().getImageDescriptor(ISharedImages.IMG_TOOL_REDO)); setDisabledImageDescriptor( - PlatformUI.getWorkbench().getSharedImages().getImageDescriptor(ISharedImages.IMG_TOOL_REDO_DISABLED)); + ISharedImages.get().getImageDescriptor(ISharedImages.IMG_TOOL_REDO_DISABLED)); setActionDefinitionId(IWorkbenchCommandConstants.EDIT_REDO); } diff --git a/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/operations/UndoActionHandler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/operations/UndoActionHandler.java index 57b7c55a97a..a7f78510037 100644 --- a/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/operations/UndoActionHandler.java +++ b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/operations/UndoActionHandler.java @@ -21,7 +21,6 @@ import org.eclipse.ui.ISharedImages; import org.eclipse.ui.IWorkbenchCommandConstants; import org.eclipse.ui.IWorkbenchPartSite; -import org.eclipse.ui.PlatformUI; import org.eclipse.ui.internal.WorkbenchMessages; /** @@ -44,9 +43,9 @@ public final class UndoActionHandler extends OperationHistoryActionHandler { */ public UndoActionHandler(IWorkbenchPartSite site, IUndoContext context) { super(site, context); - setImageDescriptor(PlatformUI.getWorkbench().getSharedImages().getImageDescriptor(ISharedImages.IMG_TOOL_UNDO)); + setImageDescriptor(ISharedImages.get().getImageDescriptor(ISharedImages.IMG_TOOL_UNDO)); setDisabledImageDescriptor( - PlatformUI.getWorkbench().getSharedImages().getImageDescriptor(ISharedImages.IMG_TOOL_UNDO_DISABLED)); + ISharedImages.get().getImageDescriptor(ISharedImages.IMG_TOOL_UNDO_DISABLED)); setActionDefinitionId(IWorkbenchCommandConstants.EDIT_UNDO); } diff --git a/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/DrillDownAdapter.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/DrillDownAdapter.java index ceab9d85cb3..a528d1a2d27 100644 --- a/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/DrillDownAdapter.java +++ b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/DrillDownAdapter.java @@ -24,7 +24,6 @@ import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.ui.ISharedImages; -import org.eclipse.ui.PlatformUI; import org.eclipse.ui.internal.WorkbenchImages; import org.eclipse.ui.internal.WorkbenchMessages; @@ -166,7 +165,7 @@ public void run() { homeAction.setImageDescriptor(WorkbenchImages.getImageDescriptor(ISharedImages.IMG_ETOOL_HOME_NAV)); // Back. - ISharedImages images = PlatformUI.getWorkbench().getSharedImages(); + ISharedImages images = ISharedImages.get(); backAction = new Action(WorkbenchMessages.GoBack_text) { @Override public void run() { diff --git a/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/IntroPart.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/IntroPart.java index f94b86da366..93cfd320434 100644 --- a/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/IntroPart.java +++ b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/IntroPart.java @@ -32,7 +32,6 @@ import org.eclipse.ui.IPropertyListener; import org.eclipse.ui.ISharedImages; import org.eclipse.ui.PartInitException; -import org.eclipse.ui.PlatformUI; import org.eclipse.ui.internal.intro.IntroMessages; import org.eclipse.ui.internal.registry.IWorkbenchRegistryConstants; import org.eclipse.ui.intro.IIntroPart; @@ -151,7 +150,7 @@ protected IConfigurationElement getConfigurationElement() { * @return the default image */ protected Image getDefaultImage() { - return PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_DEF_VIEW); + return ISharedImages.get().getImage(ISharedImages.IMG_DEF_VIEW); } @Override diff --git a/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/WorkbenchPart.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/WorkbenchPart.java index c97bada5666..19bc7d378e6 100644 --- a/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/WorkbenchPart.java +++ b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/WorkbenchPart.java @@ -43,7 +43,6 @@ import org.eclipse.ui.IWorkbenchPart3; import org.eclipse.ui.IWorkbenchPartConstants; import org.eclipse.ui.IWorkbenchPartSite; -import org.eclipse.ui.PlatformUI; import org.eclipse.ui.internal.PartSite; import org.eclipse.ui.internal.WorkbenchMessages; import org.eclipse.ui.internal.WorkbenchPlugin; @@ -168,7 +167,7 @@ protected IConfigurationElement getConfigurationElement() { * @return the default image */ protected Image getDefaultImage() { - return PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_DEF_VIEW); + return ISharedImages.get().getImage(ISharedImages.IMG_DEF_VIEW); } @Override @@ -233,7 +232,7 @@ public void setInitializationData(IConfigurationElement cfig, String propertyNam } imageDescriptor = ResourceLocator.imageDescriptorFromBundle(configElement.getContributor().getName(), strIcon); if (!imageDescriptor.isPresent()) { - ImageDescriptor shared = PlatformUI.getWorkbench().getSharedImages().getImageDescriptor(strIcon); + ImageDescriptor shared = ISharedImages.get().getImageDescriptor(strIcon); imageDescriptor = Optional.ofNullable(shared); } imageDescriptor.ifPresent(d -> titleImage = JFaceResources.getResources().createImageWithDefault(d));