Skip to content

Commit 55678ee

Browse files
committed
Synchronize Console view icon with selected console
The Console view icon now reflects the currently selected console. This helps users quickly identify different consoles when multiple consoles are present, without having to inspect each one.
1 parent c905608 commit 55678ee

1 file changed

Lines changed: 39 additions & 1 deletion

File tree

  • debug/org.eclipse.ui.console/src/org/eclipse/ui/internal/console

debug/org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsoleView.java

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*******************************************************************************
2-
* Copyright (c) 2000, 2018 IBM Corporation and others.
2+
* Copyright (c) 2000, 2026 IBM Corporation and others.
33
*
44
* This program and the accompanying materials
55
* are made available under the terms of the Eclipse Public License 2.0
@@ -29,12 +29,15 @@
2929
import org.eclipse.jface.action.Separator;
3030
import org.eclipse.jface.action.ToolBarManager;
3131
import org.eclipse.jface.resource.ImageDescriptor;
32+
import org.eclipse.jface.resource.JFaceResources;
33+
import org.eclipse.jface.resource.LocalResourceManager;
3234
import org.eclipse.jface.util.IPropertyChangeListener;
3335
import org.eclipse.jface.util.PropertyChangeEvent;
3436
import org.eclipse.jface.viewers.IBasicPropertyConstants;
3537
import org.eclipse.swt.custom.StyledText;
3638
import org.eclipse.swt.events.MouseAdapter;
3739
import org.eclipse.swt.events.MouseEvent;
40+
import org.eclipse.swt.graphics.Image;
3841
import org.eclipse.swt.graphics.Point;
3942
import org.eclipse.swt.widgets.Composite;
4043
import org.eclipse.swt.widgets.Control;
@@ -123,6 +126,9 @@ public class ConsoleView extends PageBookView implements IConsoleView, IConsoleL
123126
private boolean fScrollLock;
124127
private boolean fWordWrap;
125128

129+
private Image currentIcon, defaultIcon;
130+
private LocalResourceManager localResManager;
131+
126132
private boolean isAvailable() {
127133
return getPageBook() != null && !getPageBook().isDisposed();
128134
}
@@ -184,6 +190,7 @@ protected void showPageRec(PageRec pageRec) {
184190
}
185191
updateTitle();
186192
updateHelp();
193+
updateIcon();
187194
// update console actions
188195
if (fPinAction != null) {
189196
fPinAction.update();
@@ -269,6 +276,30 @@ protected void updateHelp() {
269276
PlatformUI.getWorkbench().getHelpSystem().setHelp(getPageBook().getParent(), helpContextId);
270277
}
271278

279+
protected void updateIcon() {
280+
IConsole console = getConsole();
281+
if (console == null) {
282+
return;
283+
}
284+
Image newImage = null;
285+
286+
if (console != null) {
287+
ImageDescriptor desc = console.getImageDescriptor();
288+
if (desc != null) {
289+
newImage = localResManager.create(desc);
290+
}
291+
}
292+
293+
if (newImage == null) {
294+
newImage = defaultIcon;
295+
}
296+
297+
if (!newImage.equals(currentIcon)) {
298+
currentIcon = newImage;
299+
setTitleImage(currentIcon);
300+
}
301+
}
302+
272303
@Override
273304
protected void doDestroyPage(IWorkbenchPart part, PageRec pageRecord) {
274305
IConsole console = fPartToConsole.get(part);
@@ -376,6 +407,10 @@ public void dispose() {
376407
fOpenConsoleAction.dispose();
377408
fOpenConsoleAction = null;
378409
}
410+
if (localResManager != null) {
411+
localResManager.dispose();
412+
localResManager = null;
413+
}
379414
}
380415

381416
/**
@@ -575,6 +610,9 @@ public void createPartControl(Composite parent) {
575610
PlatformUI.getWorkbench().getHelpSystem().setHelp(parent, IConsoleHelpContextIds.CONSOLE_VIEW);
576611
getViewSite().getPage().addPartListener((IPartListener2)this);
577612
initPageSwitcher();
613+
localResManager = new LocalResourceManager(JFaceResources.getResources(), parent);
614+
defaultIcon = ConsolePluginImages.getImage(IConsoleConstants.IMG_VIEW_CONSOLE);
615+
currentIcon = defaultIcon;
578616
}
579617

580618
/**

0 commit comments

Comments
 (0)