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) {