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 :

[plugin Editeur] Forcer le dirty


Sujet :

Eclipse Platform

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 96
    Points : 63
    Points
    63
    Par défaut [plugin Editeur] Forcer le dirty
    Bonjour,

    J'ai créé un plugin dans lequel j'utilise une classe Editor qui étend la classe eclipse GraphicalEditor (qui étend elle-même EditorPart).

    Quand je fais une modification dans mon instance d'éditeur, je veux que celui-ci présente sur son onglet l'étoile qui précise qu'il y a eu une modification.

    A partir de mon éditeur, je peux accéder à cette information (méthode héritée isDirty()), mais je voudrais forcer mon éditeur à savoir qu'il a été modifié, et je ne trouve pas de méthode du type setDirty(boolean b).

    Savez-vous si ce mécanisme existe, et sinon connaissez-vous un moyen de le mettre en place?

    Je vous remercie d'avance de votre réponse.

    Nicolas

  2. #2
    Membre habitué Avatar de Tazmanian Devil
    Profil pro
    Inscrit en
    Février 2007
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 119
    Points : 149
    Points
    149
    Par défaut
    Tu peux peut etre essayer de faire "le contraire" de isDirty ->
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
            /*
    	 *  EditorPart#isDirty()
    	 */
    	public boolean isDirty() {
    		IDocumentProvider p= getDocumentProvider();
    		return p == null ? false : p.canSaveDocument(getEditorInput());
    	}
    en faisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	getDocumentProvider().changed(getEditorInput());
    par exemple
    (j'ai pas essayé mais ca a peut etre ca)

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 96
    Points : 63
    Points
    63
    Par défaut
    Bonjour,

    j'ai finalement résolu mon problème en encapsulant mes modification dans des objets Command de GEF que j'ai passé au CommandStack de mon editeur courant.
    Cela me permet en plus de gérer les undo et redo.

    Merci qd même

    Nicolas

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 8
    Points : 8
    Points
    8
    Par défaut
    Effectivement le setDirty n'existe pas. Il faut que tu utilise une variable interne à ton programme. Dans mon exemple elle s'appelle dirty (original).

    Voici mon code pour la méthode isDirty() :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public boolean isDirty() {
    	return dirty;
    }
    Ceci permet à l'éditeur de savoir si le fichier est modifier. Mais il ne scrute pas cette méthode en permanence. Pour cela, il faut que tu implement un listener qui déclanche un événement lorsque le fichier est modifié (par exemple : ModifyListener). Ensuite dans la méthode qui récupére l'événement tu fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public void modifyText(ModifyEvent arg0) {
    	changed = true;
    	firePropertyChange(IWorkbenchPartConstants.PROP_DIRTY); 
    }
    Cela permet d'ajouté l'étoile.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 96
    Points : 63
    Points
    63
    Par défaut
    Oui, au final, cela revient à exécuter une commande GEF...
    L'éditeur se met alors automatiquement en dirty.

    J'ai implémenté ma propre commande avec le undo/redo associé, et tout marche nickel...

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

Discussions similaires

  1. eclipse plugin editeur java
    Par baltazarus dans le forum Eclipse Java
    Réponses: 0
    Dernier message: 03/03/2008, 18h55
  2. [Plugin] Editeur de fenêtre
    Par LordBob dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 04/04/2006, 11h35
  3. [Plugin editeur personnalisé]
    Par drakus dans le forum Eclipse Platform
    Réponses: 5
    Dernier message: 20/02/2006, 20h11
  4. [Plugin]Editeur graphique
    Par Sim dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 24/05/2004, 08h39

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