Bug 552554 - [MinMaxAddon] Part Icon not updated when setIconURI is
called
React on UIEvents.UILabel.TOPIC_ICONURI in TrimStack
Change-Id: I14afeb19f052b3ac84f90b8ccafe483bcd4e0de0
Signed-off-by: Benedikt Kuntz <benedikt.kuntz@airbus.com>
diff --git a/bundles/org.eclipse.e4.ui.workbench.addons.swt/src/org/eclipse/e4/ui/workbench/addons/minmax/TrimStack.java b/bundles/org.eclipse.e4.ui.workbench.addons.swt/src/org/eclipse/e4/ui/workbench/addons/minmax/TrimStack.java
index 8cc5d3a..1190112 100644
--- a/bundles/org.eclipse.e4.ui.workbench.addons.swt/src/org/eclipse/e4/ui/workbench/addons/minmax/TrimStack.java
+++ b/bundles/org.eclipse.e4.ui.workbench.addons.swt/src/org/eclipse/e4/ui/workbench/addons/minmax/TrimStack.java
@@ -72,6 +72,7 @@
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.ToolBar;
import org.eclipse.swt.widgets.ToolItem;
+import org.osgi.service.event.Event;
import org.osgi.service.event.EventHandler;
@@ -256,6 +257,25 @@
}
}
+ @Inject
+ @Optional
+ private void subscribeTopicIconUriChanged(@UIEventTopic(UIEvents.UILabel.TOPIC_ICONURI) Event event) {
+ // Prevent exceptions on shutdown
+ if (trimStackTB == null || trimStackTB.isDisposed() || minimizedElement.getWidget() == null) {
+ return;
+ }
+
+ Object changedElement = event.getProperty(UIEvents.EventTags.ELEMENT);
+ if (!(changedElement instanceof MUIElement)) {
+ return;
+ }
+
+ ToolItem toolItem = getChangedToolItem((MUIElement) changedElement);
+ if (toolItem != null) {
+ toolItem.setImage(getImage((MUILabel) toolItem.getData()));
+ }
+ }
+
private ToolItem getChangedToolItem(MUIElement changedElement) {
ToolItem[] toolItems = trimStackTB.getItems();
for (ToolItem toolItem : toolItems) {