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 :

ouvrir un editeur de texte par programme


Sujet :

Eclipse Platform

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 64
    Points : 50
    Points
    50
    Par défaut ouvrir un editeur de texte par programme
    J'ai besoin d'ouvrir un editeur de texte dans mon plugin :
    Je sais le faire sur un fichier existant :


    IFile file = workspaceRoot.getFileForLocation(path);
    IEditorInput editorInput = new FileEditorInput(file);
    IEditorDescriptor desc = workbench.getEditorRegistry().getDefaultEditor("xxx.xml");

    try {
    workbenchPage.openEditor(editorInput, desc.getId());
    } catch (PartInitException e) {
    ;
    }


    Je voudrais pouvoir faire la même chose sans fichier preexistant (pour que l'utilisateur puisse faire un "save as")
    Il me faudait qchose qui ressemble à

    workbenchPage.openEditor(null, desc.getId());

    Je n'ai rien trouvé pour le moment :
    une idée ????

  2. #2
    Membre habitué
    Profil pro
    Développeur Java
    Inscrit en
    Février 2007
    Messages
    177
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2007
    Messages : 177
    Points : 145
    Points
    145
    Par défaut
    salut, essai ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    try {
         Runtime.getRuntime().exec("MonEXE.exe");
    } catch (IOException e) {
         e.printStackTrace();
    }

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 64
    Points : 50
    Points
    50
    Par défaut
    A mon avis ça va ouvrir un éditeur externe .
    Je voudrais ouvrir l'editeur de texte dans eclipse.

    J'essaie ....

  4. #4
    Membre habitué
    Profil pro
    Développeur Java
    Inscrit en
    Février 2007
    Messages
    177
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2007
    Messages : 177
    Points : 145
    Points
    145
    Par défaut
    Ah ok !
    oui en effet ça ouvrira un editeur externe mais tu ne peux pas ouvrir d'editeur en interne.
    La seule solution serait de developper ton propre editeur en RCP ou alors d'en trouver un compatible java !
    bon courage.

  5. #5
    Membre confirmé

    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Juin 2004
    Messages
    332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en technologies

    Informations forums :
    Inscription : Juin 2004
    Messages : 332
    Points : 556
    Points
    556
    Par défaut
    Tu devrais t'en sortir sans trop de difficultés en reprenant le même comportement qu'il y a dans le wizard Eclipse "New Text File ...", et notamment en utilisant la notion de NonExistingFileEditorInput


    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
    public class UntitledTextFileWizard extends Wizard implements INewWizard {
     
    	private IWorkbenchWindow fWindow;
     
    	public UntitledTextFileWizard() {
    	}
     
    	/*
    	 * @see org.eclipse.ui.IWorkbenchWindowActionDelegate#dispose()
    	 */
    	public void dispose() {
    		fWindow= null;
    	}
     
    	private IFileStore queryFileStore() {
    		IPath stateLocation= EditorsPlugin.getDefault().getStateLocation();
    		IPath path= stateLocation.append("/_" + new Object().hashCode()); //$NON-NLS-1$
    		return EFS.getLocalFileSystem().getStore(path);
    	}
     
    	private String getEditorId(IFileStore fileStore) {
    		IWorkbench workbench= fWindow.getWorkbench();
    		IEditorRegistry editorRegistry= workbench.getEditorRegistry();
    		IEditorDescriptor descriptor= editorRegistry.getDefaultEditor(fileStore.getName());
    		if (descriptor != null)
    			return descriptor.getId();
    		return EditorsUI.DEFAULT_TEXT_EDITOR_ID;
    	}
     
    	private IEditorInput createEditorInput(IFileStore fileStore) {
    		return new NonExistingFileEditorInput(fileStore, TextEditorMessages.NewTextEditorAction_namePrefix);
    	}
     
    	/*
    	 * @see org.eclipse.jface.wizard.Wizard#performFinish()
    	 */
    	public boolean performFinish() {
    		IFileStore fileStore= queryFileStore();
    		IEditorInput input= createEditorInput(fileStore);
    		String editorId= getEditorId(fileStore);
    		IWorkbenchPage page= fWindow.getActivePage();
    		try {
    			page.openEditor(input, editorId);
    		} catch (PartInitException e) {
    			EditorsPlugin.log(e);
    			return false;
    		}
    		return true;
    	}
     
    	/*
    	 * @see org.eclipse.ui.IWorkbenchWizard#init(org.eclipse.ui.IWorkbench, org.eclipse.jface.viewers.IStructuredSelection)
    	 */
    	public void init(IWorkbench workbench, IStructuredSelection selection) {
    		fWindow= workbench.getActiveWorkbenchWindow();
    	}
    }

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 64
    Points : 50
    Points
    50
    Par défaut
    Si Si : j'arrive bien à ouvrir l'editeur de texte interne basique
    sur un fichier existant : cf bout de code donné au début de la discussion.
    Cet editeur s'ouvre bien dans la vue "editeur" d'eclipse.

    Mais je ne trouve pas comment faire la même chose si je n'ai pas de fichier de départ.

    En fait je voudrais faire par programme ce que fait "eclipse" quand on fait
    new -> untitled text

    Si "eclipse" le fait je devrais pouvoir le faire

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 64
    Points : 50
    Points
    50
    Par défaut
    j'essaie la solution de kartben que je viens de recevoir ....

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 64
    Points : 50
    Points
    50
    Par défaut
    c'est pas gagné .... pour le moment je galére...
    En fait la classe NonExistingFileInput... est une classe interne en principe inutilisable.

    D'aprés ce que j'ai cru comprendre ça créé un fichier spécial dans un coin bien
    caché du workspace.

    J'y retourne ....

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 64
    Points : 50
    Points
    50
    Par défaut
    c'est pas gagné .... pour le moment je galére...
    En fait la classe NonExistingFileEditorInput... est une classe interne en principe inutilisable.

    D'aprés ce que j'ai cru comprendre ça créé un fichier spécial dans un coin bien
    caché du workspace.

    j'essaie de mimer la chose ....

    J'y retourne ....

  10. #10
    Membre confirmé

    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Juin 2004
    Messages
    332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en technologies

    Informations forums :
    Inscription : Juin 2004
    Messages : 332
    Points : 556
    Points
    556
    Par défaut
    Tu peux -et ne dois pas hésiter- à :
    • ouvrir un bug sur le bugzilla Eclipse pour demander à ce que cette classe devienne API, si ça te semble avoir du sens ;
    • copier/coller la classe NonExistingFileEditorInput dans ton projet à toi, ça fonctionne sans pb (rajouter la dépendance sur org.eclipse.core.filesystem toutefois) et te prémunit de tout souci éventuel dans le cas où les PlatformUI guys auraient la mauvaise idée de péter le code de cette classe (rien ne les en empêche, vu qu'elle est internal)


    NB : dans le cas où tu sais que ton projet n'est pas amené à devoir fonctionner sur les versions à venir d'Eclipse, tu ne dois pas hésiter à utiliser du code internal, surtout quand les impacts sont bien identifiés (ce qui semble être le cas pour cette classe assez simple)

Discussions similaires

  1. [WD16] Encadrer un texte par programmation
    Par draco951 dans le forum WinDev
    Réponses: 3
    Dernier message: 26/07/2011, 08h44
  2. Récupérer la valeur d'un champ texte par programmation
    Par walidinfo dans le forum Développement Web en Java
    Réponses: 0
    Dernier message: 26/11/2010, 17h20
  3. Editeur de texte qui fait la sélection par colonne
    Par wodel dans le forum Windows XP
    Réponses: 5
    Dernier message: 10/11/2010, 13h45
  4. Fermer l'editeur VBA par programmation
    Par bossun dans le forum Général VBA
    Réponses: 1
    Dernier message: 15/02/2007, 14h14
  5. Ouvrir le planificateur de tâches Windows par programme
    Par BBPlastique dans le forum Windows
    Réponses: 8
    Dernier message: 16/07/2004, 11h30

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