IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Eclipse Platform Discussion :

intercepter la fermeture d'une vue


Sujet :

Eclipse Platform

  1. #1
    Membre régulier
    Inscrit en
    Juin 2007
    Messages
    151
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 151
    Points : 85
    Points
    85
    Par défaut intercepter la fermeture d'une vue
    Bonjour,


    y a t-il un moyen pour intercepter la fermeture d'une vue ? (dans un tab folder)

    Ou bien de redefinir le comportement du tab folder lors de la fermeture d'une vue?



    Merci

  2. #2
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 57
    Points : 44
    Points
    44
    Par défaut
    Salut,
    y a t-il un moyen pour intercepter la fermeture d'une vue ? (dans un tab folder)
    Il me semble la méthode dispose()...

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 145
    Points : 179
    Points
    179
    Par défaut
    En utilisant l'interface IPartListener2

  4. #4
    Membre régulier
    Inscrit en
    Juin 2007
    Messages
    151
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 151
    Points : 85
    Points
    85
    Par défaut
    J'avais deja essayer avec l'interface IPartListener2 mais je n'ai aucune résutlat sur aucune des methodes, que ce soit a l'ouverte/focus/fermeture de ma vue.


    Alors peut-etre que je m'y prend mal ?

    J'ai juste implementé IPartListener2 dans les vues concernées, j'ai essayé d'affiché un emssage dans chaque methode pour identifié les methodes appelé, mais rien.


  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 145
    Points : 179
    Points
    179
    Par défaut
    Montre nous ton code pour qu'on puisse se faire une idée...

  6. #6
    Membre régulier
    Inscrit en
    Juin 2007
    Messages
    151
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 151
    Points : 85
    Points
    85
    Par défaut
    Bah plutot simple :


    ma vue :


    public class LotView extends ViewPart implements IPartListener2{
    ....

    les methodes de IpartListener2 (bon la elles sont vide mais j'avais un message de trace dans chacune d'entre elle):


    public void partActivated(IWorkbenchPartReference partRef) {
    // TODO Auto-generated method stub

    }

    public void partBroughtToTop(IWorkbenchPartReference partRef) {
    // TODO Auto-generated method stub

    }

    public void partClosed(IWorkbenchPartReference partRef) {
    // TODO Auto-generated method stub

    }

    public void partDeactivated(IWorkbenchPartReference partRef) {
    // TODO Auto-generated method stub

    }

    public void partHidden(IWorkbenchPartReference partRef) {
    // TODO Auto-generated method stub

    }

    public void partInputChanged(IWorkbenchPartReference partRef) {
    // TODO Auto-generated method stub

    }

    public void partOpened(IWorkbenchPartReference partRef) {
    // TODO Auto-generated method stub

    }

    public void partVisible(IWorkbenchPartReference partRef) {
    // TODO Auto-generated method stub

    }

    Et c'est tout...


    Ma vue est affiché dans un tab folder avec d'autre.

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 46
    Points : 49
    Points
    49
    Par défaut
    Ben moi j'ai pas trop cherche mais je dirai que tu devras a un moment quand meme associer ton listner a ta view.
    Moi j'aurai pas implementer l'interface mais plutot fait une methode que j'applerai initPartListner() que j'appelle dans le constructeur bien sur. et cette methode sera dans ce style:
    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
     
    private void initPartListener() {                                                          
         getSite().getPage().addPartListener( new IPartListener2() {
     
         /* Cette methode sera appelee quand le view sera fermee -> t'y mets le comportement approprie */
         public void partClosed( IWorkbenchPartReference partRef ) {
         // Ici ton implementation...
         }
     
         /* Cette methode sera appelee quand le view sera desactivee => t'y mets le comportement approprie */
         public void partDeactivated( IWorkbenchPartReference partRef ) {
         // Ici ton implementation...
         }
     
         /*Cette methode sera appelee quand le view sera activee => t'y mets le comportement approprie */
         public void partActivated( IWorkbenchPartReference partRef ) {
         // Ici ton implementation...
    }
    // Et ainsi de suite avec les autres methodes
    // Bien sur il faut les laisser vides si tu fais rien
    Voila j'espere que ca t'aidera, tiens nous au courant

    AC

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 46
    Points : 49
    Points
    49
    Par défaut
    J'ai oublie de fermer mon code :s donc voila le morceau de code syntaxiquement correcte:

    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
     
    private void initPartListener() {                                                          
         getSite().getPage().addPartListener( new IPartListener2() {
     
                /* Cette methode sera appelee quand le view sera fermee -> t'y mets le comportement approprie */
                public void partClosed( IWorkbenchPartReference partRef ) {
                      // Ici ton implementation...
                }
     
                /* Cette methode sera appelee quand le view sera desactivee => t'y mets le comportement approprie */
                public void partDeactivated( IWorkbenchPartReference partRef ) {
                     // Ici ton implementation...
                }
     
                /*Cette methode sera appelee quand le view sera activee => t'y mets le comportement approprie */
                public void partActivated( IWorkbenchPartReference partRef ) {
                     // Ici ton implementation...
                }
                // Et ainsi de suite avec les autres methodes
                // Bien sur il faut les laisser vides si tu fais rien
        });
    }
     
    Have fun
     
    AC

  9. #9
    Membre régulier
    Inscrit en
    Juin 2007
    Messages
    151
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 151
    Points : 85
    Points
    85
    Par défaut
    Merci AirCraft,

    ça marche ffectivement mieux.

    je ne sais pas trop ou j'avais la tete.


    Par contre j'ai plusieurs type de vue dans ce tabFolder et du coup ça le fait pour tous donc il va falloir que je trouve le moyen de faire la différence lors du declenchement de l'event.


    Merci

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 46
    Points : 49
    Points
    49
    Par défaut
    dans ce cas utilise une classe interne (implementant l'interface bien sur) dans ta classe qui utilise ces vues, et dans chaque methode tu fais des "if" pour faire un traitement a chaque vue (tu peux surement recuperer la vue ecoutee a partir du "IWorkbenchPartReference partRef" ca doit pas etre dur a trouver ). et quand tu instancies tes vues tu appelles:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    view1.getSite().getPage().addPartListener(new MyPartListener());
    view2.getSite().getPage().addPartListener(new MyPartListener());
    comme al a Swing

    Have fun

    AC

  11. #11
    Membre régulier
    Inscrit en
    Juin 2007
    Messages
    151
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 151
    Points : 85
    Points
    85
    Par défaut
    Salut,

    j'ai effectivement trouvé le moyen de savoir de quel type de vue il s'agit grace au partRef.


    Par contre j'ai un phénomène étrange et pas top!

    Explication :
    j'ai 3 types de vue : A,B,C.
    Ce sont les vues C qui m'interesse ici. Je fait donc un filtre pour avoir que les evenements des vues C.
    La pas de probleme.

    Sauf que si j'ai plusieurs vue C ouverte dans mon tabFolder, et bien j'ai autant d'appel sur chaque evenement!

    Par example : si je passe d'une vue C a une autre vue C via mes onglets.
    je vais avoir 2x l'appel a "partActivated", 2x a "partDeactivated", 2x"partHidden", 2x"partVisible".

    Si j'ouvre encore une autre vue C, et bien ça sera 3x de chaque...

    Je ne comprend pas pourquoi chaque evenement est repété?!

    Il devrait y en avoir une qui declenche les evenement "desactivé" et "caché" et 1 l'inverse mais pas 2x tout?!?

    Le comportement des vues semble bien sur tout a fait ok.

    Merci

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 46
    Points : 49
    Points
    49
    Par défaut
    poste ton code je peux pas te dire comme ca! t'es sur que t'ajoute pas 2 instance du listener a chque vue (tu fais 2 fois addPartListener sur la vue C par exemple)? Ca sera un truc tout bete de ce genre! le truc qui est devant nos yeux mais on le vois pas! Sinon si tu veux etre un peu autodidacte met un breakpoint sur les methodes du listener et lance l'appli en debug et la tu verras les appels et pk ca se lance plusieurs fois et d'ou!

    Voila

    Have fun

    AC

  13. #13
    Membre régulier
    Inscrit en
    Juin 2007
    Messages
    151
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 151
    Points : 85
    Points
    85
    Par défaut
    Citation Envoyé par Aircraft
    poste ton code je peux pas te dire comme ca! t'es sur que t'ajoute pas 2 instance du listener a chque vue (tu fais 2 fois addPartListener sur la vue C par exemple)? Ca sera un truc tout bete de ce genre!

    haha bien vu l'aveugle

    L'informatique ne fait que ce qu'on lui dit apres tout...!

    Heureusement que je suis en vacances bientot car la j'ai la concentration qui baisse


    Merci beaucoup pour ton aide

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 46
    Points : 49
    Points
    49
    Par défaut
    Des vacances?? Ah comment ca me manque

    Allez tu peux mettre un "resolu" pour les autres !

    Have fun,

    AC

  15. #15
    Membre régulier
    Inscrit en
    Juin 2007
    Messages
    151
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 151
    Points : 85
    Points
    85
    Par défaut
    Avant le "resolu"

    j'aurai une derniere question, certe plus en rapport avec le titre du topic.

    Je voulais intercepté ce type d'evenement car je veux que certaine vue ne soit visible que lorsque d'autre soit selectionnée.

    j'ai dont mis le code pour afficher/cacher ces vu dans le listener sur l'activation/desactivation des vues qui vont bien.

    Sauf que j'ai un warning ennervant qui se produit, quand je veux afficher mes vues.

    J'ai ça :

    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
    !ENTRY org.eclipse.ui.workbench 4 0 2007-07-31 15:17:18.468
    !MESSAGE WARNING: Prevented recursive attempt to activate part winmaj2.TreeCategoryView while still in the middle of activating part winmaj2.LotView
    !STACK 0
    java.lang.RuntimeException: WARNING: Prevented recursive attempt to activate part winmaj2.TreeCategoryView while still in the middle of activating part winmaj2.LotView
    	at org.eclipse.ui.internal.WorkbenchPage.setActivePart(WorkbenchPage.java:3157)
    	at org.eclipse.ui.internal.WorkbenchPage.activate(WorkbenchPage.java:588)
    	at org.eclipse.ui.internal.WorkbenchPage.busyShowView(WorkbenchPage.java:1008)
    	at org.eclipse.ui.internal.WorkbenchPage.busyShowView(WorkbenchPage.java:989)
    	at org.eclipse.ui.internal.WorkbenchPage.access$13(WorkbenchPage.java:968)
    	at org.eclipse.ui.internal.WorkbenchPage$13.run(WorkbenchPage.java:3514)
    	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:67)
    	at org.eclipse.ui.internal.WorkbenchPage.showView(WorkbenchPage.java:3511)
    	at org.eclipse.ui.internal.WorkbenchPage.showView(WorkbenchPage.java:3487)
    	at classeVue.ListeDesVentesView$1.partActivated(ListeDesVentesView.java:80)
    	at org.eclipse.ui.internal.PartListenerList2$1.run(PartListenerList2.java:68)
    	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
    	at org.eclipse.core.runtime.Platform.run(Platform.java:843)
    	at org.eclipse.ui.internal.PartListenerList2.fireEvent(PartListenerList2.java:53)
    	at org.eclipse.ui.internal.PartListenerList2.firePartActivated(PartListenerList2.java:66)
    	at org.eclipse.ui.internal.PartService.firePartActivated(PartService.java:77)
    	at org.eclipse.ui.internal.PartService.setActivePart(PartService.java:171)
    	at org.eclipse.ui.internal.WorkbenchPagePartList.fireActivePartChanged(WorkbenchPagePartList.java:56)
    	at org.eclipse.ui.internal.PartList.setActivePart(PartList.java:126)
    	at org.eclipse.ui.internal.WorkbenchPage.setActivePart(WorkbenchPage.java:3207)
    	at org.eclipse.ui.internal.WorkbenchPage.requestActivation(WorkbenchPage.java:2750)
    	at org.eclipse.ui.internal.PartPane.requestActivation(PartPane.java:256)
    	at org.eclipse.ui.internal.PartPane.setFocus(PartPane.java:302)
    	at org.eclipse.ui.internal.PartStack.presentationSelectionChanged(PartStack.java:798)
    	at org.eclipse.ui.internal.PartStack.access$1(PartStack.java:781)
    	at org.eclipse.ui.internal.PartStack$1.selectPart(PartStack.java:123)
    	at org.eclipse.ui.internal.presentations.util.TabbedStackPresentation$1.handleEvent(TabbedStackPresentation.java:126)
    	at org.eclipse.ui.internal.presentations.util.AbstractTabFolder.fireEvent(AbstractTabFolder.java:267)
    	at org.eclipse.ui.internal.presentations.util.AbstractTabFolder.fireEvent(AbstractTabFolder.java:276)
    	at org.eclipse.ui.internal.presentations.defaultpresentation.DefaultTabFolder.access$1(DefaultTabFolder.java:1)
    	at org.eclipse.ui.internal.presentations.defaultpresentation.DefaultTabFolder$2.handleEvent(DefaultTabFolder.java:84)
    	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
    	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:928)
    	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:952)
    	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:937)
    	at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:709)
    	at org.eclipse.swt.custom.CTabFolder.setSelection(CTabFolder.java:3171)
    	at org.eclipse.swt.custom.CTabFolder.onMouse(CTabFolder.java:1953)
    	at org.eclipse.swt.custom.CTabFolder$1.handleEvent(CTabFolder.java:288)
    	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
    	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:928)
    	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3348)
    	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2968)
    	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1930)
    	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1894)
    	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:422)
    	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
    	at winmaj2.Application.run(Application.java:18)
    	at org.eclipse.core.internal.runtime.PlatformActivator$1.run(PlatformActivator.java:78)
    	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:92)
    	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:68)
    	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:400)
    	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:177)
    	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.core.launcher.Main.invokeFramework(Main.java:336)
    	at org.eclipse.core.launcher.Main.basicRun(Main.java:280)
    	at org.eclipse.core.launcher.Main.run(Main.java:977)
    	at org.eclipse.core.launcher.Main.main(Main.java:952)
    J'avais deja ce probleme avant que j'utilisais les methodes setFocus() pour faire ça mais j'avais observé que setFocus() etait appelé plusieurs fois.

    La avec ce listener je n'appel qu'une seule fois mon code qui ouvre mes vues...donc je ne comprend pas pourquoi j'ai encore ce type de message d'erreur

    Surtout que ça ne me le fait que pour l'affichage, quand je les cachent il n'y a pas de probleme apparament.

    Code de mon listener :

    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
     
    public void partActivated(IWorkbenchPartReference partRef) 
    {
       if(partRef.getId().compareTo("winmaj2.LotView")==0)
       { 
          System.out.println("activation de la vue d'un lot");
          IViewReference ref = getViewSite().getPage().findViewReference(TreeCategoryView.ID);
          if(ref==null)
          {
    	try {
                getViewSite().getPage().showView(TreeCategoryView.ID);
    	} catch (PartInitException e) {
    	// TODO Auto-generated catch block
    	    e.printStackTrace();
    	}
          }
     
    	IViewReference refImg = getViewSite().getPage().findViewReference(ImageLotView.ID);
    	if(refImg==null)
    	{
    	    try {
                    getViewSite().getPage().showView(ImageLotView.ID);
    	     } catch (PartInitException e) {
    		// TODO Auto-generated catch block
    		e.printStackTrace();
    	     }
            }
       }
    }
     
     
    public void partDeactivated(IWorkbenchPartReference partRef) 
    {
      if(partRef.getId().compareTo("winmaj2.LotView")==0)
      {
    	System.out.println("Desactivation de la vue d'un lot");
    	IViewReference ref = getViewSite().getPage().findViewReference(TreeCategoryView.ID);
    	if(ref!=null)
    		getViewSite().getPage().hideView(ref);
     
    	IViewReference refImg = getViewSite().getPage().findViewReference(ImageLotView.ID);
    	if(refImg!=null)
    		getViewSite().getPage().hideView(refImg);
        } 
    }

  16. #16
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 46
    Points : 49
    Points
    49
    Par défaut
    Le warning dit que tu fais une activation recursive des vues, En effet si tu vois ton code, la premiere vue va activer la deuxieme vue qui va elle meme essayer d'activer la premiere vue et ainsi de suite ( un debuggage est tres utile pour trouver ce genre de prob, penses y )... une solution simple (qui peut marcher) serait d'ajouter un test avant chauqe appel de ce genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    getViewSite().getPage().showView(TreeCategoryView.ID);
    pour verifier si la vue n'est pas deja activee. si elle est deja activee tu fais rien.

    Voila si ca ne resoud pas le pb il faut plus d'elements alors, envoie le code ou tu ajoutes les instances du listener a tes vues par exemple!

    AC

  17. #17
    Membre régulier
    Inscrit en
    Juin 2007
    Messages
    151
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 151
    Points : 85
    Points
    85
    Par défaut
    Désolé mais je ne vois vraiment pas ou il y a la moindre recursivité dans mon code!

    Et je fais un test avant de faire un show justement.


    Quand une vue qu'on va dire de type A (l'activation d'autre vue est filtré et ne fait rien) est activé, j'intercepte l'evenement qui n'a lieu qu'une fois et je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
     IViewReference ref = getViewSite().getPage().findViewReference(TreeCategoryView.ID);
          if(ref==null)
          {
    	try {
                getViewSite().getPage().showView(TreeCategoryView.ID);
    	} catch (PartInitException e) {
    	// TODO Auto-generated catch block
    	    e.printStackTrace();
    	}
          }
    Si "ref" n'est pas a null c'est que la vue existe deja, je ne fait donc rien.
    Dans le cas contraire je l'affiche.
    Et c'est fini...

    Quand ma vue de type A pert le focus meme chose mais avec un hide.

    Je ne vois vraiment rien de recursif la dedans?

  18. #18
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 46
    Points : 49
    Points
    49
    Par défaut
    je dois etre fatigue aussi alors

    Je verrai ca qd je rentre chez moi tout a l'heure! je te reponds ce soir si j'ai une solution!

    AC

  19. #19
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 46
    Points : 49
    Points
    49
    Par défaut
    poste qd meme comment tu fais les addPartListener ca peut aider!

    AC

  20. #20
    Membre régulier
    Inscrit en
    Juin 2007
    Messages
    151
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 151
    Points : 85
    Points
    85
    Par défaut
    Voici :

    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
     
    IPartListener2 viewListener = new IPartListener2() {
     
    			public void partActivated(IWorkbenchPartReference partRef) {
     
    				if(partRef.getId().compareTo("winmaj2.LotView")==0)
    				{
    					System.out.println("activation de la vue d'un lot");
     
    					IViewReference ref = getViewSite().getPage().findViewReference(TreeCategoryView.ID);
    					if(ref==null)
    					{
    						try {
    							getViewSite().getPage().showView(TreeCategoryView.ID);
    						} catch (PartInitException e) {
    							// TODO Auto-generated catch block
    							e.printStackTrace();
    						}
    					}
     
    					IViewReference refImg = getViewSite().getPage().findViewReference(ImageLotView.ID);
    					if(refImg==null)
    					{
    						try {
    							getViewSite().getPage().showView(ImageLotView.ID);
    						} catch (PartInitException e) {
    							// TODO Auto-generated catch block
    							e.printStackTrace();
    						}
    					}
    				}
    				else //c'est une autre vue qui s'active
    				{
    					//si c'est la liste des vente ou une vente > cache les vues
    					if(partRef.getId().compareTo("winmaj2.ListeDesVentesView")==0 ||partRef.getId().compareTo("winmaj2.VenteEtLotView")==0)
    					{
    						System.out.println("activation de la liste des vente ou d'une vente");
    						IViewReference ref = getViewSite().getPage().findViewReference(TreeCategoryView.ID);
    						if(ref!=null)
    							getViewSite().getPage().hideView(ref);
     
    						IViewReference refImg = getViewSite().getPage().findViewReference(ImageLotView.ID);
    						if(refImg!=null)
    							getViewSite().getPage().hideView(refImg);
    					}
    				}
    			}
     
    			public void partBroughtToTop(IWorkbenchPartReference partRef) {
     
    			}
     
    			public void partClosed(IWorkbenchPartReference partRef) {
    				// TODO Auto-generated method stub
     
     
    			}
     
    			public void partDeactivated(IWorkbenchPartReference partRef) {
     
    			}
     
    			public void partHidden(IWorkbenchPartReference partRef) {
     
    			}
     
    			public void partInputChanged(IWorkbenchPartReference partRef) {
     
    			}
     
    			public void partOpened(IWorkbenchPartReference partRef) {
     
    			}
     
    			public void partVisible(IWorkbenchPartReference partRef) {
     
    			}
     
    		};
     
    		getSite().getPage().addPartListener(viewListener);
    le tout est au debut de le methode createPartControl d'une de mes vues qui est affiché une seul fois et qui ne peux pas etre fermé.

    J'ai legerement changé le code car sinon j'avais un probleme de show/hide +/- simultanné si je passais d'une vue de type A a une autre vue de type A.

    ça me regle au passage certain probleme de positionnement de fenetre meme si je ne sais pas pourquoi...

    Donc au stade actuelle j'ai just emon log qui se rempli a vitesse grand V de ce Warning.

    ps : je part du boulot là donc je ne pourrai repondre que demain matin si on me propose des solutions.


    Merci

Discussions similaires

  1. Associer des actions à la fermeture d'une vue
    Par JM12345 dans le forum Eclipse Platform
    Réponses: 4
    Dernier message: 05/08/2009, 15h01
  2. Réponses: 3
    Dernier message: 26/10/2007, 15h49
  3. Intercepter la fermeture d'une vue
    Par nako dans le forum Eclipse Platform
    Réponses: 7
    Dernier message: 09/10/2007, 17h07
  4. [MFC] Intercepter la fermeture d'une CPropertySheet
    Par Philippe320 dans le forum MFC
    Réponses: 10
    Dernier message: 29/09/2006, 09h14

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