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 :

Nom Editor sélectionné


Sujet :

Eclipse Platform

  1. #1
    Membre du Club
    Femme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    182
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Janvier 2012
    Messages : 182
    Points : 59
    Points
    59
    Par défaut Nom Editor sélectionné
    Salut à tous,
    Je fais une interface graphique sous Eclipse. Elle contient un editor. L'utilisateur peut donc ouvrir plusieurs fichiers, qui sont gérés par des onglets. J'aimerais ressortir la position de l'utilisateur, pour savoir quelle page de l'editor est ouverte actuellement.

    Cela s'active à chaque changement d'onglets.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        public void setFocus() {
     
            if (null != this.composite) 
                this.composite.setFocus();
            System.out.println("Changement d'onglet!");
     
         }
    La ligne de code que je cherche doit prendre une ligne du style:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    IViewReference[] ivref = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage()
            .getViewReferences();
    ... mais cela ne m'aide pas à trouver la position de l'utilisateur dans l'editor.

    Merci d'avance

  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,

    Si tu es dans un IEditorPart multi-page, il te suffit de faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
    IEditorPart  editor = page.getActiveEditor();
    if (editor instanceof MultiPageEditorPart) {
        ((MultiPageEditorPart) editor).getSelectedPage();
    }
    Et tu auras l'instance de la page sélectionnée. Il s'agit normalement d'un IEditorPart, donc, tu peux utiliser la méthode getPartName().

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

  3. #3
    Membre du Club
    Femme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    182
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Janvier 2012
    Messages : 182
    Points : 59
    Points
    59
    Par défaut
    Niquel Merci!

    Tant qu'on y est, tu sais comment modifier le name des pages de l'editor (celui qu'on obtient avec getPartName)? Parce que je l'ai défini dans les extensions du Manifest, mais du coup il est fixe et je voudrais qu'il s'adapte au fichier ouvert.

  4. #4
    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
    Normalement, tu te bases sur ton IEditorInput pour donner le nom de ton éditeur. C'est la méthode getName() qui va donner le nom qui apparaît le nom dans l'onglet supérieur.

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

  5. #5
    Membre du Club
    Femme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    182
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Janvier 2012
    Messages : 182
    Points : 59
    Points
    59
    Par défaut
    Oui, mais ca me permet juste de récupérer le nom du fichier choisi non?

    En fait, j'aimerais pouvoir modifier le nom de l'onglet, qui est toujours le meme quelque soit le fichier dans mon cas. (l'ayant défini dans le manifest)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <extension
             point="org.eclipse.ui.editors">
          <editor
                class="fr.eldoon.gui.editors.eldoonEditor"
                default="false"
                icon="icons/alt_window_16.gif"
                id="fr.eldoon.gui.editors.eldoonEditor"
                name="Eldoon editor">      </editor>
       </extension>

  6. #6
    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
    Non, ça modifie aussi le nom de l'onglet
    Pas de questions technique par MP, les forums sont là pour ça.

  7. #7
    Membre du Club
    Femme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    182
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Janvier 2012
    Messages : 182
    Points : 59
    Points
    59
    Par défaut
    Désolée mais je ne comprend pas comment?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        public void init(IEditorSite site, IEditorInput input)
                throws PartInitException {
     
            setSite(site);
            setInput(input);
     
            System.out.println("Editor Open " + input.getName());
    Comment entrer une string dans le getName?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    getName
    String getName()Returns the name of this editor input for display purposes. 
    For instance, when the input is from a file, the return value would ordinarily be just the file name.

  8. #8
    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
    Je me suis mal exprimé en effet.
    Il faut que tu définisses un IEditorInput "personnel" (ou que tu surcharges une instance déjà existante) pour surcharger la méthode getName(). Par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public class MyEditorInput extends FileEditorInput {
     
        public String getName() {
    	return "My Editor Input :" + file.getName();
        }
    }
    Et là, c'est bon.

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

  9. #9
    Membre du Club
    Femme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    182
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Janvier 2012
    Messages : 182
    Points : 59
    Points
    59
    Par défaut
    Imaginons que je veuille appeler mon onglet "Canard". J'ai essayé quelque chose comme ca:


    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
      public class MyEditorInput extends FileEditorInput {
     
            public MyEditorInput(IFile file) {
    			super(file);
    			// TODO Auto-generated constructor stub
    		}
     
    		public String getName() {
        	return "Canard";
            }
        } 
     
        @Override
        public void init(IEditorSite site, IEditorInput input)
                throws PartInitException {
     
            setSite(site);
            setInput(input);
     
     
            System.out.println("Editor Open " + input.getName());
     
     
               this.myXmlFile = new XmlFile(input.getName());
     
        }
    Comment faut il faire?

  10. #10
    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
    On est d'accord, que ce n'est pas plus compliqué que ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public class MyEditorInput extends FileEditorInput {
     
    	public MyEditorInput(IFile file) {
    		super(file);
    	}
     
    	public String getName() {
    		return "Canard";
    	}
    }
    Par contre, un IEditorInput est passé à un IEditorPart au moment de l'ouverture. Et non, à l'initialisation.
    C'est donc, quand tu fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    IWorkbenchPage activePage = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
    activePage.openEditor(new MyEditorInput(myIFile), "my.editor.ID");
    Il n'a rien à faire dans la méthode init().

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

  11. #11
    Membre du Club
    Inscrit en
    Juillet 2012
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Juillet 2012
    Messages : 32
    Points : 58
    Points
    58
    Par défaut
    Bonjour,

    J'ai une question par rapport à ta classe MyEditorInput qui permet de redefinir le nom de l'éditeur.
    Est ce que l'éditeur va afficher le nom de ton MyEditorInput dans le cas où on ouvre l'éditeur à partir d'un marker (double clic sur une erreur de la vue problems) ?
    Car dans ce cas là je crois qu'eclipse ouvre ton fichier avec l'éditeur par défaut (ou celui spécifié dans le marker) en créant un new FileEditorInput


    Quand j'ai eu besoin de faire des éditeurs qui avaient un titre personnalisé j'ai fait un setPartName... mais j'ai du gérer l'étoile (quand le fichier est modifié) à la main.

  12. #12
    Membre du Club
    Inscrit en
    Juillet 2012
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Juillet 2012
    Messages : 32
    Points : 58
    Points
    58
    Par défaut
    Une idée :
    dans le init de l'éditeur on utilise la classe MyEditorInput qui implémente IFileEditorInput et qui est implémentée comme un Wrapper du FileEditorInput :

    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
    public class MyEditorInput implements IFileEditorInput {
    	private final IFileEditorInput	mEditorInput;
     
    	public MyEditorInput(IFileEditorInput editorInput) {
    		super();
    		mEditorInput = editorInput;
    	}
     
    	@Override
    	public boolean exists() {
    		return mEditorInput.exists();
    	}
     
    	@Override
    	public Object getAdapter(@SuppressWarnings("rawtypes") Class adapter) {
    		return mEditorInput.getAdapter(adapter);
    	}
     
    	@Override
    	public IFile getFile() {
    		return mEditorInput.getFile();
    	}
     
    	@Override
    	public ImageDescriptor getImageDescriptor() {
    		return mEditorInput.getImageDescriptor();
    	}
     
     
    	@Override
    	public IPersistableElement getPersistable() {
    		return mEditorInput.getPersistable();
    	}
     
    	@Override
    	public IStorage getStorage() throws CoreException {
    		return mEditorInput.getStorage();
    	}
     
    	@Override
    	public String getToolTipText() {
    		return mEditorInput.getToolTipText();
    	}
     
    	@Override
    	public String getName() {
    		return "nouveau nom";
    	}
    }

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    	@Override
    	public void init(IEditorSite site, IEditorInput input) throws PartInitException {
    		FileEditorInput fileEditorInput = (FileEditorInput) input;
    		MyEditorInput editorInput = new MyEditorInput(fileEditorInput);
    		setInput(editorInput);
    		...
    	}

  13. #13
    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
    Citation Envoyé par sam9722 Voir le message
    Est ce que l'éditeur va afficher le nom de ton MyEditorInput dans le cas où on ouvre l'éditeur à partir d'un marker (double clic sur une erreur de la vue problems) ?
    Non, le nom de l'éditeur dépend de son input. Si tu ne gères pas cet input, bien entendu, tu ne peux pas être sûr de ce qu'il affichera comme nom.
    Citation Envoyé par sam9722 Voir le message
    Car dans ce cas là je crois qu'eclipse ouvre ton fichier avec l'éditeur par défaut (ou celui spécifié dans le marker) en créant un new FileEditorInput
    Effectivement, c'est bien ce cas là.
    Citation Envoyé par sam9722 Voir le message
    Quand j'ai eu besoin de faire des éditeurs qui avaient un titre personnalisé j'ai fait un setPartName... mais j'ai du gérer l'étoile (quand le fichier est modifié) à la main.
    Alors, tu peux utiliser des roues carrés sur une voiture, mais c'est quand même vachement moins efficaces. Pourquoi ne pas utiliser ce qui existe sur la plateforme??
    Citation Envoyé par sam9722 Voir le message
    Une idée : dans le init de l'éditeur on utilise la classe MyEditorInput qui implémente IFileEditorInput et qui est implémentée comme un Wrapper du FileEditorInput
    C'est une méthode, en effet.
    Il faut juste que tu t'assures que l'input est du bon type (utilisation de instanceof par exemple).

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

  14. #14
    Membre du Club
    Inscrit en
    Juillet 2012
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Juillet 2012
    Messages : 32
    Points : 58
    Points
    58
    Par défaut
    Citation Envoyé par Gueritarish Voir le message
    Alors, tu peux utiliser des roues carrés sur une voiture, mais c'est quand même vachement moins efficaces. Pourquoi ne pas utiliser ce qui existe sur la plateforme??
    Parce que je ne savais pas que ça fonctionnait de cette façon.

Discussions similaires

  1. [XL-2010] Récupérer nom fichier sélectionné
    Par Blaiz58 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 05/11/2014, 02h10
  2. [MySQL] Sélectionner deux champs du meme nom dans deux tables
    Par Msieurduss dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 14/06/2006, 22h54
  3. [VBA-E]récupérer le nom des lignes sélectionnées d'une listbox
    Par Ania dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 06/06/2006, 11h28
  4. Réponses: 6
    Dernier message: 08/03/2006, 14h58
  5. Réponses: 2
    Dernier message: 16/12/2005, 17h47

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