diff --git a/debug/org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsoleView.java b/debug/org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsoleView.java index 145fcd3d5ea..0a72b57436e 100644 --- a/debug/org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsoleView.java +++ b/debug/org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsoleView.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2000, 2018 IBM Corporation and others. + * Copyright (c) 2000, 2026 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 @@ -29,12 +29,15 @@ import org.eclipse.jface.action.Separator; import org.eclipse.jface.action.ToolBarManager; import org.eclipse.jface.resource.ImageDescriptor; +import org.eclipse.jface.resource.JFaceResources; +import org.eclipse.jface.resource.LocalResourceManager; import org.eclipse.jface.util.IPropertyChangeListener; import org.eclipse.jface.util.PropertyChangeEvent; import org.eclipse.jface.viewers.IBasicPropertyConstants; import org.eclipse.swt.custom.StyledText; import org.eclipse.swt.events.MouseAdapter; import org.eclipse.swt.events.MouseEvent; +import org.eclipse.swt.graphics.Image; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; @@ -123,6 +126,9 @@ public class ConsoleView extends PageBookView implements IConsoleView, IConsoleL private boolean fScrollLock; private boolean fWordWrap; + private Image currentIcon, defaultIcon; + private LocalResourceManager localResManager; + private boolean isAvailable() { return getPageBook() != null && !getPageBook().isDisposed(); } @@ -184,6 +190,7 @@ protected void showPageRec(PageRec pageRec) { } updateTitle(); updateHelp(); + updateIcon(); // update console actions if (fPinAction != null) { fPinAction.update(); @@ -269,6 +276,31 @@ protected void updateHelp() { PlatformUI.getWorkbench().getHelpSystem().setHelp(getPageBook().getParent(), helpContextId); } + protected void updateIcon() { + IConsole console = getConsole(); + if (console == null) { + // Check and restore default console icon if last page is closed + if (currentIcon != defaultIcon) { + currentIcon = defaultIcon; + setTitleImage(currentIcon); + } + return; + } + Image newImage; + + ImageDescriptor desc = console.getImageDescriptor(); + if (desc != null) { + newImage = localResManager.create(desc); + } else { + newImage = defaultIcon; + } + + if (!newImage.equals(currentIcon)) { + currentIcon = newImage; + setTitleImage(currentIcon); + } + } + @Override protected void doDestroyPage(IWorkbenchPart part, PageRec pageRecord) { IConsole console = fPartToConsole.get(part); @@ -376,6 +408,10 @@ public void dispose() { fOpenConsoleAction.dispose(); fOpenConsoleAction = null; } + if (localResManager != null) { + localResManager.dispose(); + localResManager = null; + } } /** @@ -575,6 +611,9 @@ public void createPartControl(Composite parent) { PlatformUI.getWorkbench().getHelpSystem().setHelp(parent, IConsoleHelpContextIds.CONSOLE_VIEW); getViewSite().getPage().addPartListener((IPartListener2)this); initPageSwitcher(); + localResManager = new LocalResourceManager(JFaceResources.getResources(), parent); + defaultIcon = ConsolePluginImages.getImage(IConsoleConstants.IMG_VIEW_CONSOLE); + currentIcon = defaultIcon; } /**