2010-02-26 4 views
1

Dans notre application RCP, nous avons des vues qui nécessitent un C, et d'utiliser un IAdapterFactory pour y arriver à partir d'un A et B. Le problème est que tandis que A->C est rapide, B->C est beaucoup plus lent (par exemple, une base de données ou une recherche de système de fichiers) et devrait être fait dans un travail d'interface utilisateur.IAdapterFactory pour coûteux adaptable?

Nous avons pensé à l'aide d'un CProxy ou LightweightC et demander au proxy ou un service pour le C réel dans un emploi de l'interface utilisateur, mais cette solution se sent comme il brise la destination des adaptateurs car vues seront tenus de savoir qu'ils peuvent N'accédez pas directement à un C via la fabrique d'adaptateurs.

Y a-t-il une meilleure pratique dans ce cas, ou est-ce que je suis forcé de comprendre que parfois une conversion plus coûteuse est nécessaire?

Répondre

1

Je n'utiliserais pas d'adaptateurs pour des opérations coûteuses. Dans ce scénario, je passe A ou B à la vue qui doit visualiser l'objet adapté (par exemple via SelectionService) et visualiser une opération en cours dans la vue cible, souvent avec un progressmonitor dans le coin supérieur droit de la vue qui visualisera C , planifiez l'opération d'adaptation (en tant que travail non-ui) et visualisez C. L'avantage est que votre interface utilisateur n'est pas bloquée, vous pouvez également appeler vos adaptateurs dans ce job (via Platform.getAdapterManager(). getAdapter (...)) et c'est la manière la plus transparente pour l'utilisateur à mon humble avis.

Questions connexes