2010-11-14 10 views
0

J'ai créé un IFolder avec un espace réservé pour mes vues dans RCP sur eclipse Helios sur XP avec Java 1.6 comme ça;eclipse RCP - faire persister l'IFolder après la fermeture de la dernière vue

IFolderLayout mainFolder = layout.createFolder("mainfolder, 
      IPageLayout.LEFT, (float) 100.0, layout.getEditorArea()); 
    mainFolder.addPlaceholder("myview:*"); 

Et cela fonctionne comme prévu avec une zone grisés, qui est peuplée par la myview lors de sa création et avec des vues ultérieures. Cependant, si la dernière vue est toujours fermée, toute la zone IFolder disparaît et les vues futures sont instanciées dans le mauvais dossier/zone du plan de travail.

Je vois quelques personnes mentionner ce problème en 06, mais je ne trouve pas de solutions et je ne veux pas garder la force de réinitialiser la perspective juste quand le dernier dossier est parti.

http://dev.eclipse.org/newslists/news.eclipse.platform.rcp/msg15873.html http://www.eclipsezone.com/eclipse/forums/t53312.html#91951958

Je pense que je pourrais avoir à accrocher la méthode d'affichage à proximité de vérifier pour voir si elle est dernière vue et recréer l'IFolder. Il semble y avoir une méthode pour empêcher la fermeture de la mise en page;

layout.getViewLayout("myview").setCloseable (false); 
layout.getViewLayout("myview:*").setCloseable (false); 

mais je ne peux pas sembler obtenir que pour effectuer le dossier de l'effondrement ...

Répondre

1

Essayez ceci:

Ecraser la méthode isDurableFolder (...) dans votre WorkbenchWindowAdvisor pour qu'il ressemble à ceci:

@Override 
    public boolean isDurableFolder(String perspectiveId, String folderId) { 
     if("my.perspective".equals(perspectiveId) && "my.mainfolder".equals(folderId)) { 
       return true; 
     } 
     return super.isDurableFolder(perspectiveId, folderId); 
    } 

Remplacer my.perspective et my.mainfolder avec l'ID de votre perspective et dossier. Cela créera un ViewStack durable pour votre dossier.

FYI: Par défaut, le WorkbenchWindowAdvisor#isDurableFolder(...) renvoie false. Cela provoque PageLayout#createFolder(...) pour créer le ViewStack comme pas durable. La méthode PageLayout#createPlaceholderFolder(...) n'est pas en mesure de définir le ViewStack durable!