Question

Quelles sont les différences entre les actions et les commandes dans le contexte d'Eclipse RCP? Je sais qu'ils contribuent tous deux aux entrées de menu, mais qui est le meilleur? Et pourquoi?

De toutes les ressources en ligne que je lis, je ne pouvais pas obtenir une bonne compréhension des différences entre les deux. Je ne l'ai pas vraiment essayé de les utiliser, mais je voulais juste les comprendre pour commencer à partir du point de vue de niveau supérieur.

Merci

Était-ce utile?

La solution

Avez-vous lu l'éclipse wiki FAQ Quelle est la différence entre une commande et une action?

  

Vous avez probablement déjà compris que les actions et les commandes font essentiellement la même chose: Ils provoquent un certain morceau de code à exécuter. Ils sont déclenchés, principalement, de artificats au sein de l'interface utilisateur

     

La principale préoccupation Actions est que la manifestation et le code est tous stockés dans l'action .
  Bien qu'il y ait une certaine séparation en action Les délégués, ils sont toujours liés à l'action sous-jacente. les événements de sélection sont passés à des actions afin qu'ils puissent changer leur état activé (programmation) en fonction de la sélection actuelle. Ce n'est pas très élégant. En outre de placer une action sur une certaine partie du plan de travail, vous devez utiliser plusieurs points d'extension.

     

Commandes assez bien résoudre tous ces problèmes. L'idée de base est que La commande est juste l'idée abstraite d'un certain code à exécuter. La gestion effective du code se fait par, eh bien, les gestionnaires . Handlers sont activés par un certain état de l'établi. Cet état est interrogé par les expressions de base de la plate-forme. Cela signifie que nous avons seulement besoin d'une commande globale qui se comporte différemment Save basé sur quel gestionnaire est actuellement actif.

propriétés d'une commande

article détaille les différences

Actions :

  • L'interface utilisateur et la manipulation sont toujours à égalité . Il n'y a aucun moyen que vous pouvez séparer les uns des autres
  • Si les actions peuvent être contribué à différentes parties de la table de travail (menu contextuel / barre d'outils), tous étaient différents points d'extension et si vous finissez par dupliquer le XML à plusieurs endroits. Le pire est que tous les points d'extension attendent la même configuration.
  • Spécification des actions dans plusieurs endroits est un cauchemar d'entretien . Si vous devez changer l'icône d'une action, vous devez changer dans tous les lieux.
  • Un autre problème avec la duplication Actions en plugin.xml est que plusieurs instances des mêmes actions sera créé dans la mémoire .

Les commandes impliquent plus de points d'extension, mais:

  • gestionnaire peut être déclarée séparément d'une commande. Cela permet de plusieurs déclarations de gestionnaire pour la même commande .
  • activeWhen pour tous les gestionnaires sont évalués et celui qui retourne vrai pour la condition la plus spécifique est sélectionné. Toutes ces choses sont fait sans charger même votre gestionnaire dans la mémoire. Même sans charger votre plugin !
  • La définition des paramètres est tout au sujet de retourner une carte des noms d'affichage et les ids. Le nom sera affiché dans la page clé de liaisons et l'identifiant sera utilisé pour appeler la commande lorsque la séquence touche.
  • Définir un IExecutionListener, qui est simplement un observateur de l'exécution de la commande de sorte qu'il ne peut ni veto sur elle, ni apporter des modifications à l'événement

Autres conseils

Il suffit d'ajouter à l'excellente réponse de VonC, les commandes pourraient être un peu exagéré si votre demande est relativement faible. Ils sont relativement plus difficiles à installer, et ils brillent le plus quand vous avez plusieurs points de vue, des éditeurs et des vues.

Pour quelque chose de simple, je voudrais aller avec des actions.

Et rappelez-vous que l'action peut être dépréciée sur la version ultérieure d'Eclipse. Je vous suggère d'utiliser la commande depuis le début.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top