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

 Java Discussion :

Ouvrir une nouvelle fenêtre sous Eclipse


Sujet :

Java

  1. #1
    Débutant
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 022
    Points : 332
    Points
    332
    Par défaut Ouvrir une nouvelle fenêtre sous Eclipse
    bonjour
    J'essaie de bouger des fenêtres sous éclipse
    D'abord je dois fermer la fenêtre active
    J'utilise pour cela une méthode déjà implémentée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	public boolean performFinish()
    	{
    		return( true);
    	}
    et je dois ouvrir une nouvelle fenêtre dans laquelle j'acquererai le path du fichier origine et son identificateur
    je vous met le code:
    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
    	public int RecupereNomDesFichier() throws ClassNotFoundException, IllegalArgumentException, NullPointerException, SQLException
    	{
    		int selectedId;
    		String selectedFile;
    		if( InterbaseManager.connection == null)
    			MissionDatabaseManager.OpenDatabaseCoherence();
    		ArrayList<ElementWork> elementWorks = MissionDatabaseManager.ReadWork();
    		// charger les fichier de la base de donnée et remplir cette liste
    		performFinish();
    		try
    		{
    			Iterator<ElementWork> itWork = elementWorks.iterator();
    			FileDialog fileDialog = new FileDialog(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell()); 
    			while( itWork.hasNext())
    			{
    				elementWork = (ElementWork)itWork.next();
    				int id = elementWork.Id;
    				String str = elementWork.wsText;
    			}
    			// selectedFile contient le path vers le fichier seléctionner
    			selectedFile = ((MessageDialog) fileDialog).open();
    			selectedId = ((MessageDialog) fileDialog).open();
    		}
    		catch(NullPointerException ex)
    		{
    			ex.printStackTrace();
    		}
    		catch( java.lang.ClassCastException ex)
    		{
    			ex.printStackTrace();
    		}
    		buildModel( selectedId, selectedFile);
    		// ToDo il faut ressortir le numéro saisi par l'utilisateur
    		return( selectedId);
    dans ce fichier j'ai trois lignes qui ne compilent pas: les deux suivantes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    		// selectedFile contient le path vers le fichier seléctionner
    			selectedFile = ((MessageDialog) fileDialog).open();
    			selectedId = ((MessageDialog) fileDialog).open();
    et celle ci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new FileDialog(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell());
    Qui m'aiguilera sera

  2. #2
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 073
    Points : 7 977
    Points
    7 977
    Par défaut
    dans ce fichier j'ai trois lignes qui ne compilent pas:
    Ca serait sympa de dire en quoi ça ne compile pas, la boule de crystal magique n'arrive pas à deviner sinon (C'est du JFace ou quoi que tu utilises la ?)
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Débutant
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 022
    Points : 332
    Points
    332
    Par défaut Les réponses
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new FileDialog( PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell())The constructor FileDialog(Shell) is undefined
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ((MessageDialog) fileDialog).open();Cannot cast from FileDialog to MessageDialog
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ((MessageDialog) fileDialog)Cannot cast from FileDialog to MessageDialog

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Les messages d'erreur sont assez explicites et une simple consultation de la JavaDoc permettent de le résoudre. A part, peut-être le premier, car le constructeur en question existe pourtant bel et bien dans la classe org.eclipse.swt.widgets.FileDialog, mais pas dans java.awt.FileDialog. A priori, je dirais que tu as importé cette dernière, qui, évidemment n'a pas de constructeur prenant un shell SWT en argument. Change tout d'abord l'import. Par contre, je te conseille d'utiliser le constructeur à 2 arguments, en passant un style SWT.OPEN ou SWT.SAVE, en fonction du fait que tu veuilles sélectionner un fichier pour le lire ou l'écrire (avec |SWT.MULTI en plus si tu veux pouvoir sélectionner plusieurs fichiers) : tu auras un comportement du dialogue adapté et plus efficace.

    Ensuite, tu as probablement cherché à caster en MessageDialog, parce que tu ne trouvais pas de méthode open sur FileDialog. Normal, ce n'est pas la bonne classe : en fait, cela aurait dû t'alerter sur le fait que ce n'était pas la bonne classe. Il n'y a pas de raison logique à ce qu'on doive caster pour appeler une méthode aussi utile et indispensable que celle qui permet d'afficher un dialogue. D'autant plus que la classe SWT n'est pas plus un MessageDialog (JFace) que celle d'AWT.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Débutant
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 022
    Points : 332
    Points
    332
    Par défaut D'une part les problème de compilation sont derrière nous
    D'autre part Je pars en NullPonterException
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    java.lang.NullPointerException
    	at com.all4tec.matelo.linguistique.wizards.LinguistiqueImportWizard.RecupereNomDesFichier(LinguistiqueImportWizard.java:79)
    	at com.all4tec.matelo.linguistique.wizards.LinguistiqueImportWizard$1.run(LinguistiqueImportWizard.java:123)
    	at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:121)
    il part en exception sur la ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FileDialog fileDialog = new FileDialog( PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell());
    vous seriez de m'aider sur ce point

  6. #6
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Pour résoudre une NullPointerException, il sufft, soit en mode debug, soit par silmple traces (System.out.println(...)), de chercher qu'est-ce qui est null comme retour de méthode ou attribut qu'on accède pour invoquer une méthode ou accèder un attribut : si on fait truc.methodMachin(); et ça donne une NullPointerException sur cette ligne, c'est que truc est null. Si on a truc.methodMachin().methodBidule);, c'est que c'est soit truc, soit truc.methodMachin() retourne null. Et ainsi de suite.

    Mais là, vu que c'est dans PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), je me pose 2 questions :

    1. Tu es bien dans une application Eclipse RCP ? Et quelle versions E3 ou E4 ?
    2. Si oui, à quel moment ton code est-il exécuté ? Parce qu'il faut évidemment que le workbench soit démarré et qu'une fenêtre (vue ou éditeur) soit active pour faire cette invocation.
    3. sinon, ce n'est pas du tout comme ça qu'on fait :
      1. On créé un Display (qu'on oubliera pas de disposer à la fermeture de l'application
      2. On créé un Shell à partir du Display, tout simplement par new Shell(display)
    4. Question subsidiaire : si ce n'est pas une application Eclipse RCP, pourquoi utilsier SWT ? Non pas que je serais spécialement contre, mais c'est un peu plus sensible d'utiliser SWT et moins simple que SWING (toujours bien penser à disposer ses ressources, et surtout toujours devoir être synchrone sur le thread SWT (au moins si on le fait pas, on a une exception)).
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  7. #7
    Débutant
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 022
    Points : 332
    Points
    332
    Par défaut J'ai du mal à répondre a tes questions?
    Ve que je sais c'est que j'ai copié ce texte d'un développeur du produit que j'utilise:
    J-ai déjà une fenêtre ouverte. J'essaie de la fermer avec la méthode performFinish(); J'ai beau appeler ce bout de code je ne vois pas la fenêtre se fermer.Après j'ai besoin d'ouvrir une autre fenêtre pour donner à l'utilisateur le choix des documents a traiter. C'est la que la ligne de code intervient

  8. #8
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par JeanNoel53 Voir le message
    Ve que je sais c'est que j'ai copié ce texte d'un développeur du produit que j'utilise:
    Et alors ?
    1. Ça ne veut pas dire que ça va fonctionner dans ton contexte ;
    2. Ça ne répond pas à mes questions (peut-être puis-je déduire 2 ou 3 choses, mais je n'ai pas envie de déduire : j'ai besoin d'informations précises).


    Citation Envoyé par JeanNoel53 Voir le message
    J-ai déjà une fenêtre ouverte. J'essaie de la fermer avec la méthode performFinish(); J'ai beau appeler ce bout de code je ne vois pas la fenêtre se fermer.Après j'ai besoin d'ouvrir une autre fenêtre pour donner à l'utilisateur le choix des documents a traiter. C'est la que la ligne de code intervient
    Peut-être bien, mais ta question était au sujet d'une NullPointerException et je ne vois pas en quoi cette précision est pertinente à ce sujet (d'autant plus qu'ouvrir un FileDialog n'est pas le code qu'il faut écrire pour fermer une fenêtre SWT, ni même une fenêtre RCP, quelqu'elle soit. Il te reste à déterminer quelle est cette référence null sur laquelle tu invoques une méthode, et trouver pourquoi elle est null, et comment l'empêcher. Si tu veux qu'on t'apporte une aide à ce sujet, il faudra être plus précis au sujet du contexte de ton code et non dire qu'il est copié depuis je ne sais quel autre code.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  9. #9
    Débutant
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 022
    Points : 332
    Points
    332
    Par défaut Les valeurs que j'ai avant de prendre l'exception
    FileDialog a
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Open Declaration org.eclipse.swt.widgets.FileDialog.FileDialog(Shell parent)
     
     
    Constructs a new instance of this class given only its parent.
     
    Parameters:
    parent a shell which will be the parent of the new instance
    Throws:
    IllegalArgumentException - 
    ERROR_NULL_ARGUMENT - if the parent is null 
    SWTException - 
    ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the parent 
    ERROR_INVALID_SUBCLASS - if this class is not an allowed subclass
    getWorKBench vaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     Open Declaration IWorkbench org.eclipse.ui.PlatformUI.getWorkbench()
     
     
    Returns the workbench. Fails if the workbench has not been created yet.
     
    Returns:
    the workbench
    getActiveWorkbechWindow vaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Open Declaration IWorkbenchWindow org.eclipse.ui.IWorkbench.getActiveWorkbenchWindow()
     
     
    Returns the currently active window for this workbench (if any). Returns null if there is no active workbench window. Returns null if called from a non-UI thread.
     
    Returns:
    the active workbench window, or null if there is no active workbench window or if called from a non-UI thread
    getShell vaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Open Declaration Shell org.eclipse.ui.IWorkbenchWindow.getShell()
     
     
    Returns this workbench window's shell.
     
    Specified by: getShell() in IShellProvider
    Returns:
    the shell containing this window's controls or null if the shell has not been created yet or if the window has been closed

  10. #10
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    A quoi ça sert de me mettre la javadoc, à laquelle j'aurais accès de toute manière par ailleurs sur le net, si j'en avais besoin ?
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  11. #11
    Débutant
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 022
    Points : 332
    Points
    332
    Par défaut Je ne sait pas faire d'autre chose
    J'ai examiné les valeurs avant que ça plante.je ne sais pas faire plus. Si je dois faire plus il faut m'aider en étant plus directif. Sous débugger Je n'arrive pas à avoir autre chose que la javadoc

  12. #12
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Pour savoir ce qui est null, à part en mode debug, il suffit de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    System.out.println("Workbench: " + PlatformUI.getWorkbench());
    System.out.println("ActiveWorkbenchWindow: " + PlatformUI.getWorkbench().getActiveWorkbenchWindow());
    System.out.println("ActiveWorkbenchWindow.shell: " + PlatformUI.getWorkbench().getActiveWorkbenchWindow()).getShell());
    C'est tout de même pas sorcier !
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  13. #13
    Débutant
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 022
    Points : 332
    Points
    332
    Par défaut le null
    getActiveWorkbenchWindow()

  14. #14
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Je suppose que ce placage laconique signifie que c'est getActiveWorkbenchWindow() qui est null :roll Donc qu'il n'y aucune fenêtre ouverte dans ton workbench.

    Essaye alors :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PlatformUI.getWorkbench().getModalDialogShellProvider().getShell();
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  15. #15
    Débutant
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 022
    Points : 332
    Points
    332
    Par défaut il génère deux autres exceptions
    J'ai pris la modification que vous avez proposé
    J'ai eu deux exceptions Je vous les indique
    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
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    Workbench: org.eclipse.ui.internal.Workbench@720d258b
    ActiveWorkbenchWindow: org.eclipse.ui.internal.Workbench$71@700c1ae7
    java.lang.reflect.InvocationTargetException
    	at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:421)
    	at org.eclipse.jface.wizard.WizardDialog.run(WizardDialog.java:1028)
    	at com.all4tec.matelo.linguistique.wizards.LinguistiqueImportWizard.getNextPage(LinguistiqueImportWizard.java:153)
    	at org.eclipse.jface.wizard.WizardPage.getNextPage(WizardPage.java:172)
    	at org.eclipse.jface.wizard.WizardPage.canFlipToNextPage(WizardPage.java:115)
    	at org.eclipse.jface.wizard.WizardDialog.updateButtons(WizardDialog.java:1349)
    	at org.eclipse.jface.wizard.WizardDialog.update(WizardDialog.java:1333)
    	at org.eclipse.jface.wizard.WizardDialog.updateForPage(WizardDialog.java:1264)
    	at org.eclipse.jface.wizard.WizardDialog.access$4(WizardDialog.java:1238)
    	at org.eclipse.jface.wizard.WizardDialog$8.run(WizardDialog.java:1227)
    	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
    	at org.eclipse.jface.wizard.WizardDialog.showPage(WizardDialog.java:1225)
    	at org.eclipse.ui.internal.dialogs.ImportExportPage.treeDoubleClicked(ImportExportPage.java:234)
    	at org.eclipse.ui.internal.dialogs.ImportPage$2.doubleClick(ImportPage.java:72)
    	at org.eclipse.jface.viewers.StructuredViewer$1.run(StructuredViewer.java:845)
    	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
    	at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:49)
    	at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:175)
    	at org.eclipse.jface.viewers.StructuredViewer.fireDoubleClick(StructuredViewer.java:843)
    	at org.eclipse.jface.viewers.AbstractTreeViewer.handleDoubleSelect(AbstractTreeViewer.java:1477)
    	at org.eclipse.jface.viewers.StructuredViewer$4.widgetDefaultSelected(StructuredViewer.java:1246)
    	at org.eclipse.jface.util.OpenStrategy.fireDefaultSelectionEvent(OpenStrategy.java:249)
    	at org.eclipse.jface.util.OpenStrategy.access$0(OpenStrategy.java:246)
    	at org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java:307)
    	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
    	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053)
    	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4169)
    	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3758)
    	at org.eclipse.jface.window.Window.runEventLoop(Window.java:825)
    	at org.eclipse.jface.window.Window.open(Window.java:801)
    	at org.eclipse.ui.internal.handlers.WizardHandler$Import.executeHandler(WizardHandler.java:152)
    	at org.eclipse.ui.internal.handlers.WizardHandler.execute(WizardHandler.java:279)
    	at org.eclipse.ui.internal.handlers.HandlerProxy.execute(HandlerProxy.java:290)
    	at org.eclipse.core.commands.Command.executeWithChecks(Command.java:499)
    	at org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:508)
    	at org.eclipse.ui.internal.handlers.HandlerService.executeCommand(HandlerService.java:169)
    	at org.eclipse.ui.internal.handlers.SlaveHandlerService.executeCommand(SlaveHandlerService.java:241)
    	at org.eclipse.ui.menus.CommandContributionItem.handleWidgetSelection(CommandContributionItem.java:829)
    	at org.eclipse.ui.menus.CommandContributionItem.access$19(CommandContributionItem.java:815)
    	at org.eclipse.ui.menus.CommandContributionItem$5.handleEvent(CommandContributionItem.java:805)
    	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
    	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053)
    	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4169)
    	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3758)
    	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2701)
    	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2665)
    	at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2499)
    	at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:679)
    	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
    	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:668)
    	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
    	at com.all4tec.matelo.ui.Application.start(Application.java:77)
    	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
    	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
    	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
    	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:353)
    	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:180)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    	at java.lang.reflect.Method.invoke(Unknown Source)
    	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:629)
    	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:584)
    	at org.eclipse.equinox.launcher.Main.run(Main.java:1438)
    	at org.eclipse.equinox.launcher.Main.main(Main.java:1414)
    Caused by: org.eclipse.swt.SWTException: Invalid thread access
    	at org.eclipse.swt.SWT.error(SWT.java:4361)
    	at org.eclipse.swt.SWT.error(SWT.java:4276)
    	at org.eclipse.swt.SWT.error(SWT.java:4247)
    	at org.eclipse.swt.widgets.Display.error(Display.java:1258)
    	at org.eclipse.swt.widgets.Display.checkDevice(Display.java:764)
    	at org.eclipse.swt.widgets.Display.getShells(Display.java:2218)
    	at org.eclipse.ui.internal.progress.ProgressManagerUtil.getModalShellExcluding(ProgressManagerUtil.java:284)
    	at org.eclipse.ui.internal.progress.ProgressManagerUtil.getDefaultParent(ProgressManagerUtil.java:338)
    	at org.eclipse.ui.internal.Workbench$71.getShell(Workbench.java:3883)
    	at com.all4tec.matelo.linguistique.wizards.LinguistiqueImportWizard.RecupereNomDesFichier(LinguistiqueImportWizard.java:80)
    	at com.all4tec.matelo.linguistique.wizards.LinguistiqueImportWizard$1.run(LinguistiqueImportWizard.java:127)
    	at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:121)
    l'exception se produit sur le prinstln du getShell
    si on suprime le println du getShell()
    il sort avec les même exceptions:
    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
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    Workbench: org.eclipse.ui.internal.Workbench@14a0fdb
    ActiveWorkbenchWindow: org.eclipse.ui.internal.Workbench$71@64065927
    java.lang.reflect.InvocationTargetException
    	at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:421)
    	at org.eclipse.jface.wizard.WizardDialog.run(WizardDialog.java:1028)
    	at com.all4tec.matelo.linguistique.wizards.LinguistiqueImportWizard.getNextPage(LinguistiqueImportWizard.java:152)
    	at org.eclipse.jface.wizard.WizardPage.getNextPage(WizardPage.java:172)
    	at org.eclipse.jface.wizard.WizardPage.canFlipToNextPage(WizardPage.java:115)
    	at org.eclipse.jface.wizard.WizardDialog.updateButtons(WizardDialog.java:1349)
    	at org.eclipse.jface.wizard.WizardDialog.update(WizardDialog.java:1333)
    	at org.eclipse.jface.wizard.WizardDialog.updateForPage(WizardDialog.java:1264)
    	at org.eclipse.jface.wizard.WizardDialog.access$4(WizardDialog.java:1238)
    	at org.eclipse.jface.wizard.WizardDialog$8.run(WizardDialog.java:1227)
    	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
    	at org.eclipse.jface.wizard.WizardDialog.showPage(WizardDialog.java:1225)
    	at org.eclipse.ui.internal.dialogs.ImportExportPage.treeDoubleClicked(ImportExportPage.java:234)
    	at org.eclipse.ui.internal.dialogs.ImportPage$2.doubleClick(ImportPage.java:72)
    	at org.eclipse.jface.viewers.StructuredViewer$1.run(StructuredViewer.java:845)
    	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
    	at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:49)
    	at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:175)
    	at org.eclipse.jface.viewers.StructuredViewer.fireDoubleClick(StructuredViewer.java:843)
    	at org.eclipse.jface.viewers.AbstractTreeViewer.handleDoubleSelect(AbstractTreeViewer.java:1477)
    	at org.eclipse.jface.viewers.StructuredViewer$4.widgetDefaultSelected(StructuredViewer.java:1246)
    	at org.eclipse.jface.util.OpenStrategy.fireDefaultSelectionEvent(OpenStrategy.java:249)
    	at org.eclipse.jface.util.OpenStrategy.access$0(OpenStrategy.java:246)
    	at org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java:307)
    	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
    	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053)
    	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4169)
    	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3758)
    	at org.eclipse.jface.window.Window.runEventLoop(Window.java:825)
    	at org.eclipse.jface.window.Window.open(Window.java:801)
    	at org.eclipse.ui.internal.handlers.WizardHandler$Import.executeHandler(WizardHandler.java:152)
    	at org.eclipse.ui.internal.handlers.WizardHandler.execute(WizardHandler.java:279)
    	at org.eclipse.ui.internal.handlers.HandlerProxy.execute(HandlerProxy.java:290)
    	at org.eclipse.core.commands.Command.executeWithChecks(Command.java:499)
    	at org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:508)
    	at org.eclipse.ui.internal.handlers.HandlerService.executeCommand(HandlerService.java:169)
    	at org.eclipse.ui.internal.handlers.SlaveHandlerService.executeCommand(SlaveHandlerService.java:241)
    	at org.eclipse.ui.menus.CommandContributionItem.handleWidgetSelection(CommandContributionItem.java:829)
    	at org.eclipse.ui.menus.CommandContributionItem.access$19(CommandContributionItem.java:815)
    	at org.eclipse.ui.menus.CommandContributionItem$5.handleEvent(CommandContributionItem.java:805)
    	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
    	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053)
    	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4169)
    	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3758)
    	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2701)
    	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2665)
    	at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2499)
    	at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:679)
    	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
    	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:668)
    	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
    	at com.all4tec.matelo.ui.Application.start(Application.java:77)
    	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
    	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
    	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
    	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:353)
    	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:180)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    	at java.lang.reflect.Method.invoke(Unknown Source)
    	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:629)
    	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:584)
    	at org.eclipse.equinox.launcher.Main.run(Main.java:1438)
    	at org.eclipse.equinox.launcher.Main.main(Main.java:1414)
    Caused by: org.eclipse.swt.SWTException: Invalid thread access
    	at org.eclipse.swt.SWT.error(SWT.java:4361)
    	at org.eclipse.swt.SWT.error(SWT.java:4276)
    	at org.eclipse.swt.SWT.error(SWT.java:4247)
    	at org.eclipse.swt.widgets.Display.error(Display.java:1258)
    	at org.eclipse.swt.widgets.Display.checkDevice(Display.java:764)
    	at org.eclipse.swt.widgets.Display.getShells(Display.java:2218)
    	at org.eclipse.ui.internal.progress.ProgressManagerUtil.getModalShellExcluding(ProgressManagerUtil.java:284)
    	at org.eclipse.ui.internal.progress.ProgressManagerUtil.getDefaultParent(ProgressManagerUtil.java:338)
    	at org.eclipse.ui.internal.Workbench$71.getShell(Workbench.java:3883)
    	at com.all4tec.matelo.linguistique.wizards.LinguistiqueImportWizard.RecupereNomDesFichier(LinguistiqueImportWizard.java:80)
    	at com.all4tec.matelo.linguistique.wizards.LinguistiqueImportWizard$1.run(LinguistiqueImportWizard.java:126)
    	at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:121)

  16. #16
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Ah bah, là, au moins on a de l'information ! L'erreur c'est Caused by: org.eclipse.swt.SWTException: Invalid thread access, pas vraiment ce que tu montres.

    Ce serait utile d'avoir le code de com.all4tec.matelo.linguistique.wizards.LinguistiqueimportWizard.RecupereNomDesFichiern, depuis que tu l'as modifié. Mais sinon, vu que tu es dans un Wizard pour afficher ton FileDialog, tu peux aussi bien demander le shell de ton Wizard. Un WizardDialog est un IWizardContainer qui a une méthode getShell(), et une IWizardPage a une méthode getWizard() pour obtenir l'instance de IWizard, qui a une méthode pour obtenir une instance de IWizardContainer (WizardPage a directement cette dernière).
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  17. #17
    Débutant
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 022
    Points : 332
    Points
    332
    Par défaut L'état de RécupèreNomDesFichiers
    Je conclue que je dois ajouter du code d' IWizardPage getWizard()
    J'ai essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    			IWizardPage wizard.getWizard();
    			IWizardContainer shell = wizard.getSchell();
    ce qui ne compile pas.
    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
    	public int RecupereNomDesFichiers() throws ClassNotFoundException, IllegalArgumentException, NullPointerException, SQLException
    	{
    		int selectedId = 0;
    		int integerToBeDefined = 0;
    		String selectedFile = null;
    		if( InterbaseManager.connection == null)
    			MissionDatabaseManager.OpenDatabaseCoherence();
    		ArrayList<ElementWork> elementWorks = MissionDatabaseManager.ReadWork();
    		// charger les fichier de la base de donnée et remplir cette liste
    		performFinish();
    		try
    		{
    			System.out.println("Workbench: " + PlatformUI.getWorkbench());
    			System.out.println("ActiveWorkbenchWindow: " + PlatformUI.getWorkbench().getModalDialogShellProvider());
    			FileDialog fileDialog = new FileDialog(PlatformUI.getWorkbench().getModalDialogShellProvider().getShell()); 
    			Iterator<ElementWork> itWork = elementWorks.iterator();
    			while( itWork.hasNext())
    			{
    				elementWork = (ElementWork)itWork.next();
    				int id = elementWork.Id;
    				String str = elementWork.wsText;
    			}
    			// selectedFile contient le path vers le fichier seléctionner
    			selectedFile = (String)( fileDialog).open();
    			selectedId = (int)integerToBeDefined;
    		}
     
    		catch(NullPointerException ex)
    		{
    			ex.printStackTrace();
    		}
    		catch( java.lang.ClassCastException ex)
    		{
    			ex.printStackTrace();
    		}
    		buildModel( selectedId, selectedFile);
    		// ToDo il faut ressortir le numéro saisi par l'utilisateur
    		return( selectedId);
    	}

  18. #18
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <s>System.out.println("Workbench: " + PlatformUI.getWorkbench());</s>
    <s>System.out.println("ActiveWorkbenchWindow: " + PlatformUI.getWorkbench().getModalDialogShellProvider());</s>
    FileDialog fileDialog = new FileDialog(<s>PlatformUI.getWorkbench().getModalDialogShellProvider().getShell()</s>);
    =>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FileDialog fileDialog = new FileDialog(getShell());
    Au moins, tu ne devrais plus avoir de problème avec la synchro avec le thread SWT. Si c'est quand même le cas ça va être compliqué, mais on verra plus tard au besoin.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  19. #19
    Débutant
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 022
    Points : 332
    Points
    332
    Par défaut J'ai tulours le même status
    Caused by: org.eclipse.swt.SWTException: Invalid thread access
    sur le getShell();
    peut être est ce du au fait que la fenêtre active est fermée en théorie et toujours ouverte en pratique

  20. #20
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par JeanNoel53 Voir le message
    Caused by: org.eclipse.swt.SWTException: Invalid thread access
    sur le getShell();
    C'est ce que je craignais
    Citation Envoyé par JeanNoel53 Voir le message
    peut être est ce du au fait que la fenêtre active est fermée en théorie et toujours ouverte en pratique
    Non, c'est juste que ta méthode ne s'exécute pas dans le thread SWT. Ce n'est pas vraiment compliqué en soi, sauf s'il faut récupérer un résultat en fin d'exécution, comme c'est le cas d'un FileDialog. La solutions serait d'exécuter toute la méthode sur le thread SWT, mais c'est une fausse bonne solution, surtout quand l'exécution est relativement longue, comme c'est, il me semble le cas, vu qu'il y a un accès à une base de données. L'autre solution est de faire toute la fin de la méthode dans le thread SWT, toute ce qui récupère le fichier depuis le filedialog et le traite, si ce traitement n'est pas trop long (sinon ça fige l'application pendant ce temps).

    Le principe
    1. Récupérer un Display, ce qu'on peut faire par exemple par Display.getDefault();
    2. Invoquer soit
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      Display.getDefault().asyncExec( new Runnable() {
          public void run() {
                 // ici le code à faire
          }
      });

      Soit, s'il y a besoin de récupérer un résultat, d'utiliser syncExec au lieu de asyncExec, en utisant par exemple un tableau d'une case pour récupérer le résultat.

      Par exemple :

      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
       
      final String[] result = new String[1]; // le résultat est un String, donc on fait un tableau de 1 String
      Display.getDefault().syncExec( new Runnable() {
          public void run() {
                 FileDialog fileDialog = new FileDialog(getShell(), SWT.OPEN); 
      	   result[0] = fileDialog.open();
          }
      });
      String selectedFile=result;
      // ici tu peux utilsser selectedFle comme tu voulais...
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [C#][Débutant]Ouvrir une nouvelle fenêtre en fermant l'ancienne
    Par neuromencien dans le forum Windows Forms
    Réponses: 3
    Dernier message: 21/04/2011, 09h20
  2. Réponses: 17
    Dernier message: 31/08/2006, 14h50
  3. ouvrir une nouvelle fenêtre dans une taille déterminé
    Par lnikolanta dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 26/09/2005, 15h26
  4. Ouvrir une nouvelle fentre en grand ?
    Par Sylk dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 15/09/2005, 13h14
  5. [ShellExecute] ouvrir une nouvelle fenêtre ie
    Par sony351 dans le forum C++Builder
    Réponses: 2
    Dernier message: 21/11/2004, 18h39

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