2009-04-28 11 views
3

Est-il possible de créer une boîte de dialogue modale pour une vue et non l'intégralité du shell (application)? Donc, disons, j'ai une vue appelée A qui recouvre une autre vue appelée B, je veux ouvrir une boîte de dialogue qui est seulement modale pour voir A, donc quand je passerai à la vue B, le dialogue et la vue A seront couverts par vue B. Y at-il de toute façon que je peux le faire, même si ce n'est pas la pratique normale à faire?Eclipse RCP, SWT, JFace: Comment créer une boîte de dialogue modale uniquement pour une vue (pas pour tout le shell)?

Merci!

Répondre

3

Je pense que ce ne sera pas si facile à implémenter. Une possibilité est qu'au lieu d'utiliser une boîte de dialogue modale dans la vue A, vous utilisez un TabFolder. Ensuite, vous pouvez ouvrir le contenu de la boîte de dialogue dans un nouvel onglet et forcer cet onglet à rester en haut jusqu'à ce que vous le rejetiez. C'est un comportement similaire à celui dont vous avez besoin.

Cela vous permettra également de glisser-déposer quelque chose View B dans A. Voir

+0

Merci! C'était utile. Mais j'ai compris que je devrais probablement expliquer quel était mon problème réel, donc vous pourriez probablement avoir une meilleure image de celui-ci et avoir d'autres suggestions. J'ai deux vues, A et B. La seule façon de voir B est de cliquer sur une entrée dans la vue A. En effet, l'entrée de la vue B vient de l'entrée cliquée dans la vue A. Le problème est quand l'utilisateur a quitté La vue B est ouverte lors de la fermeture de l'application et la prochaine fois qu'elle est relancée, la vue B sera ouverte automatiquement (setSaveAndRestore (true)), mais coz elle n'a pas d'entrée, elle apparaît vide. – His

+0

(Désolé, je n'ai pas réalisé combien de temps était mon commentaire ci-dessus - voici la suite) Donc, ce que je voulais faire dans le cas mentionné ci-dessus était présent un dialogue (ou autre chose) et la liste des entrées possibles pour Voir B pour l'utilisateur à sélectionner. Je ne voulais pas que la boîte de dialogue bloque toute l'application, donc l'utilisateur peut décider d'ignorer la boîte de dialogue et de basculer librement vers d'autres vues. Je suppose que l'utilisation de TabFolder comme vous le suggérez fonctionnera, mais je ne suis pas sûr en termes de comment il pourrait être intégré dans la vue B sur demande (quand l'entrée n'est pas présente) parce que la vue B a ses propres widgets de contrôle. Merci. – His

1

L'idée de plan de travail de restauration est de remettre l'établi dans l'état où il était avant. Il n'a pas à restaurer tous les petits détails, mais si vous ne voulez pas laisser l'affichage vide, vous devez le restaurer dans son état d'origine. Cela signifie que la vue B doit être restaurée avec la même entrée que lors de la fermeture du plan de travail. Si la vue B et son entrée continuent à exister après que la vue A est fermée, alors la vue B et son entrée peuvent être restaurées, que la vue A existe ou non. Vous ne devriez certainement pas ouvrir des boîtes de dialogue pendant la restauration du plan de travail. Ce ne serait pas une bonne conception de l'interface utilisateur. Eclipse fournit un cadre de mémento très facile à utiliser qui peut enregistrer l'entrée d'une vue. Utilise le.

Si vous n'êtes pas familier avec les souvenirs, voir par exemple http://wiki.eclipse.org/FAQ_How_does_a_view_persist_its_state_between_sessions%3F.

Questions connexes