Étant nouveau dans le domaine de la conception, j’ai besoin de votre aide pour la modélisation de mon projet. Donc, je dois modéliser un composant d’interface pour l’utiliser dans d’autres projets de développement …
Voici plus de détails sur le travail que je dois réaliser:

Composant Grid

Un tableau (grille) offrant plus de flexibilité.

Spécifications
1. Un tableau (grille) dont chaque cellule peut contenir un composant de l’un des types suivants :
a. Image
b. Checkbox
c. Bouton radio
d. Textbox (ce qui ajoute la possibilité de saisir)
e. Textarea (ce qui ajoute la possibilité de saisir)
f. Texte (libellé)
g. Bouton
h. URL
i. …

2. Les largeurs et hauteurs des cellules doivent pouvoir être manipulées par programmation
3. L’utilisateur doit pouvoir modifier la largeur des cellules avec la souris, ceci dans le but de permettre à l’utilisateur de modifier le visuel
4. Permettre de trier les colonnes. Les colonnes peuvent être triées ou non. Les accents doivent être pris en charge. Une option de tri client/serveur devra être offerte au programmeur.
5. Y ajouter une recherche, en entête. Les colonnes dans lesquelles la recherche sera possible apparaîtront dans une liste de critères. L’utilisateur aura le loisir d’inclure et d’exclure des critères à l’aide d’une grammaire du genre google. Il sera possible de choisir des plages de valeur («valeur entre X et Y ). La saisie d’un critère de recherche devra se faire en Ajax pour compléter les mots dans le cas de champs qui proviennent de la base de données. Des critères de recherche « custom » pourront être sauvegardés (très utile !).
6. Un « pager » pour naviguer dans de multiples pages sera offert en option. Il devra contenir les bouton premier, dernier, avance rapide, recul rapide, avance de un, recule de un, et un « goto no. de page ». L’avance et le recul rapides seront optionnels. L’avance rapide devra être paramétrable.
7. Les entêtes ne devront pas « scroller ». Les scrolls horizontal et vertical devront être paramétrables.
8. Les colonnes devront pouvoir s’ajuster (en largeur) soit au contenu, soit au libellé de la colonne, ou fixées par programmation.
9. Les colonnes devront pouvoir se regrouper (en arbre).
10. L’affichage des colonnes (quelle colonne est visible ou non) devra pouvoir être modifié par l’utilisateur.
11. La customisation d’une grille doit pouvoir être sauvegardée pour usage futur.
12. À la programmation, le développeur doit pouvoir obtenir des événements lors d’un changement de valeur d’une cellule.
13. Les lignes du tableau peuvent être sélectionnées et cette sélection doit être rendue disponible (multi-sélection optionnelle).


Si quelqu’un pouvait m’aider, je lui en serais très reconnaissant. Le but n’est évidemment pas de faire ce travail à ma place, mais d’essayer de me faire comprendre comment je peux modéliser ce composant et quels design patterns a utilisé?

Merci d’avance!