IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Eclipse Platform Discussion :

[PDE]Icone TableViewer introuvable


Sujet :

Eclipse Platform

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 97
    Points : 89
    Points
    89
    Par défaut [PDE]Icone TableViewer introuvable
    Bonjour,

    Je suis nouveau dans le développement de plug-ins et dans l'utilisation de SWT/JFace.
    Mon problème est que je voudrais afficher les résultats d'une requête à une base de donnée dans un TableViewer, et je voudrais qu'une petite icône s'affiche en début de chaque ligne. En me renseignant, j'ai trouvé un bout de code qui me plaisait assez bien :

    une classe helper :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    import java.net.MalformedURLException;
    import java.net.URL;
     
    import org.eclipse.jface.resource.ImageDescriptor;
    import org.eclipse.jface.resource.ImageRegistry;
     
    public class Pics {
    	private static ImageRegistry image_registry;
     
    	  public static URL newURL(String url_name)
    	  {
    	    try
    	    {
    	      return new URL(url_name);
    	    }
    	    catch (MalformedURLException e)
    	    {
    	      throw new RuntimeException("Malformed URL " + url_name, e);
    	    }
    	  }
     
    	  public static ImageRegistry getImageRegistry()
    	  {
    	    if (image_registry == null)
    	    { 
                      image_registry = new ImageRegistry();
    	      image_registry.put(
    	        "homme",
    	        ImageDescriptor.createFromURL(newURL("file:/icons/               icon_homme.jpg")));
     
    	    return image_registry;
    	  }
    }
    et comme appel, dans mon getImage(Object obj) du View LabelProvider :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public Image getImage(Object obj) {			
    			Image image = Pics.getImageRegistry().get("homme");						
    			return image;
    		}
    Problème :les icônes ne s'affichent pas, j'obtiens des carrés rouges à la place (signifiant que l'image n'a pas pu être trouvée)

    Comment résoudre ce problème? J'ai essayé d'autres méthodes et j'ai un peu trituré celle-là mais toujours sans réel succès :-(

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 97
    Points : 89
    Points
    89
    Par défaut
    Voici le début du stacktrace si ça peut aider...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Application Started: 8322
    2009/03/09 16:39:44.865 WARNING The image could not be loaded: URLImageDescriptor(file:icons/icon_homme.jpg) ::class.method=unknown ::thread=main ::loggername=org.eclipse.jface
     
    	org.eclipse.jface.resource.DeviceResourceException: Unable to create resource URLImageDescriptor(file:icons/icon_homme.jpg)
    	at org.eclipse.jface.resource.ImageDescriptor.createResource(ImageDescriptor.java:167)
    	at org.eclipse.jface.resource.DeviceResourceManager.allocate(DeviceResourceManager.java:56)
    	at org.eclipse.jface.resource.AbstractResourceManager.create(AbstractResourceManager.java:88)
    	at org.eclipse.jface.resource.ResourceManager.createImageWithDefault(ResourceManager.java:192)
    	at org.eclipse.jface.resource.ImageRegistry.get(ImageRegistry.java:212)
    	at draftui2.views.SampleView$ViewLabelProvider.getColumnImage(SampleView.java:73)
    	at org.eclipse.jface.viewers.TableColumnViewerLabelProvider.update(TableColumnViewerLabelProvider.java:71)
    	at org.eclipse.jface.viewers.ViewerColumn.refresh(ViewerColumn.java:145)
    	at org.eclipse.jface.viewers.AbstractTableViewer.doUpdateItem(AbstractTableViewer.java:386)

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2009
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 68
    Points : 75
    Points
    75
    Par défaut
    Tu dois utiliser le registre d'image contenu dans ton plugin dérivant de AbstractUIPlugin.
    Pour cela, surcharge la méthode initializeImageRegistry et enregistre les images que tu utiliseras régulièrement dans ce plugin. Ne pas oublier d'inclure les images dans le build !!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    /**
     * The activator class controls the plug-in life cycle
     */
    public class Activator extends AbstractUIPlugin {
     
    	// The plug-in ID
    	public static final String PLUGIN_ID = "...........";
     
    	// Image Id
    	public static final String ICON_QUERY_RESULT = "icon_query_result";
     
    /*
    .....
     
    */
     
    	@Override
    	protected void initializeImageRegistry(ImageRegistry reg) {
    		addImageInRegistry(reg, ICON_QUERY_RESULT, "icons/query_res.gif");
    	}
     
    	private void addImageInRegistry(ImageRegistry reg, String id, String imagePath) {
    		Bundle bundle = Platform.getBundle(PLUGIN_ID);
    	    IPath path = new Path(imagePath);
    	    URL url = FileLocator.find(bundle, path, null);
    	    ImageDescriptor desc = ImageDescriptor.createFromURL(url);
    	    if(desc != null) {
    	    	reg.put(id, desc);
    	    }
    	}
    Il suffit ensuite de récupérer le registre d'image du plugin et de faire un get de l'id de l'image souhaitée

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 97
    Points : 89
    Points
    89
    Par défaut
    Salut KorWipe,

    Merci beaucoup pour ta réponse qui m'a l'air assez complète en plus :-) .
    Je n'ai plus l'occasion de tester cela aujourd'hui, mais ce sera fait dès demain matin ;-)

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 97
    Points : 89
    Points
    89
    Par défaut
    Salut,

    Un grand merci KorWipe, ça fonctionne nikel, t'es un chef :-)
    Juste pour ceux qui seraient un peu perdus et qui rencontreraient le même problème, voici comment effectuer la dernière étape du "tutoriel" de KorWipe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Activator.getDefault().getImageRegistry().get("icon_query_result");

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 07/01/2015, 08h03
  2. [XP] l'icone Voix est introuvable ?
    Par sali dans le forum Windows XP
    Réponses: 8
    Dernier message: 20/08/2005, 08h53
  3. Attribuer une icone à une application
    Par k_boy dans le forum x86 32-bits / 64-bits
    Réponses: 4
    Dernier message: 31/08/2002, 02h38
  4. [FORMS] Chemin des icones (intégré FAQ 150 QR)
    Par jerome62 dans le forum Forms
    Réponses: 2
    Dernier message: 30/07/2002, 09h32
  5. [Kylix] icone associée à un programme
    Par Anonymous dans le forum EDI
    Réponses: 1
    Dernier message: 22/03/2002, 10h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo