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

SWT/JFace Java Discussion :

TreeViewer & Form


Sujet :

SWT/JFace Java

  1. #1
    Membre confirm�
    Homme Profil pro
    ITESCIA
    Inscrit en
    Janvier 2013
    Messages
    101
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (�le de France)

    Informations professionnelles :
    Activit� : ITESCIA
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2013
    Messages : 101
    Par d�faut TreeViewer & Form
    Bonjour,

    J'ai dans l'id�e de cr�e une interface divis�e en deux,
    Sur la gauche un arbre et sur la droite une sorte de formulaire qui permet de modifier les donn�es de l'item s�lectionn� dans l'arbre.

    J'aimerai savoir quelle solution serait la plus "propre".
    De plus j'utilise un Classe Composant qui a pour attribut une liste d'Element (Composant + Fichier).
    De quelle mani�re puis-je "attacher" cette classe au formulaire ?

    Merci

  2. #2
    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 : 55
    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
    Billets dans le blog
    2
    Par d�faut
    Salut,

    Est-ce, dans sa forme (pas ses donn�es) :

    1. le m�me formulaire pour tous les items de l'arbre ?
    2. un formulaire diff�rent pour chaque item ?
    3. un nombre de formulaires restreints, associ� par exemple � propri�t�s de l'item (par exemple, � un type) ?


    Dans le cas 1, tout simplement cr�er un unique composant (Composite, qui contient par exemple un Form) qui repr�sente le formulaire, avec setter et getter pour lui transf�rer le mod�le de donn�es (�a peut �tre les informations s�par�es, ou une classe � toi qui contient ses informations). A chaque s�lection, tu appelles le getter (ou les getters) pour pouvoir sauvegarder ce qui a �t� saisi, tu appelles le setter pour remplir le formulaire avec les donn�es de la nouvelle s�lection. L'association des donn�es et des champs peut se faire soi-m�me, ou par binding.

    Dans le cas 2, la zone o� s'affiche le formulaire est un composant vide � l'origine, pr�voir que chaque item soit capable de fabriquer le formulaire (en lui passant le parent, c'est-�-dire le composant vide cr�� � l'origine). Avant de cr�er le formulaire pour le nouvel �l�ment s�lectionn�, faire la sauvegarde des donn�es de l'ancien, puis faire un dispose(), pour le d�truire.

    Dans le cas 3, pareil que dans le cas 1, mais le composant contient plusieurs Form, et tu utilises un StackLayout pour choisir celui qui correspond � l'�l�ment s�lectionn�.

    Ensuite, la question est : est-ce une application RCP, ou seulement SWT. Dans le second cas, ton interface sera juste un Shell avec un GridLayout ) 2 colonnes et la s�lection se g�re se g�re par �couteur (org.eclipse.jface.viewers.ISelectionChangedListener pour un TreeViewer). Dans le premier, il peut �tre int�ressant de faire 1 vue pour l'arbre, et un �diteur pour le formulaire, et la s�lection se g�rera par SelectionProvider, du moins en E3, parce que je ne connais pas trop E4, pas assez pour donner des pistes sur l'impl�mentation).




    Je ne suis pas s�r d'avoir compris ton histoire de composant, mais s'il s'agit d'avoir un objet associ� � l'item s�lectionn�, il suffit de passer sa r�f�rence au constructeur de la classe qui repr�sente ton formulaire, et de la stocker dans une variable de la classe.
    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. #3
    Membre confirm�
    Homme Profil pro
    ITESCIA
    Inscrit en
    Janvier 2013
    Messages
    101
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (�le de France)

    Informations professionnelles :
    Activit� : ITESCIA
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2013
    Messages : 101
    Par d�faut
    Merci joel,

    alors pour commenc� j'ai utilis� la seconde m�thode (m�me si je n'ai que 3 formulaires diff�rents), j'essaierai sans doute la troisi�me solution plus tard...
    Mais pour l'instant un autre probl�me me g�ne. J'ai utilis� un Sash pour s�parer mon arbre (� gauche) de mon formulaire (� droite), Et le-dit formulaire n�appara�t pas tant que je ne touche pas au sash. Et forcement lorsque je change d'item, je dispose le composant (puis je le reconstruit) et je doit red�caler le Sash pour qu'il puisse apparaitre....

    Est-ce un comportement normal ? (j'en doute)
    Comment pourrais-je palier � ce probl�me ?

    Merci

  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 : 55
    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
    Billets dans le blog
    2
    Par d�faut
    Avec un SashForm, tu peux utiliser setMaximizedControl() pour indiquer le seul composant visible, tant qu'il n'y en a pas d'autres (donc quand il n'y a pas de s�lection dans l'arbre). Ensuite, d�s qu'il y a une s�lection, tu n'as plus qu'� faire setMaximizedControl(null) pour revenir � une situation � plusieurs �l�ments s�par�s par des Sash, et si la s�lection disparait, tu refais setMaximizedControl( tree ).

    Par contre, j'ai l'impression que tu as des probl�mes de r�partitions des �l�ments dans le SashForm, c'est �� ? Tu utilises bien setWeights() pour initialiser la r�partition ?
    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
    Membre confirm�
    Homme Profil pro
    ITESCIA
    Inscrit en
    Janvier 2013
    Messages
    101
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (�le de France)

    Informations professionnelles :
    Activit� : ITESCIA
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2013
    Messages : 101
    Par d�faut
    En fait j'utilisais pas un SahsForm mais juste un Sash....
    J'ai simplifi� mon code en utilisant un SahsForm, mais le probl�me persistait, pour le solutionner j'ai du appel� comp.layout() apr�s avoir cr�� les widgets du formulaire.

    Et bon conseil pour l'utilisation de setMaximizedControl()

    Merci Beaucoup !

  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 : 55
    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
    Billets dans le blog
    2
    Par d�faut
    Citation Envoy� par Zombee Voir le message
    ...mais le probl�me persistait, pour le solutionner j'ai du appel� comp.layout() apr�s avoir cr�� les widgets du formulaire.
    Ah, oui, parce que tu les cr�es apr�s coup (apr�s avoir affich� le SashForm sans). D'ailleurs, il est n�cessaire de le faire �galement chaque fois que tu changes le topcontrol du StackLayout puisque c'est cette solution que tu as choisie.

    Le layout du composant, c'est effectivement un classique apr�s avoir modifi� les composants d'un conteneur (c'est le revalidate() de SWING en quelque sorte). Personnellement, j'utilise cette m�thode utilitaire chaque fois que j'ajoute ou j'enl�ve un composant (elle fonctionne quel que soient le composant et l'arbre de conteneurs - enfin, je ne l'ai pas encore mise en d�faut) :
    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
    public static void revalidateLayout (Control control) {
     
    		Control c = control;
    		do {
    			if (c instanceof ExpandBar) {
    				ExpandBar expandBar = (ExpandBar) c;
    				for (ExpandItem expandItem : expandBar.getItems()) {
    					expandItem
    						.setHeight(expandItem.getControl().computeSize(expandBar.getSize().x, SWT.DEFAULT, true).y);
    				}
    			}
    			c = c.getParent();
     
    		} while (c != null && c.getParent() != null && !(c instanceof ScrolledComposite));
     
    		if (c instanceof ScrolledComposite) {
    			ScrolledComposite scrolledComposite = (ScrolledComposite) c;
    			if (scrolledComposite.getExpandHorizontal() || scrolledComposite.getExpandVertical()) {
    				scrolledComposite
    					.setMinSize(scrolledComposite.getContent().computeSize(SWT.DEFAULT, SWT.DEFAULT, true));
    			} else {
    				scrolledComposite.getContent().pack(true);
    			}
    		}
    		if (c instanceof Composite) {
    			Composite composite = (Composite) c;
    			composite.layout(true, true);
    		}
     
    }
    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
    Membre Expert

    Avatar de alain.bernard
    Homme Profil pro
    Ing�nieur a�ronautique
    Inscrit en
    D�cembre 2011
    Messages
    749
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 37
    Localisation : France

    Informations professionnelles :
    Activit� : Ing�nieur a�ronautique
    Secteur : A�ronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : D�cembre 2011
    Messages : 749
    Par d�faut
    Bonsoir,

    J'arrive un peu apr�s la bataille, mais un MasterDetails n'aurait-il pas �t� plus simple pour ce genre d'interface ?
    Cf. http://mbaron.developpez.com/eclipse/forms/ slide 47

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. [RCP] Ouvrir des vues � partir du treeviewer sous forme des onglets
    Par chiraz86 dans le forum Eclipse Platform
    R�ponses: 3
    Dernier message: 10/03/2010, 17h19
  2. TreeView sous windows application form
    Par mbarki.rachid dans le forum Windows
    R�ponses: 1
    Dernier message: 03/05/2007, 15h20
  3. [VBA-E] mise en forme texte dans le noeud d'une treeview
    Par marsupilami34 dans le forum Macros et VBA Excel
    R�ponses: 8
    Dernier message: 17/08/2006, 16h16
  4. Mise en forme de Treeview
    Par marsupilami34 dans le forum G�n�ral VBA
    R�ponses: 13
    Dernier message: 07/08/2006, 16h07
  5. [Forms 6i] icon sur treeview
    Par Process Linux dans le forum Oracle
    R�ponses: 2
    Dernier message: 26/01/2006, 12h14

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