Pregunta

¿Cuáles son las diferencias entre acciones y comandos en el contexto de Eclipse RCP? Sé que ambos contribuyen a las entradas de menú, pero ¿cuál es mejor? Y por qué?

De todos los recursos en línea que he leído, no pude conseguir un firme entendimiento de las diferencias entre ambos. En realidad no he tratado de usarlos, pero sólo quería entenderlos para empezar de mayor punto de vista nivel.

Gracias

¿Fue útil?

Solución

¿Ha leído el wiki ¿Cuál es la diferencia entre una orden y una acción?

  

Es probable que ya entiende que las acciones y los comandos básicamente hacen lo mismo: Causan una determinada pieza de código que se ejecuta. Ellos son provocados, principalmente, a partir artificats dentro de la interfaz de usuario

     

La principal preocupación con Acciones es que el manifestación y el código se almacenan en la acción .
  Aunque hay una cierta separación en delegados de acción, todavía están conectados a la acción subyacente. eventos de selección se pasan a acciones para que puedan cambiar su estado activado (programación) en base a la selección actual. Esto no es muy elegante. También colocar una acción en una parte determinada mesa de trabajo tiene que utilizar varios puntos de extensión.

     

Comandos más o menos resolver todos estos problemas. La idea básica es que el comando es sólo la idea abstracta de un poco de código a ser ejecutado. El manejo actual del código se realiza por, bueno, manipuladores . Los manipuladores son activados por un cierto estado de la mesa de trabajo. Este estado se consulta por las expresiones fundamentales de la plataforma. Esto significa que sólo necesitamos un comando Guardar mundial que se comporta de manera diferente en base al cual manejador esta actualmente activo.

propiedades de un comando

href="http://blog.eclipse-tips.com/2009/01/commands-part-1-actions-vs-commands.html" artículo detalles de las diferencias

Acciones

  • interfaz de usuario y la manipulación siempre están atados . No hay ninguna manera se puede separar entre sí
  • Si bien las acciones pueden ser aportados a diferentes partes de la mesa de trabajo (menú emergente / barra de herramientas), todos ellos eran diferentes puntos de extensión y lo que terminan duplicando el XML en múltiples lugares. Lo peor de todo es que no todos los puntos de extensión esperan la misma configuración.
  • Especificación de acciones en múltiples lugares es un mantenimiento pesadilla . Si usted tiene que cambiar el icono de una acción, es necesario cambiar en todos los lugares.
  • Otro problema con la duplicación de acciones en plugin.xml es que instancia múltiple de los mismos acciones se creará en la memoria .

Comandos implican más puntos de extensión, pero:

  • Handler puede declararse por separado de un comando. Esto permite, por múltiples declaraciones controlador para el mismo comando .
  • La activeWhen para todos los controladores son evaluados y la que devuelve verdadero para se selecciona la condición más específica. Todas estas cosas son hecho sin ni siquiera cargar el controlador en la memoria. Incluso sin cargar el plugin !
  • Definición de los parámetros se trata de devolver un mapa de nombres de visualización y los identificadores. El nombre se mostrará en la página de enlaces de clave y el ID se utiliza para invocar el comando cuando se pulsa la secuencia de teclas.
  • Definir una IExecutionListener, que no es más que un observador de la ejecución de comandos por lo que no puede ni veto en él ni realizar ningún cambio en el evento

Otros consejos

Simplemente añadiendo a la excelente respuesta de VonC, los comandos podrían ser un poco exagerado si su aplicación es relativamente pequeña. Son relativamente más difícil de configurar, y brillan más cuando tiene múltiples perspectivas, editores y puntos de vista.

Para algo simple, me gustaría ir con acciones.

Y recuerda que la acción puede ser obsoleta en la versión posterior de Eclipse. Yo sugeriría que utilizar el comando desde el principio.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top