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 :

Rafraichissement d'une PartView


Sujet :

Eclipse Platform

  1. #1
    Membre du Club
    Femme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    182
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Janvier 2012
    Messages : 182
    Points : 59
    Points
    59
    Par défaut Rafraichissement d'une PartView
    Bonjour à tous,

    J'ai une PartView contenant une CheckBox. Cette CheckBox est liée à une autre View (un Editor en fait). Je ressors donc les informations de l'Editor pour les transmettre à la PartView. Lorsque l'utilisateur clique sur cette PartView la première fois, elle démarre comme il faut. Jusque-là tout va bien.

    Le problème est que j'aimerais faire en sorte que les CheckBox soient liées à l'Editor, et donc faire des rafraichissements de la PartView, pour qu'elle prenne en compte les modifications.

    En fait, je souhaiterais pouvoir relancer le "createPartControl(Composite parent)" d’une manière ou d’une autre...

    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
     public class EdComponentsView extends ViewPart {
     
       public static Composite top = null;
     
        public EdComponentsView() {
        }
     
        @Override
        public void createPartControl(Composite parent) {
     
            IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
            IEditorPart  editor = page.getActiveEditor();
            if (editor instanceof MultiPageEditorPart) {
                ((MultiPageEditorPart) editor).getSelectedPage();
            } 
            int j=0;
     
            while (editor.toString().equals(CmdHdlOpen.tableauOnglet[j])==false){
                System.out.println(editor.toString().equals(CmdHdlOpen.tableauOnglet[j]));
                System.out.println("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
                System.out.println(editor.toString());
                System.out.println(CmdHdlOpen.tableauOnglet[j]);
                System.out.println("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
            j=j+1;;
            }                        
     
              top = new Composite(parent, SWT.NONE);
            Table table = new Table(top, SWT.CHECK);
            table.setSize(204,1000);
            TableColumn colonne1 = new TableColumn(table, SWT.CENTER);
            colonne1.setText("Vertex List");
            colonne1.setWidth(204);
     
            table.setHeaderVisible(true);
            table.setLinesVisible(false); 
     
            int i=0;
            System.out.println("CONSTRUCTION");
            System.out.println(j);
            System.out.println(JungEdGraph.tableauChaine[1][1]);
     
            while(i<JungEdGraph.sizeglob){
     
                TableItem ligne = new TableItem(table,SWT.NONE);
                ligne.setText(JungEdGraph.tableauChaine[i][j]);
                i=i+1;
            }
            }
     
        @Override
        public void setFocus() {
            // TODO Auto-generated method stub
     
        }
    Avez-vous une idée de comment faire ?

    J'ai trouvé sur internet une solution pas très "propre" : fermer et réouvrir la PartView. Mais cela me renvoie une erreur à la réouverture.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
            Shell shell;
            shell = getSite().getShell();
            EdComponentsView view = ( EdComponentsView)getSite().getPage().findView("fr.eldoon.gui.view.EdComponentsView");
            getSite().getPage().hideView(view);
            shell.update();
            try {
                PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().showView("fr.eldoon.gui.view.EdComponentsView");
            } catch (PartInitException e) {
                e.printStackTrace();
            }
            }
    Sachant que la ligne d’ouverture (PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().showView("fr.eldoon.gui.view.EdComponentsView")) fonctionne bien toute seule, lorsque ma PartView n’a jamais été ouverte bien sûr.

    Dès lors que j'ouvre pour une deuxième fois ma PartView, j'ai une erreur :
    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
    ENTRY org.eclipse.ui.workbench 4 0 2012-06-26 16:42:20.200
    !MESSAGE Unable to create view ID fr.eldoon.gui.view.EdComponentsView: 50
    !STACK 0
    java.lang.ArrayIndexOutOfBoundsException: 50
        at fr.eldoon.gui.view.EdComponentsView.createPartControl(EdComponentsView.java:61)
        at org.eclipse.ui.internal.ViewReference.createPartHelper(ViewReference.java:375)
        at org.eclipse.ui.internal.ViewReference.createPart(ViewReference.java:229)
        at org.eclipse.ui.internal.WorkbenchPartReference.getPart(WorkbenchPartReference.java:595)
        at org.eclipse.ui.internal.Perspective.showView(Perspective.java:2245)
        at org.eclipse.ui.internal.WorkbenchPage.busyShowView(WorkbenchPage.java:1071)
        at org.eclipse.ui.internal.WorkbenchPage$20.run(WorkbenchPage.java:3822)
        at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
        at org.eclipse.ui.internal.WorkbenchPage.showView(WorkbenchPage.java:3819)
        at org.eclipse.ui.internal.WorkbenchPage.showView(WorkbenchPage.java:3795)
        at fr.eldoon.gui.editors.eldoonEditor.setFocus(eldoonEditor.java:151)
        at org.eclipse.ui.internal.PartPane.setFocus(PartPane.java:332)
        at org.eclipse.ui.internal.EditorPane.setFocus(EditorPane.java:127)
        at org.eclipse.ui.internal.WorkbenchPage$3.run(WorkbenchPage.java:629)
        at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
        at org.eclipse.core.runtime.Platform.run(Platform.java:888)
        at org.eclipse.ui.internal.WorkbenchPage.activatePart(WorkbenchPage.java:624)
        at org.eclipse.ui.internal.WorkbenchPage.setActivePart(WorkbenchPage.java:3533)
        at org.eclipse.ui.internal.WorkbenchPage.internalActivate(WorkbenchPage.java:617)
        at org.eclipse.ui.internal.WorkbenchPage.activate(WorkbenchPage.java:589)
        at org.eclipse.ui.internal.WorkbenchPage.busyOpenEditorBatched(WorkbenchPage.java:2875)
        at org.eclipse.ui.internal.WorkbenchPage.busyOpenEditor(WorkbenchPage.java:2768)
        at org.eclipse.ui.internal.WorkbenchPage.access$11(WorkbenchPage.java:2760)
        at org.eclipse.ui.internal.WorkbenchPage$10.run(WorkbenchPage.java:2711)
        at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
        at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2707)
        at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2691)
        at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2674)
        at fr.eldoon.gui.commands.CmdHdlOpen.execute(CmdHdlOpen.java:64)
        at org.eclipse.ui.internal.handlers.HandlerProxy.execute(HandlerProxy.java:293)
        at org.eclipse.core.commands.Command.executeWithChecks(Command.java:476)
        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:820)
        at org.eclipse.ui.menus.CommandContributionItem.access$19(CommandContributionItem.java:806)
        at org.eclipse.ui.menus.CommandContributionItem$5.handleEvent(CommandContributionItem.java:796)
        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:4066)
        at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3657)
        at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2640)
        at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2604)
        at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2438)
        at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:671)
        at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
        at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:664)
        at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
        at fr.eldoon.gui.Application.start(Application.java:20)
        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:369)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
        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:620)
        at org.eclipse.equinox.launcher.Main.basicRun(Main.java:575)
        at org.eclipse.equinox.launcher.Main.run(Main.java:1408)
        at org.eclipse.equinox.launcher.Main.main(Main.java:1384)
    Quelqu'un saurait-il m'indiquer quoi faire ?

    Merci d'avance pour votre aide.

  2. #2
    Membre du Club
    Femme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    182
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Janvier 2012
    Messages : 182
    Points : 59
    Points
    59
    Par défaut
    J'ai réussi à rafraichir cette PartView, en l'ouvrant et en la fermant. Cependant, j'arrive à le faire qu'à la création d'un nouveau fichier editor.

    Le problème vient du fait que je ne sais pas ou ouvrir ma partView lors du changement d'onglet.

    Lors d'un changement d'onglet, setFocus() du fichier java de l'editor est appelé. Si j'apelle mon rafraichissement de ma partView à ce moment la, c'est trop tôt car le nouvel onglet de l'editor n'est pas encore ouvert.

    Je voudrais donc appeler mon rafraichissement dans la méthode suivante. Le soucis c'est qu'avec le debugger, je vois que le programme a l'air de ne jamais ressortir sur un de mes fichiers et fini sur un while avec un read and dispach. (dans une classe importé)

    Y a t-il une méthode appelé après le setFocus habituellement lors du changement d'onglet?
    Sinon, comment sortir de ce while qui ne fait pas parti de mes fichiers?

Discussions similaires

  1. Comment arreter le rafraichissement d'une page avec un popup
    Par Wanty dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 11/08/2005, 14h44
  2. Rafraichissement d'une zone de texte
    Par chabs dans le forum MFC
    Réponses: 1
    Dernier message: 07/05/2005, 17h23
  3. Rafraichissement d'une fenêtre.
    Par GETah dans le forum Agents de placement/Fenêtres
    Réponses: 6
    Dernier message: 21/04/2005, 09h33
  4. Showmodal puis rafraichissement d'une table
    Par navis84 dans le forum Bases de données
    Réponses: 2
    Dernier message: 23/03/2005, 08h09
  5. [MFC] probleme de rafraichissement d'une image
    Par Vestaproman dans le forum MFC
    Réponses: 6
    Dernier message: 09/01/2004, 23h59

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