2010-08-09 5 views
1

J'essaie de lier un TableViewer à unComment lier un TableViewer à un java.util.List dans Eclipse RCP

models = List<ModelObject> 

, mais je ne vraiment pas obtenir le coup de lui. La liaison doit être possible via master-detail et un contexte de liaison de données (DataBindingContext), de sorte que je puisse écrire les changements de la liste (et de ses éléments) sur le modèle uniquement sur demande (dbc étant défini sur POLICY_ON_REQUEST), dans une action d'enregistrement d'un éditeur. Avec des champs de texte simples cela fonctionne comme un charme, mais je ne trouve pas d'exemple similaire pour TableViewers. Quand je regarde l'API par exemple de ViewerSupport, alors je ne peux que la lier, mais sans la possibilité de donner un DBC ou un master-detail. Cela fonctionne:

ViewerSupport.bind(aViewer, new WritableList(models, ModelObject.class), BeanProperties.value(ModelObject.class, "name"))); 

Mais comme indiqué, il ne permet pas d'utiliser un dbc ni un maître-détail.

Existe-t-il une solution à cela, ou est-ce que TableViewer ne prend pas en charge la liaison de données car j'ai l'intention de l'utiliser? Existe-t-il une solution de contournement ou une API manquée?

Merci d'avance!

Répondre

0

Maintenant que je regardais un peu plus loin, je compris comment utiliser maître-détail:

tmp = BeansObservables.observeDetailList(masterObservable, 
          "name", ModelObject.class) 
ViewerSupport.bind(aViewer, tmp, BeanProperties.value(ModelObject.class, "name"))); 

La question reste, comment faire les changements dans la liste et les éléments de la liste ne persistant pas directement (à savoir POLICY_ON_REQUEST), afin que je puisse les sauvegarder à la demande de l'utilisateur. Plus précisément: Comment injecter un DataBindingContext quelque part ...

+0

Je viens de remarquer que vous devez vous assurer que vous mettez à jour vos données sur l'entrée. Ceci est généralement tmp, si vous utilisez ViewerSupport # bind pour lier les colonnes ou vous pouvez simplement l'obtenir de la visionneuse. – Geniedesalpages

Questions connexes