Je recommande regarder quelques-uns des modèles d'interface utilisateur à ce site
Quant à votre question, je ferais la
suivant la forme montrant les noeuds mettrait en œuvre une interface INodeView
Une méthode de l'interface INodeTreeForm serait la possibilité d'ajouter un nœud individuel. Ce serait passer une classe de noeud créée dans l'objet NodeTreeScreen. Il y aura deux propriétés clés. Le premier est la clé du nœud, et le second est le type de nœud.
Vous devez ajouter le noeud de telle sorte qu'il existe un champ sur le contrôle qui a la clé.
Avec l'interface INodeTreeForm, vous disposez d'une interface INodeView. Cela couvrirait la zone de vue ou le nouveau formulaire que vous allez changer aussi.
Lorsque vous cliquez sur le nœud, il transmet la clé à NodeTreeScreen qui a tendance à regarder quel type de nœud il est. Il a une collection d'objets INodeView. L'une des propriétés de INodeView sera le type de nœud.
Vous récupérez le bon INodeView. Vous fermez le INodeview actuel, définissez le INodeView actuel à celui que vous avez récupéré, passez-le le noeud, et dites-lui de se montrer.
Vous avez le choix de ce que fera INodeView. Vous pouvez avoir un formulaire/contrôle enregistré pour chacun des différents types. Par exemple un INodeViewText, INodeViewImage, etc. Ou juste un omnibus INodeViewForm et laissez l'objet implémentant INodeView s'occuper du dessin réel. En fonction de votre boîte à outils graphique, cela peut signifier qu'un formulaire peut implémenter un grand nombre d'interfaces différentes. En ce qui concerne l'ajout, la suppression et la création de nœuds, cela se ferait par l'intermédiaire de l'interaction entre le formulaire implémentant INodeTreeForm et NodeTreeScreen. Parmi les choses que cela va faire est l'exécution des commandes que vous avez déjà créées pour modifier le modèle. En implémentant tout ce qui se trouve derrière une interface, vous pouvez changer l'implémentation sans vider le reste du logiciel. L'objet implémentant les différentes interfaces peut changer sans impact sur les autres objets tant qu'ils continuent à implémenter correctement les interfaces.
Ceci est une variante de Passive View sur le site de Martin Fowler.