Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 14 sur 14
  1. #1
    Nouveau 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 : 29
    Points
    29

    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 :
    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 :
    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
    Modérateur
    Avatar de Gueritarish
    Homme Profil pro Marc
    Développeur Java
    Inscrit en
    mai 2007
    Messages
    1 800
    Détails du profil
    Informations personnelles :
    Nom : Homme Marc
    Âge : 30
    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 778
    Points
    3 778

    Par défaut

    Salut,

    Si tu es dans un IEditorPart multi-page, il te suffit de faire:
    Code :
    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
    Nouveau 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 : 29
    Points
    29

    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
    Modérateur
    Avatar de Gueritarish
    Homme Profil pro Marc
    Développeur Java
    Inscrit en
    mai 2007
    Messages
    1 800
    Détails du profil
    Informations personnelles :
    Nom : Homme Marc
    Âge : 30
    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 778
    Points
    3 778

    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
    Nouveau 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 : 29
    Points
    29

    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 :
    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
    Modérateur
    Avatar de Gueritarish
    Homme Profil pro Marc
    Développeur Java
    Inscrit en
    mai 2007
    Messages
    1 800
    Détails du profil
    Informations personnelles :
    Nom : Homme Marc
    Âge : 30
    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 778
    Points
    3 778

    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
    Nouveau 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 : 29
    Points
    29

    Par défaut

    Désolée mais je ne comprend pas comment?

    Code :
    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 :
    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
    Modérateur
    Avatar de Gueritarish
    Homme Profil pro Marc
    Développeur Java
    Inscrit en
    mai 2007
    Messages
    1 800
    Détails du profil
    Informations personnelles :
    Nom : Homme Marc
    Âge : 30
    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 778
    Points
    3 778

    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 :
    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
    Nouveau 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 : 29
    Points
    29

    Par défaut

    Imaginons que je veuille appeler mon onglet "Canard". J'ai essayé quelque chose comme ca:


    Code :
    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
    Modérateur
    Avatar de Gueritarish
    Homme Profil pro Marc
    Développeur Java
    Inscrit en
    mai 2007
    Messages
    1 800
    Détails du profil
    Informations personnelles :
    Nom : Homme Marc
    Âge : 30
    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 778
    Points
    3 778

    Par défaut

    On est d'accord, que ce n'est pas plus compliqué que ça:
    Code :
    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 :
    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 : 57
    Points
    57

    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 : 57
    Points
    57

    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 :
    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 :
    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
    Modérateur
    Avatar de Gueritarish
    Homme Profil pro Marc
    Développeur Java
    Inscrit en
    mai 2007
    Messages
    1 800
    Détails du profil
    Informations personnelles :
    Nom : Homme Marc
    Âge : 30
    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 778
    Points
    3 778

    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 : 57
    Points
    57

    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.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •