12/12/2007 13:27 El Bruno

[DSL] Como agregar un menu personalizado (2da parte)

Buenas

hace un tiempo escribí unas pocas líneas en un post, donde explicaba como agregar un menú personalizado a un proyecto de Domain Specific Language Tools. Una característica añadida a esta funcionalidad puede consistir en mostrar el elemento del menú contextual, dependiendo del tipo de elemento seleccionado.

Si partimos del ejemplo del post anterior y definimos que solamente necesitamos activar nuestro menu "Display Information" cuando el tipo de elemento seleccionado sea un UserShape, debemos modificar la implementación de la función OnPopUpMenuDisplayAction y agregar una validación dentro de la misma, por ejemplo:

1 internal void OnPopUpMenuDisplayAction(object sender, EventArgs e) 2 { 3 MenuCommand command = sender as MenuCommand; 4 5 // The popmenu command is by default disabled 6 command.Visible = false; 7 command.Enabled = false; 8 9 foreach (object selectedObject in this.CurrentSelection) 10 { 11 // validate if the selected element is a User Shape 12 if (selectedObject is ElBruno.Dsl15.UserShape) 13 { 14 command.Visible = true; 15 command.Enabled = true; 16 break; 17 } 18 } 19 }

Como se ve en la rutina de código, entre las líneas 9 y 18, verificamos el tipo de objeto seleccionado y a partir de esta verificación habilitamos el comando para que se accesible.

De esta forma, cuando seleccionemos cualquier tipo de elemento dentro de nuestro diagrama y despleguemos el menú contextual veremos que la opcion "Display Information" está deshabilitada

 

Si en cambio seleccionamos un elemento del tipo User y desplegamos el menú contextual veremos que podremos acceder a la misma y hacer click sobre el elemento del menú

 

El ejemplo se puede descargar desde http://geeks.ms/files/folders/elbruno/entry56705.aspx (thanks Geeks !!!)

 

Saludos @ La Finca

El Bruno

Crossposting from ElBruno.com
Comparte este post: