Précédent   Forum du club des développeurs et IT Pro > Environnements de développement > Eclipse > Eclipse Platform
Eclipse Platform Développement de plugins Eclipse et d'applications Eclipse RCP (Rich Client Platform). Avant de poster -> Tutoriels sur le développement de plugins Eclipse
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 25/06/2012, 08h47   #1
Ma29200
Nouveau Membre du Club
 
Femme
Inscription : janvier 2012
Messages : 182
Détails du profil
Informations personnelles :
Sexe : Femme

Informations forums :
Inscription : janvier 2012
Messages : 182
Points : 27
Points : 27
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
Ma29200 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2012, 09h25   #2
Gueritarish
Modérateur
 
Avatar de Gueritarish
 
Homme Marc
Développeur Java
Inscription : mai 2007
Messages : 1 589
Détails du profil
Informations personnelles :
Nom : Homme Marc
Âge : 28
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 589
Points : 3 549
Points : 3 549
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.

Le 5 et 6 juin à Toulouse, la première EclipseCon France !
Gueritarish est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2012, 10h20   #3
Ma29200
Nouveau Membre du Club
 
Femme
Inscription : janvier 2012
Messages : 182
Détails du profil
Informations personnelles :
Sexe : Femme

Informations forums :
Inscription : janvier 2012
Messages : 182
Points : 27
Points : 27
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.
Ma29200 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2012, 10h41   #4
Gueritarish
Modérateur
 
Avatar de Gueritarish
 
Homme Marc
Développeur Java
Inscription : mai 2007
Messages : 1 589
Détails du profil
Informations personnelles :
Nom : Homme Marc
Âge : 28
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 589
Points : 3 549
Points : 3 549
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.

Le 5 et 6 juin à Toulouse, la première EclipseCon France !
Gueritarish est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2012, 11h02   #5
Ma29200
Nouveau Membre du Club
 
Femme
Inscription : janvier 2012
Messages : 182
Détails du profil
Informations personnelles :
Sexe : Femme

Informations forums :
Inscription : janvier 2012
Messages : 182
Points : 27
Points : 27
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>
Ma29200 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2012, 11h31   #6
Gueritarish
Modérateur
 
Avatar de Gueritarish
 
Homme Marc
Développeur Java
Inscription : mai 2007
Messages : 1 589
Détails du profil
Informations personnelles :
Nom : Homme Marc
Âge : 28
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 589
Points : 3 549
Points : 3 549
Non, ça modifie aussi le nom de l'onglet
__________________
Pas de questions technique par MP, les forums sont là pour ça.

Le 5 et 6 juin à Toulouse, la première EclipseCon France !
Gueritarish est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2012, 12h12   #7
Ma29200
Nouveau Membre du Club
 
Femme
Inscription : janvier 2012
Messages : 182
Détails du profil
Informations personnelles :
Sexe : Femme

Informations forums :
Inscription : janvier 2012
Messages : 182
Points : 27
Points : 27
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.
Ma29200 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2012, 13h38   #8
Gueritarish
Modérateur
 
Avatar de Gueritarish
 
Homme Marc
Développeur Java
Inscription : mai 2007
Messages : 1 589
Détails du profil
Informations personnelles :
Nom : Homme Marc
Âge : 28
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 589
Points : 3 549
Points : 3 549
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.

Le 5 et 6 juin à Toulouse, la première EclipseCon France !
Gueritarish est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2012, 14h30   #9
Ma29200
Nouveau Membre du Club
 
Femme
Inscription : janvier 2012
Messages : 182
Détails du profil
Informations personnelles :
Sexe : Femme

Informations forums :
Inscription : janvier 2012
Messages : 182
Points : 27
Points : 27
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?
Ma29200 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2012, 15h17   #10
Gueritarish
Modérateur
 
Avatar de Gueritarish
 
Homme Marc
Développeur Java
Inscription : mai 2007
Messages : 1 589
Détails du profil
Informations personnelles :
Nom : Homme Marc
Âge : 28
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 589
Points : 3 549
Points : 3 549
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.

Le 5 et 6 juin à Toulouse, la première EclipseCon France !
Gueritarish est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/08/2012, 11h47   #11
sam9722
Membre du Club
 
Inscription : juillet 2012
Messages : 32
Détails du profil
Informations forums :
Inscription : juillet 2012
Messages : 32
Points : 52
Points : 52
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.
sam9722 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/08/2012, 15h30   #12
sam9722
Membre du Club
 
Inscription : juillet 2012
Messages : 32
Détails du profil
Informations forums :
Inscription : juillet 2012
Messages : 32
Points : 52
Points : 52
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);
		...
	}
sam9722 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/08/2012, 16h28   #13
Gueritarish
Modérateur
 
Avatar de Gueritarish
 
Homme Marc
Développeur Java
Inscription : mai 2007
Messages : 1 589
Détails du profil
Informations personnelles :
Nom : Homme Marc
Âge : 28
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 589
Points : 3 549
Points : 3 549
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.

Le 5 et 6 juin à Toulouse, la première EclipseCon France !
Gueritarish est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/08/2012, 10h04   #14
sam9722
Membre du Club
 
Inscription : juillet 2012
Messages : 32
Détails du profil
Informations forums :
Inscription : juillet 2012
Messages : 32
Points : 52
Points : 52
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.
sam9722 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 09h43.


 
 
 
 
Partenaires

Hébergement Web