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 :

Eclipse RCP - Action Validate et Problems View


Sujet :

Eclipse Platform

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 10
    Points : 7
    Points
    7
    Par défaut Eclipse RCP - Action Validate et Problems View
    Bonjour à tous,

    Je vous expose mon problème:

    Je souhaite appeler programmatiquement la fonction Validate présente dans le menu contextuel, je ne trouve aucun moyen permettant de faire cela... est-ce possible? Si oui, comment?
    Je souhaite l'appeler dans un handler. Pour effectuer automatiquement l'action de validation de mon modèle avant d'effectuer une action dessus.
    Je souhaite également avoir un bouton de validation dans la barre d'outils et un raccourci clavier...

    Un autre problème, peut-on afficher des erreurs dans la vue "Problems"? car c'est dans cette vue que s'affiche déjà les problèmes dû à la validation.
    Ou peut-on récupérer les erreurs de validation qui s'affiche dans cette vue, pour les recopier dans la vue Console par exemple?

    Merci.

  2. #2
    Membre expert
    Avatar de Gueritarish
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2007
    Messages
    1 800
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 800
    Points : 3 919
    Points
    3 919
    Par défaut
    Salut,

    Pour ton problème de validation, il va falloir être plus spécifique... C'est quel menu Validate?? C'est celui d'EMF? Si c'est le cas, tu as toute une partie sur le sujet dans l'aide d'Eclipse sur la validation.

    Ensuite, pour ce qui est de la vue Problems, tu peux y contribuer en créant des marker qui se rajouteront automatiquement dans cette vue. Jette un oeil sur le tutoriel d'Eclipse ça t'aidera.

    Voilà, à+
    Gueritarish
    Pas de questions technique par MP, les forums sont là pour ça.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Merci de ta réponse rapide, je vais regarder ca au plus vite

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    La première partie de la question est résolue.

    Le lien m'a bien aidé mais je suis arrivé sur ce lien qui m'a fourni la solution:
    http://help.eclipse.org/galileo/inde...alidation.html

    Le seul petit bémol, c'est que lorsque je l'appelle programmatiquement, la fonction validate n'affiche rien dans la ProblemsView et n'affiche pas non plus une DialogBox.
    Ce qui nous amène à mon second problème...

    Je travaille donc actuellement sur l'affichage d'erreurs dans la ProblemsView, je vous tiens au courant.

    A plus!

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Bonjour à tous,

    Voici comment appeler la fonction validate programmatiquement et afficher les problèmes dans la vue Problems de Eclipse.

    Solution trouvée ici:
    http://webcache.googleusercontent.co...=www.google.fr

    Pour la DialogBox Validate, je l'ai refaite à la main.

    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    	/**
             * Validate the model
             * @param eObject
             * @return boolean
             */
    	 public static Vector<String> validateObject(EObject eObject, Resource resource)
    	  {
    		 Vector<String> messagesErrors = new Vector<String>();
    		 messagesErrors.clear();
    		try {
    			getFile(resource).deleteMarkers(EValidator.MARKER, true, IResource.DEPTH_ZERO);
    		} catch (CoreException e) {
    			e.printStackTrace();
    		}
    	    Diagnostic diagnostic = Diagnostician.INSTANCE.validate(eObject);
    	    if (diagnostic.getSeverity() == Diagnostic.ERROR || diagnostic.getSeverity() == Diagnostic.WARNING)
    	    {
    		 try {
    	        	PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().showView("org.eclipse.ui.views.ProblemView");
    			} catch (PartInitException e) {
    				e.printStackTrace();
    			}
    	      System.err.println(diagnostic.getMessage());
    	      for (Iterator i=diagnostic.getChildren().iterator(); i.hasNext();)
    	      {
    	        Diagnostic childDiagnostic = (Diagnostic)i.next();
    	        switch (childDiagnostic.getSeverity())
    	        {
    	          case Diagnostic.ERROR:
    	          case Diagnostic.WARNING:
    	            System.err.println("\t" + childDiagnostic.getMessage());
    	          messagesErrors.addElement(childDiagnostic.getMessage());
    	        }
    	        createMarkers(getFile(resource), childDiagnostic);
    	      }
    	      return messagesErrors;
    	    }	    
    	    return messagesErrors;
    	  }
     
     
        /**
         * Return the IFile associated with the given resource
         * 
         * @param resource the EMF resource
         * @return the containing IFile or <code>null</code> if the resource is not an IFile
         */
        private static IFile getFile(Resource resource)
        {
            URI uri = resource.getURI();
            uri = resource.getResourceSet().getURIConverter().normalize(uri);
            String scheme = uri.scheme();
            if ("platform".equals(scheme) && uri.segmentCount() > 1 && "resource".equals(uri.segment(0)))
            {
                StringBuffer platformResourcePath = new StringBuffer();
                for (int j = 1; j < uri.segmentCount(); ++j)
                {
                    platformResourcePath.append('/');
                    platformResourcePath.append(uri.segment(j));
                }
                return ResourcesPlugin.getWorkspace().getRoot().getFile(new Path(platformResourcePath.toString()));
            }
            return null;
        }
     
        /**
         * This is a temporary method copied from the EMF EclipseResourceUtil to keep compatibility from 3.2M6 to 3.2RC4.<br>
         * It should be removed in the next versions
         * 
         * @param file
         * @param diagnostic
         */
        public static void createMarkers(IFile file, Diagnostic diagnostic)
        {
            EObject eObject = null;
            List data = diagnostic.getData();
            if (!data.isEmpty())
            {
                Object target = data.get(0);
                if (target instanceof EObject)
                {
                    eObject = (EObject) target;
                }
            }
            if (diagnostic.getChildren().isEmpty())
            {
                try
                {
                    IMarker marker = file.createMarker(EValidator.MARKER);
                    int severity = diagnostic.getSeverity();
                    if (severity < Diagnostic.WARNING)
                    {
                        marker.setAttribute(IMarker.SEVERITY, IMarker.SEVERITY_INFO);
                    }
                    else if (severity < Diagnostic.ERROR)
                    {
                        marker.setAttribute(IMarker.SEVERITY, IMarker.SEVERITY_WARNING);
                    }
                    else
                    {
                        marker.setAttribute(IMarker.SEVERITY, IMarker.SEVERITY_ERROR);
                    }
                    marker.setAttribute(IMarker.MESSAGE, diagnostic.getMessage());
                    if (eObject != null)
                    {
                        marker.setAttribute(EValidator.URI_ATTRIBUTE, EcoreUtil.getURI(eObject).toString());
                    }
                }
                catch (CoreException exception)
                {
                	exception.printStackTrace();
                }
            }
            else
            {
                String parentMessage = diagnostic.getMessage() + ". ";
                for (Iterator i = diagnostic.getChildren().iterator(); i.hasNext();)
                {
                    Diagnostic childDiagnostic = (Diagnostic) i.next();
                    try
                    {
                        IMarker marker = file.createMarker(EValidator.MARKER);
                        int severity = childDiagnostic.getSeverity();
                        if (severity < Diagnostic.WARNING)
                        {
                            marker.setAttribute(IMarker.SEVERITY, IMarker.SEVERITY_INFO);
                        }
                        else if (severity < Diagnostic.ERROR)
                        {
                            marker.setAttribute(IMarker.SEVERITY, IMarker.SEVERITY_WARNING);
                        }
                        else
                        {
                            marker.setAttribute(IMarker.SEVERITY, IMarker.SEVERITY_ERROR);
                        }
                        marker.setAttribute(IMarker.MESSAGE, parentMessage + childDiagnostic.getMessage());
                        if (eObject != null)
                        {
                            marker.setAttribute(EValidator.URI_ATTRIBUTE, EcoreUtil.getURI(eObject).toString());
                        }
                    }
                    catch (CoreException exception)
                    {
                    	exception.printStackTrace();
                    }
                }
            }
        }
    @+

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Bonjour,

    je cherche actuellement à valider un objet stéréotypé (je suis en train de créer un profil UML), dont le stéréotype possède une contrainte OCL.
    C'est cette contrainte que je souhaite valider.
    J'ai essayé votre méthode, mais les contraintes fausses sont toujours considérées comme OK.

    J'aimerais savoir, dans votre cas, quel est le type d'information que vous validez ?
    Est-ce que quelqu'un a une piste quand à la résolution à mon problème ?

    Merci beaucoup pour vos réponses.

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

Discussions similaires

  1. [Eclipse RCP] Interactions et mise à jour des views
    Par Angelure dans le forum Eclipse Platform
    Réponses: 2
    Dernier message: 18/02/2009, 15h22
  2. [RCP] Action et View
    Par Jeannot dans le forum Eclipse Platform
    Réponses: 10
    Dernier message: 16/06/2006, 20h24
  3. [debutant Eclipse RCP 3.0] vue graphique
    Par sharckyo dans le forum Eclipse Platform
    Réponses: 6
    Dernier message: 28/11/2005, 17h41
  4. [Eclipse/Rcp]
    Par bl4d3 dans le forum Eclipse Platform
    Réponses: 1
    Dernier message: 21/04/2005, 15h12
  5. [Plugin] Lancement d'Eclipse RCP
    Par thelma dans le forum Eclipse Platform
    Réponses: 1
    Dernier message: 22/06/2004, 14h23

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