french english

RSS 1.0 
 
 Login 
 Password 
 Créer un compte 
 
02-10-08 / 23:07 : Cappuccino : TableView / datasource / pagination (cjed)
Parmi les sous-classes de CPView actuellement disponibles dans Cappuccino on trouve : CPClipView, CPCollectionView, CPControl, CPFlashView (!), CPProgressIndicator, CPScrollView, CPShadowView, CPTabView, NSCustomView, NSView, _CPWindowView. Il n'y a pas encore l'équivalent de NSTableView, NSOutlineView ou NSBrowser, mais l'équipe en charge de Cappuccino travaille à l'implémentation d'une CPTableView :
"The CPTableView is still under development, it's already in the repository if you want to have a look. After this is finished i think the cappuccino team or someone else will pickup the work on CPBrowser."

Il semblerait que la tache ne soit pas aisée du fait de la complexité de ces composants :
"CPTableView : needs all of NSTableView and supporting classes. We’re not going to be using NSCell’s though, so we’ll also need to make some decisions on exactly what to do here, at least when straight up NSView replacement isn’t enough."
On peut cependant se montrer confiants puisque l'équipe a déjà réussi à produire près de 20 000 lignes de code (AppKit et FoundationKit de Cappuccino).
En attendant il est conseillé d'utiliser une CPCollectionView (et CPCollectionViewItem), mais on ne dispose alors pas de header pour les colonnes et il n'est pas possible de les réarranger (déplacer et redimensionner).

Une fois ces composants d'affichage hiérarchique disponibles, leur prise en compte pourra être ajoutée dans Nib2Nic, avec la différence qu'ils n'utiliseront apparemment pas de classe pour les cellules (Cell).

Pour les applications d'entreprise on utilise habituellement un composant de type table paginée, afin de limiter la taille des données lues (à la manière d'un curseur). En Cocoa les TableView sont inclues dans une ScrollView, et seules les lignes visibles pour une position donnée dans la table (position de l'ascenseur vertical) sont chargées (demandées à l'objet delegate de type datasource). Ainsi lorsqu'on scrolle, la datasource se voit demander les éléments additionnels, mais l'ensemble de la table n'est jamais chargé d'un seul coup (sauf si le nombre de lignes total est inférieur ou égal à la hauteur de la zone visible).
Cocoa gère en fait la répartition sur plusieurs pages au moment de l'impression.

Lorsque l'implémentation CPTableView sera disponible dans Cappuccino, il suffira dans la méhode - (id)tableView:(CPTableView *)aTableView objectValueForTableColumn:(CPTableColumn *)aTableColumn row:(int)rowIndex de l'objet datasource d'effectuer une requête JSONP vers le serveur, afin de récupérer les données de la ligne demandée (accès en mode curseur). On pourra vouloir implémenter un système de cache pour ne pas avoir à effectuer une requête par ligne à afficher, mais dans ce cas le modèle TableView avec vue scrollable ne conviendra plus, il faudra implémenter une vue paginable (appelera une méthode de type tableView: objectsArrayForTableColumn: page: sur la datasource).
Si on veut gérer le tri des colonnes (pris en compte dans Cocoa) on ne pourra plus considérer séparément les colonnes, et la méthode delegate devra donc renvoyer une matrice de valeurs pour la page courante (sera de type tableView: objectsMatrix: forPage: sortingColumn: ascendingOrder:).
Commentaires
Poster un commentaire 
  
    
  image de securisation du formulaire


  
      (sera ajouté après validation)