Databind et de valider un TableViewer?
- Je utiliser le org.eclipse.core.databinding
cadre de lier certains Text
champs dans une SWT application. - Je ajouter une stratégie de mise à jour pour valider les données et de définir la valeur sur le modèle uniquement lorsque l'utilisateur clique sur le bouton enregistrer:
UpdateValueStrategy toModel = new UpdateValueStrategy(UpdateValueStrategy.POLICY_CONVERT);
if (validator != null) {
toModel.setAfterGetValidator(validator);
}
UpdateValueStrategy fromModel = new UpdateValueStrategy(UpdateValueStrategy.POLICY_UPDATE);
binding = bindingContext.bindValue(SWTObservables.observeText(this, SWT.Modify),
BeansObservables.observeValue(pVO, propertyName), toModel, fromModel);
Ce bout de code fonctionne vraiment bien.
Mais comment puis-je faire la même chose sur un TableViewer
?
Je veux qu'il fonctionne de sorte que lorsque je ajouter quelque chose dans l'IHM, le modèle de rester inchangés jusqu'à ce que j'appelle getBindingContext().updateModels();
OriginalL'auteur flumins | 2010-07-29
Vous devez vous connecter pour publier un commentaire.
Vous n'avez pas besoin d'utiliser le JFace de liaison de données dans le Cadre
TableViewer
. La Manipulation des données structurées est plus simple SWT contrôles, telsTableViewer
,ListViewer
etTreeViewer
. Vous pouvez utiliser ces spectateur de la même manière:Après la visionneuse créé, il suffit d'invoquer
viewer.setInput(data)
de mettre toutes les choses à votre spectateur.Il y a une liste de modèle:
La magie qui se passe dans le fournisseur de contenu:
Chaque modèle devient un
TableItem
et le modèle dans leTableItem(item.getData())
.Toutefois, une table composée de plusieurs colonnes, vous avez besoin de la
LabelProvider
pour vous aider à la cartographie de la propriété de modèle à laTableItem
:La multiplication des modèles de la visionneuse est facile. Si vous allez propager spectateur à la bindings modèle, à l'aide de la
CellEditor
est simple ainsi.Pour utiliser
CellEditor
, vous devez définir les propriétés de la colonne, cellule des éditeurs et des cellules modificateur deTableViewer
:La CellModifier aime ceci:
Tout est simple, mais il y a beaucoup d'étapes à faire tous ensemble.
Merci beaucoup pour ce code. Vraiment utile !
...mais pourquoi voudriez-vous donner sur la liaison de données et revenir à écrire beaucoup de code réutilisable?
Petit commentaire:
tableViewer.setColumnProperties(COLUMNS_PROPERTIES);
signifie que dansCOLUMN_PROPERTIES
vous devez donner tous les noms de colonnes ou de l'utilisationCOLUMN_NAMES
à la place.OriginalL'auteur qrtt1
Utilisation ViewerSupport:
OriginalL'auteur qualidafial
je suis d'accord avec qualidafial.
Snippet017TableViewerWithDerivedColumns
de lajface.databinding
des extraits est un exemple complet de ce.OriginalL'auteur Quincy