# AbstractUIPlugin.imageDescriptorFromPlugin liefert immer null zurück



## schnurpsel (25. Aug 2010)

Hallo,

ich stehe mal wieder vor einem Problem. Und zwar möchte ich über ein decoration.addOverlay das Icon eines Elements verändern.

Dafür habe ich einen Ordner icons angelegt, in welchem sich das Bild befindet. 
In IImageKeys habe ich 
	
	
	
	





```
public static final String ICON_OVERLAY = "icons/sample_decorator.gif";
```
 angelegt.

In der Klasse MakeDecoration steht der Aufruf

```
if (imported) {
			ImageDescriptor descr = Activator.getImageDescriptor(ITestingImageKeys.ICON_OVERLAY);
		}
```

und im Activator des Plugins steht

```
public static ImageDescriptor getImageDescriptor(String path) {
		ImageDescriptor descr = AbstractUIPlugin.imageDescriptorFromPlugin(
				Activator.PLUGIN_ID, path);
		return descr;
	}
```

Die Funktion liefert mir aber immer "null" zurück. Ich habe schon gegooglet und auch hier im Forum gelesen, aber ich finde das Problem einfach nicht.
Hoffe mir kann jemand einen Tipp geben 

Grüße von schnurpsel


----------



## Wildcard (25. Aug 2010)

Stimmt die Groß/Kleinschreibung? Stimmt der Pfad? Liegt "icons" im Root des Bundles? Funktioniert es nur nach dem installieren nicht mehr, oder auch schon aus der IDE heraus?


----------



## schnurpsel (27. Aug 2010)

Der Ordner icons liegt auf der gleichen Ebene wie der src-Ordner und es funktioniert schon aus der IDE heraus nicht. 

Ich habe das jetzt etwas abgeändert und zwar im Activator des Plugins in der start-Funktion die Bilder in die ImageRegistry geladen

```
imageRegistry = plugin.getImageRegistry();
imageRegistry.put(ITestingImageKeys.ICON_OVERLAY,ImageDescriptor.createFromFile(Activator.class,ITestingImageKeys.ICON_OVERLAY));
imageRegistry.put(ITestingImageKeys.ANALYSED,ImageDescriptor.createFromFile(Activator.class,ITestingImageKeys.ANALYSED));
```

Jetzt liefert 

```
ImageDescriptor descr = plugin.getImageRegistry().getDescriptor(ITestingImageKeys.ICON_OVERLAY);
```
zwar nicht mehr null zurück, aber die dargestellten Bilder sind falsch. Also statt dem gewünschten Bild wird nur ein kleines orangefarbenes Quadrat angezeigt. Die overlay-Icons haben genau die gleichen Eigenschaften bzgl. Größe und Auflösung wie die overlay-Icons im Originalprogramm. Im Anhang ein kleiner Screenshot (das untere Icon wird vom Originalprogramm overlayed und das obere Icon wird von meinem Plugin overlayed und soll eigentlich anders aussehen).

Das gleiche Icon wird übrigens auch für eine Button in der Toolbar verwendet und dort anstandslos angezeigt.

Viele Grüße
schnurpsel


----------



## Wildcard (27. Aug 2010)

Das ist lediglich das generische 'konnte Icon nicht laden/finden' Icon der Image Registry. Ich Tippe weiterhin auf ein Pfad Problem bzgw. Groß-Kleinschreibung. Zur Not, wirf denn Debugger an


----------



## schnurpsel (31. Aug 2010)

Hallo,

ich habs jetzt hinbekommen mit folgenden Aufrufen. An den Pfaden lag es somit nicht, denn die habe ich nicht verändert. Ich verstehe zwar immer noch nicht, warum es anfangs nicht so funktioniert hat, wie es erstmal überall als einfachste Lösung angegeben wird, aber Hauptsache ich sehe jetzt die korrekten Icons.


```
protected void initializeImageRegistry(ImageRegistry registry) {
	        super.initializeImageRegistry(registry);
	        Bundle bundle = Activator.getDefault().getBundle();

	        ImageDescriptor myImage = ImageDescriptor.createFromURL(FileLocator.find(bundle, new Path(ITestingImageKeys.OVERLAY_ICON),null));
	        registry.put(ITestingImageKeys.OVERLAY_ICON, myImage);
	}

public static ImageDescriptor getImageDescriptor(String path) {

		AbstractUIPlugin plugin = Activator.getDefault();
		ImageRegistry imageRegistry = plugin.getImageRegistry();
		ImageDescriptor descr = imageRegistry.getDescriptor(path);
		return descr;
	}
```

Danke für deine Hilfe wildcard 

Grüße von schnurpsel


----------



## KiezKauz (9. Jun 2011)

I had a similar problem as 
	
	
	
	





```
Platform.getBundle()
```
 never returned my plugin bundle and therefore no images could be found. It turned out, that I had renamed the pluginid in Manifest.mf long ago, but did not pay attention to the static constant PLUGIN_ID in my Activator class. After adjusting that constant to the same ID as in the Manifest.mf it worked.


----------

