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. #21
    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 donc copié ton code
    et j'ai des problèmes de compilation
    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);
    					// selectedFile contient le path vers le fichier seléctionner
    					selectedFile = (String)( fileDialog).open();
    				}
    			}
    J'ai des erreurs sur runnable , sur public void run() sur { sur fileDialog et sur }
    Je vous met le code a jour
    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
    	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());
    			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());
    			FileDialog fileDialog = new FileDialog( getShell(), SWT.OPEN);
    			// selectedFile contient le path vers le fichier seléctionner
    			result[0] = (String)( fileDialog).open();
    			selectedFile = result[0];
    			Iterator<ElementWork> itWork = elementWorks.iterator();
    			while( itWork.hasNext())
    			{
    				elementWork = (ElementWork)itWork.next();
    				int id = elementWork.Id;
    				if( elementWork.wsText.equals( selectedFile))
    				{
    					selectedId = id;
    				}
    			}
    		}
    		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 code j'ai juste Runnable qui est d'un type non supporté Cannot instantiate the type Runnable

  2. #22
    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
    et j'ai des problèmes de compilation
    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);
    					// selectedFile contient le path vers le fichier seléctionner
    					selectedFile = (String)( fileDialog).open();
    				}
    			});
    J'ai des erreurs sur runnable , sur public void run() sur { sur fileDialog et sur }

    J'ai surligné en jaune les caractères qui sont au mauvais endroit, et qui devraient être déplacés là où je les ai mis en rouge...
    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.

  3. #23
    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 crois pas
    Display.getDefault(.syncExec( new Runnable())[
    Cannot instantiate the type Runnable
    et il n'y a que Runnable qui soit souligné
    il y a bien un cas ou Runnable est accepté mais dans ce cas c'est la fermeture du bloc qui est refusé: en fait il faut fermer le bloc de traitement avant de jouer la suite.
    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
    	public int RecupereNomDesFichiers() throws ClassNotFoundException, IllegalArgumentException, NullPointerException, SQLException
    	{
    		int selectedId = 0;
    		int integerToBeDefined = 0;
    		String selectedFile = null;
    		performFinish();
    		buildModel( 0, "Test");
    		if( InterbaseManager.connection == null)
    			MissionDatabaseManager.OpenDatabaseCoherence();
    		ArrayList<ElementWork> elementWorks = MissionDatabaseManager.ReadWork();
    		// charger les fichier de la base de donnée et remplir cette liste
    		try
    		{
    			System.out.println("Workbench: " + PlatformUI.getWorkbench());
    			System.out.println("ActiveWorkbenchWindow: " + PlatformUI.getWorkbench().getModalDialogShellProvider());
    			final String[] result = new String[1]; // le résultat est une String, donc on fait un tableau de 1 String
    			Display.getDefault().syncExec( new Runnable() {
    				public void run() {
    					// To do Nothing
    				}
    			});
    			FileDialog fileDialog = new FileDialog( getShell(), SWT.OPEN);
    			result[0] =  fileDialog.open();
    			// selectedFile contient le path vers le fichier seléctionné
    			selectedFile = result[0];
    			Iterator<ElementWork> itWork = elementWorks.iterator();
    			while( itWork.hasNext())
    			{
    				elementWork = (ElementWork)itWork.next();
    				int id = elementWork.Id;
    				if( elementWork.wsText.equals( selectedFile))
    					selectedId = id;
    			}
    		}	
    		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);
    	}
     
    	public ElementWork RecupereIdDuFichier() {
    		elementWork = linguistiquePage.getSelectedElementWork();
    		return elementWork;
    	}
    mais à l'exécution je sort toujours au même endroit avec la même cause:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Caused by: org.eclipse.swt.SWTException: Invalid thread access
    et après avoir trappé cette exception
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    org.eclipse.swt.SWTException: Invalid thread access

  4. #24
    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
    Display.getDefault(.syncExec( new Runnable())[
    Cannot instantiate the type Runnable
    et il n'y a que Runnable qui soit souligné
    il y a bien un cas ou Runnable est accepté mais dans ce cas c'est la fermeture du bloc qui est refusé: en fait il faut fermer le bloc de traitement avant de jouer la suite.
    Peu importe que seul Runnable soit souligné : c'est une instanciation de classe anonyme et la syntaxe est telle que je te l'ai donnée, un point c'est tout.
    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. #25
    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 faut résoudre l'exception
    Oui,J'ai fini par compiler et je sort toujours en exception
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    org.eclipse.swt.SWTException: Invalid thread access

  6. #26
    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
    Impossible : le but de Display.syncExec() ou Display.asyncExec() est d'exécuter le code dans le thread SWT. Donc il est impossible que ce code ne s'exécute pas dans le thread SWT. Quel est ton code final ?
    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. #27
    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 te donne 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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    	public int RecupereNomDesFichiers() throws ClassNotFoundException, IllegalArgumentException, NullPointerException, SQLException
    	{
    		int selectedId = 0;
    		int integerToBeDefined = 0;
    		String selectedFile = null;
    		performFinish();
    		buildModel( 0, "Test");
    		if( InterbaseManager.connection == null)
    			MissionDatabaseManager.OpenDatabaseCoherence();
    		ArrayList<ElementWork> elementWorks = MissionDatabaseManager.ReadWork();
    		// charger les fichier de la base de donnée et remplir cette liste
    		try
    		{
    			System.out.println("Workbench: " + PlatformUI.getWorkbench());
    			System.out.println("ActiveWorkbenchWindow: " + PlatformUI.getWorkbench().getModalDialogShellProvider());
    			final String[] result = new String[1]; // le résultat est une String, donc on fait un tableau de 1 String
    			Display.getDefault().syncExec( new Runnable() {
    				public void run() {
    					// To do Nothing
    				}
    			});
    			FileDialog fileDialog = new FileDialog( getShell(), SWT.OPEN);
    			result[0] =  fileDialog.open();
    			// selectedFile contient le path vers le fichier seléctionné
    			selectedFile = result[0];
    			Iterator<ElementWork> itWork = elementWorks.iterator();
    			while( itWork.hasNext())
    			{
    				elementWork = (ElementWork)itWork.next();
    				int id = elementWork.Id;
    				if( elementWork.wsText.equals( selectedFile))
    					selectedId = id;
    			}
    		}	
    		catch(NullPointerException ex)
    		{
    			ex.printStackTrace();
    		}
    		catch( java.lang.ClassCastException ex)
    		{
    			ex.printStackTrace();
    		}
    		catch( org.eclipse.swt.SWTException ex)
    		{
    			ex.printStackTrace();
    		}
    		buildModel( selectedId, selectedFile);
    		// ToDo il faut ressortir le numéro saisi par l'utilisateur
    		return( selectedId);
    	}
    c'est tuojour le getShell qui part en exeption

  8. #28
    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
    Forcément :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Display.getDefault().syncExec( new Runnable() {
    				public void run() {
    					// To do Nothing
    				}
    			});
    			FileDialog fileDialog = new FileDialog( getShell(), SWT.OPEN);
    Comment veux-tu que le code en dehors de la méthode run s'exécute dans la méthode run ? Et en plus, tu mets un commentaire pour dire que ça ne fait rien !
    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. #29
    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 ca marche,mais je n'ai pas le résutat attendu
    Je vous met le code modifié
    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
    	public int RecupereNomDesFichiers() throws ClassNotFoundException, IllegalArgumentException, NullPointerException, SQLException
    	{
    		int selectedId = 0;
    		int integerToBeDefined = 0;
    		String selectedFile = null;
    		performFinish();
    		buildModel( 0, "Test");
    		if( InterbaseManager.connection == null)
    			MissionDatabaseManager.OpenDatabaseCoherence();
    		ArrayList<ElementWork> elementWorks = MissionDatabaseManager.ReadWork();
    		// charger les fichier de la base de donnée et remplir cette liste
    		try
    		{
    			System.out.println("Workbench: " + PlatformUI.getWorkbench());
    			System.out.println("ActiveWorkbenchWindow: " + PlatformUI.getWorkbench().getModalDialogShellProvider());
    			final String[] result = new String[1]; // le résultat est une String, donc on fait un tableau de 1 String
    			Display.getDefault().syncExec( new Runnable() {
    				public void run() {
    					// To do getShell
    					FileDialog fileDialog = new FileDialog( getShell(), SWT.OPEN);
    					result[0] =  fileDialog.open();
    				}
    			});
    			// selectedFile doit contenir le path vers le fichier seléctionné
    			selectedFile = result[0];
    			//puis onparcours la liste des fichiers pour trouver l'identifiant
    			Iterator<ElementWork> itWork = elementWorks.iterator();
    			while( itWork.hasNext())
    			{
    				elementWork = (ElementWork)itWork.next();
    				int id = elementWork.Id;
    				if( elementWork.wsText.equals( selectedFile))
    					selectedId = id;
    			}
    		}	
    		catch(NullPointerException ex)
    		{
    			ex.printStackTrace();
    		}
    		catch( java.lang.ClassCastException ex)
    		{
    			ex.printStackTrace();
    		}
    		catch( org.eclipse.swt.SWTException ex)
    		{
    			ex.printStackTrace();
    		}
    		buildModel( selectedId, selectedFile);
    		// ToDo il faut ressortir le numéro saisi par l'utilisateur
    		return( selectedId);
    	}

    Il ouvre un explorateur, qui doit chercher dans les profondeurs des répertoires, alors que il faudrait afficher le résultat de la base de donnée contenu dans elementWork

  10. #30
    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
    Il ouvre un explorateur, qui doit chercher dans les profondeurs des répertoires, alors que il faudrait afficher le résultat de la base de donnée contenu dans elementWork
    Euh, c'est quoi le résultat de la base de données ? Un chemin de répertoire ou un truc comme ça ?
    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. #31
    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 La Base de donée donne des différants noms
    Dans la base de donnée on a les path sans disque et avec un numéro. Avec l'explorateur on obtien le path avec le disque.
    En outre il n'est pas souhaitable a ce stade d'aller dans les répertoires: Il y a deux exécutables C++ qui chargent la base de données et à se stade c'est la base de donnée qui est la référence, d'ou le besoin d'afficher le contenu de la base de donnée, qui comporte obligatoirement un nombre de fichiers différents de ceux du répertoire: C'est pour cela qu'il faut ouvrir une form pour recevoir le résultat de la base de donnée.
    J'ai d'ailleurs une méthode addPage() pour ouvrir une nouvelle form

  12. #32
    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 ne comprends pas ce qu'est un "path sans disque" : ce sont des chemins relatifs c'est ça, relatifs à une racine connue, donc, ou avec un préfixegénérique peut-être ? Ensuite, je ne comprends pas le but du FileDialog, si on doit récupérer des données d'une base (même si ce sont des chemins d'accès à des fichiers) : à quoi sert le FileDialog (qui ne peut afficher que des fichiers d'un file system ? Si le but est de remplir une nouvelle page avec les données lues dans la base, donc sur appel de nextPage() à priori, il suffit d'appeler addPage, avec une page avec un TableViewer par exemple (ou un TreeViewer peut être pour simuler une arborescence), pour afficher les données de récupérées dans la base...
    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. #33
    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 demandé le code a un développeur
    il me l'a donné, mais sans voir le sujet et donc il est parti sur un FileDialogue;
    Je comprend aujourd'hui le misfit et je demande à être accompagné pour la suite.
    Effectivement on cherche deux choses dans la base de donnée:le path du document d'origine et son identificateur Numérique
    Je pars sur votre proposition: sur appel de nextPage() à priori, il suffit d'appeler addPage, avec une page avec un TableViewer
    mais à quoi accrocher nextPage(), addPage(), et TableViewer. J'ai essayé nextPage() sans rien et il es souligné par le compilateur: The method nextPage() is undefined for the type LinguistiqueImportWizard

  14. #34
    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
    Un Wizard est constitué :

    • D'un conteneur (je ne parle pas du dialogue lui-même = WizardDialog, qui ne constitue qu'une coquille d'affichage) : le IWizard
    • De pages, des implémentations de IWizardPage


    Au lancement, on créé des pages qu'on met dans un Wizard donc. Dans ton cas, la dernière page peut être créée au début, mais vide, ou créée au moment où on passe à la page suivante de la dernière des pages ajoutées au démarrage.

    Dans le premier cas, le plus simple, il suffit que dans la la méthode getNextPage() de l'avant dernière page, on s'occupe du remplissage :

    Par exemple, si la classe de l'avant dernière page s'appelle AvantDernierepage (ça dépend de ton programme ça)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public AvantDernierepage extends WizardPage { // en général, on se casse pas la tête à réimplémenter toute l'interface, on prend une implémentation par défaut, fournie par JFace = WizardPage
     
     
    // cette méthode sera appelée par l'API lors de passage à la place suivante
    public IWizardPage getNextPage() {
        DernierePage page  = (DernierePage)super.getNextPage();
        // ICI tu peux mettre le code pour charger les données dans page, à partir de celle qui ont été fourni dans la page courante et les précédentes : par exemple, tu pourrais simplement mettre une méthode dans DernierePage que tu appelles ici sur l'instance dans la variable page
        return page;
    }
     
    }
    Et dans le Wizard, il y a une méthode addPages() dans laquelle on met les appels de addPage() pour ajouter chaque page dans le wizard, qui donne quelque chose comme çà :

    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
    public TonWizardTruc extends Wizard {
     
    /** ... **/
     
    public void addPages() {
     
        // les noms de classes sont des exemples !!!
        addPage( new PremierePage() );
        /** ici on peut avoir d'autres pages **/
        addPage( new AvantDernierePage() ); 
        addPage( new DernierePage() );
     
    }
     
    /** ... **/
     
    }


    Dans le second cas, on produit la dernière page uniquement lorsqu'on passe sur la dernière page : ce qui signifie qu'il faut bluffer le IWizard pour qu'il croit qu'il y a une page après la dernière actuelle, alors qu'elle n'existe pas encore. Une solution qui me semble trop compliquée à t'expliquer.

    Ensuite, pour mettre un TableViewer(ou un TreeViewer) dans la dernière page, il y a largement assez d'exemple sur le net qui explique comment on se sert de ces widgets JFace.
    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. #35
    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 Merci mais je pars en vacances
    Je serais là dans 10 jours
    Voila l'état du code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public class LinguistiqueImportWizard<DernierePage> extends Wizard implements IImportWizard {
     
    	private LinguistiqueImportWizardPage linguistiquePage;
    	private LinguistiqueImportWizardPage avantDernierePage;
    	public ElementWork elementWork;
    	private boolean initialized = false;
    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
    	public void addPages() {
     
    	    // les noms de classes sont instanciées
    		addPage( (IWizardPage) new LinguistiqueImportWizardPage( "Linguistique"));
    	    /** ici on peut avoir d'autres pages **/
    	   	public IWizardPage getNextPage( ElementWork elementWorks)
    	{
    		int selectedId = 0;
    		String selectedFile;
    		Iterator itWork;
    		avantDernierePage = (LinguistiqueImportWizardPage) super.getNextPage( (IWizardPage) elementWorks);
     
    		// ICI tu peux mettre le code pour charger les données dans page, à partir de celle qui ont été fourni dans la page courante et les précédentes : par exemple, tu pourrais simplement mettre une méthode dans DernierePage que tu appelles ici sur l'instance dans la variable page
    		itWork = ((Iterable<ElementWork>)elementWorks).iterator();
    		while( itWork.hasNext())
    		{
    			elementWork = (ElementWork)itWork.next();
    			int id = elementWork.Id;
    			String wsText = elementWork.wsText;
    		}
    	    return( avantDernierePage);
    	}
    Mais je dois remplir la form avec des données qui sont dans le bloc iteré: je ne sais pas le faire

  16. #36
    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 bonjour
    Je suis de retours
    J'espère un retours de Joel Drigo;
    j'ai une erreur de compilation sur cette ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    avantDernierePage =  super.getNextPage( elementWorks);
    getNextPage est souligné par le compilateur

  17. #37
    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 résolue les pb de compilation
    Je but sur le fait que le premier Wizard reste ouvert.
    Je vous met performFinish();
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public boolean performFinish()
    	{
    		// long ConnectServer( String wsServerFullname, int DatabaseServer, String wsLogin, String wsPassword)
    		return( true);
    	}

  18. #38
    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 clos cete discusion du fait de l'infraction message dépalcé deveint message dupliqué
    vu que j'ai été en infraction je clos ce message et je crée un message avec les problèmes résiduels

  19. #39
    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 ca cmpile fit il ce que je veux
    Ca compile:
    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
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    package com.all4tec.matelo.linguistique.wizards;
     
    import static com.all4tec.matelo.linguistique.utils.Utils.createChain;
    import static com.all4tec.matelo.linguistique.utils.Utils.setMacroState;
    import static com.all4tec.matelo.linguistique.utils.Utils.setlink;
     
    import org.eclipse.core.runtime.Assert;
    import org.eclipse.core.runtime.IProgressMonitor;
    import org.eclipse.core.runtime.IStatus;
    import org.eclipse.core.runtime.OperationCanceledException;
    import org.eclipse.core.runtime.ProgressMonitorWrapper;
    import org.eclipse.core.runtime.Status;
    import org.eclipse.jface.util.Policy;
    import org.eclipse.swt.widgets.Display;
    import java.awt.Frame;
    import java.lang.reflect.InvocationTargetException;
    import java.sql.Connection;
    import java.sql.SQLException;
    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;
    import org.eclipse.jface.operation.IRunnableWithProgress;
    import org.eclipse.jface.viewers.IStructuredSelection;
    import org.eclipse.jface.wizard.IWizardPage;
    import org.eclipse.jface.wizard.Wizard;
    import org.eclipse.swt.SWT;
    import org.eclipse.swt.widgets.FileDialog;
    import org.eclipse.ui.IImportWizard;
    import org.eclipse.ui.IWorkbench;
    import org.eclipse.ui.PlatformUI;
     
    import com.all4tec.matelo.datamodel.diagram.IDiagram;
    import com.all4tec.matelo.datamodel.diagram.IMacroState;
    import com.all4tec.matelo.datamodel.diagram.IState;
    import com.all4tec.matelo.datamodel.diagram.ITransition;
    import com.all4tec.matelo.datamodel.probabilities.Frequency;
    import com.all4tec.matelo.datamodel.project.IChain;
    import com.all4tec.matelo.datamodel.resources.utils.ResourceUtils;
    import com.all4tec.matelo.linguistique.utils.Utils;
    import com.all4tec.matelo.linguistique.wizards.Structure.ElementWork;
    import com.all4tec.matelo.linguistique.wizards.pages.LinguistiqueImportWizardPage;
    import com.all4tec.matelo.utils.managers.projects.ProjectsManager;
    import com.all4tec.matelo.utils.managers.resources.ResourceManager;
     
    public class LinguistiqueImportWizard<avantDernierePage> extends Wizard implements IImportWizard {
     
    	private LinguistiqueImportWizardPage linguistiquePage;
    	private IWizardPage avantDernierePage;
    	public ElementWork elementWork;
    	private boolean initialized = false;
     
    	public LinguistiqueImportWizard() 
    	{
    		// TODO Auto-generated constructor stub
    	}
     
    	@Override
    	public void init(IWorkbench workbench, IStructuredSelection selection)
    	{
    	}
    	public void addPages()
    	{
    	    // les noms de classes sont instanciées
    		addPage( (IWizardPage) new LinguistiqueImportWizardPage( "Linguistique"));
    	}
    	public void addAvDerPage(ArrayList<ElementWork> elementWorks)
    	{
    		addPage( (IWizardPage) new LinguistiqueImportWizardPage( "Get File"));
    	}
     
    	public IWizardPage getNextPage( ElementWork elementWorks)
    	{
    		int selectedId = 0;
    		String selectedFile;
    		Iterator itWork;
     
    		avantDernierePage =  super.getNextPage( (IWizardPage) elementWorks);
    		// ICI tu peux mettre le code pour charger les données dans page, à partir de celle qui ont été fourni dans la page courante et les précédentes : par exemple, tu pourrais simplement mettre une méthode dans DernierePage que tu appelles ici sur l'instance dans la variable page
    		itWork = ((Iterable<ElementWork>)elementWorks).iterator();
    		while( itWork.hasNext())
    		{
    			elementWork = (ElementWork)itWork.next();
    			int id = elementWork.Id;
    			String wsText = elementWork.wsText;
    		}
    	    return( avantDernierePage);
    	}
     
    	// cette méthode sera appelée par l'API lors de passage à la place suivante
    	public int RecupereNomDesFichiers() throws ClassNotFoundException, IllegalArgumentException, NullPointerException, SQLException
    	{
    		int selectedId = 0;
    		int integerToBeDefined = 0;
    		String SelectedFile = null;
    		performFinish();
    		if( InterbaseManager.connection == null)
    			MissionDatabaseManager.OpenDatabaseCoherence();
    		ArrayList<ElementWork> elementWorks = MissionDatabaseManager.ReadWork();
    		// charger les fichiers de la base de données et remplir cette liste
    		try
    		{
    			// il faut afficher une form et la remplire avec les elementsWorks
    			addAvDerPage( elementWorks);
    			// selectedFile doit contenir le path vers le fichier seléctionné
    			getNextPage( elementWorks);
    			//puis onparcours la liste des fichiers pour trouver l'identifiant
    		}
    		catch(NullPointerException ex)
    		{
    			ex.printStackTrace();
    		}
    		catch( java.lang.ClassCastException ex)
    		{
    			ex.printStackTrace();
    		}
    		catch( org.eclipse.swt.SWTException ex)
    		{
    			ex.printStackTrace();
    		}
    		buildModel( selectedId, SelectedFile);
    		// ToDo il faut ressortir le numéro saisi par l'utilisateur
    		return( selectedId);
    	}
     
    	private void getNextPage(ArrayList<ElementWork> elementWorks) {
    		// TODO Auto-generated method stub
     
    	}
     
    	public ElementWork RecupereIdDuFichier() {
    		elementWork = linguistiquePage.getSelectedElementWork();
    		return elementWork;
    	}
     
    	@Override
    	public IWizardPage getNextPage(IWizardPage page) {
    		if (false == initialized) {
    			initialized = true;
    			if (page instanceof LinguistiqueImportWizardPage) {
    				final List<ElementWork> elementWorks = new ArrayList<ElementWork>();
    				IRunnableWithProgress runnableWithProgress = new IRunnableWithProgress() {
    					@Override
    					public void run(IProgressMonitor monitor)
    							throws InvocationTargetException,
    							InterruptedException
    							{
    						try
    						{
    							Connection connection = MissionDatabaseManager.OpenDatabaseCoherence();
    							int iIdDoc = RecupereNomDesFichiers();
    						}
    						catch( ClassNotFoundException e)
    						{
    							// TODO Auto-generated catch block
    							e.printStackTrace();
    						}
    						catch( IllegalArgumentException e)
    						{
    							// TODO Auto-generated catch block
    							e.printStackTrace();
    						}
    						catch( NullPointerException e)
    						{
    							// TODO Auto-generated catch block
    							e.printStackTrace();
    						}
    						catch( SQLException e)
    						{
    							// TODO Auto-generated catch block
    							e.printStackTrace();
    						}
    						monitor.done();
    					}
    				};
    				try {
    					getContainer().run(true, false, runnableWithProgress);
    				} catch (InvocationTargetException e) {
    					e.printStackTrace();
    				} catch (InterruptedException e) {
    					e.printStackTrace();
    				}
    				linguistiquePage.setElementWorkss(elementWorks);
    				return page;
    			}
    		}
    		return super.getNextPage(page);
    	}
     
    	IDiagram diagram;
    	public void buildModel(int iIdDoc, String path)
        {
        	IChain chain = createChain( path);
    		ProjectsManager.getInstance().getActiveProject().getChains().add(chain);
    		ResourceUtils.saveResource(ResourceManager.getInstance().getResourceProject(), false);
    		diagram = Utils.getDiagram(chain);
    		ProjectsManager.getInstance().getActiveProject().getChains().add(chain);
    		IMacroState macroState = setMacroState(chain, "macroState", "100", "50");
    		IState Invoke = diagram.getInvokeState();
    		IState Terminate = diagram.getTerminateState();
    		// ITransition setlink( IDiagram diagram, IState From, IState To, String
    		// name, Object objet, Frequency frequency)
    		ITransition Link = setlink( diagram, Invoke, macroState, "myLink", "subject", Frequency.NORMAL);
    		Link = setlink( diagram, macroState, (IState) Terminate, "myLinkfinal", "subject", Frequency.NORMAL);
        }
    	public boolean performFinish()
    	{
    		return( true);
    	}
    }
    Fait il ce que je veux: non
    et comme on m'a sanctionné sur ce thread, j'en ouvre un autre pour traiter les problèmes d'exception nommé : http://www.developpez.net/forums/d15...-sous-eclipse/

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

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