java - oxygen - Eclipse RCP: Comandos de acciones VS
eclipse oxygen download (3)
¿Cuáles son las diferencias entre las acciones y los comandos en el contexto de Eclipse RCP? Sé que ambos contribuyen a las entradas del menú, pero ¿cuál es mejor? ¿Y por qué?
De todos los recursos en línea que leí, no pude obtener una comprensión firme de las diferencias entre ambos. Realmente no he intentado usarlos, pero solo quería entenderlos desde el punto de vista de nivel superior.
Gracias
¿Has leído el eclipse wiki Preguntas frecuentes ¿Cuál es la diferencia entre un comando y una acción?
Probablemente ya comprenda que las Acciones y los Comandos básicamente hacen lo mismo: hacen que se ejecute un determinado fragmento de código. Se desencadenan, principalmente, de artificats dentro de la interfaz de usuario
La principal preocupación con Actions es que la manifestación y el código están almacenados en la Acción .
Aunque existe cierta separación en los Delegados de Acción, todavía están conectados a la acción subyacente. Los eventos de selección se pasan a Acciones para que puedan cambiar su estado habilitado (programáticamente) en función de la selección actual. Esto no es muy elegante. También para realizar una acción en una determinada parte del banco de trabajo, debe usar varios puntos de extensión.Los comandos prácticamente resuelven todos estos problemas. La idea básica es que el comando es solo la idea abstracta de algún código para ser ejecutado. El manejo real del código lo realizan, bueno, los manipuladores . Los manipuladores son activados por un cierto estado del banco de trabajo. Las expresiones del núcleo de la plataforma consultan este estado. Esto significa que solo necesitamos un comando de Guardar global que se comporte de manera diferente en función de qué manejador está actualmente activo.
Este artículo detalla las diferencias
Acciones :
- La interfaz de usuario y el manejo siempre están vinculados . No hay manera de que puedas separarnos
- Mientras que las Acciones pueden ser contribuidas a diferentes partes del banco de trabajo (menú emergente / barra de herramientas), todas ellas fueron puntos de extensión diferentes y así terminas duplicando el XML en múltiples lugares. Lo peor es que no todos los puntos de extensión esperan la misma configuración.
- Especificar acciones en múltiples lugares es una pesadilla de mantenimiento . Si tiene que cambiar el ícono de una acción, debe cambiar en todos los lugares.
- Otro problema con la duplicación de acciones en plugin.xml es que se crearán varias instancias de las mismas acciones en la memoria .
Los comandos implican más puntos de extensión, pero:
- El controlador se puede declarar por separado de un comando. Esto permite múltiples declaraciones de controlador para el mismo comando .
- El activo Cuando se evalúan todos los controladores y se selecciona el que devuelve verdadero para la condición más específica. Todas estas cosas se hacen sin siquiera cargar su controlador en la memoria. ¡Incluso sin cargar tu complemento !
- La definición de los parámetros tiene que ver con la devolución de un mapa de nombres para mostrar y los identificadores. El nombre se mostraría en la página de enlaces de teclas y el ID se usaría para invocar el comando cuando se presione la secuencia de teclas.
- Defina un IExecutionListener, que es simplemente un observador de la ejecución del comando, por lo que no puede vetar ni hacer ningún cambio en el evento.
Simplemente agregando a la excelente respuesta de VonC, los comandos pueden ser un poco exagerados si su aplicación es relativamente pequeña. Son relativamente más difíciles de configurar, y brillan más cuando tienes múltiples perspectivas, editores y vistas.
Por algo simple, iría con acciones.
Y recuerde que Action puede estar en desuso en la versión posterior de Eclipse. Te sugiero que uses Command desde el principio.