Para obtener el halo de construcción de una morfología interior, simplemente haz clic-central varias veces para «profundizar» en la jerarquía de submorphs.
Figura 6.6: Clic-central para controles de construcción
Figura 6.7: Click-central de nuevo para descender en los submorphs
Hay un control naranja a la derecha, justo debajo del control verde
Duplicate. Haga clic-izquierdo del ratón para acceder al
menú Debug. Utilice este menú para obtener un inspector
para el rectángulo.
Observa la Figura 6.8, a la izquierda tenemos un panel para self, todas las variables de instancia y las variables de instancia individuales. Al hacer clic para seleccionar «all inst vars» y el panel de valores de la derecha, se muestra que el propietario del rectángulo es la elipse y que por ahora no tiene submorphs.
El panel inferior es un editor de código Smalltalk, básicamente un
espacio de trabajo, donde self está vinculado al objeto que
estamos inspeccionando.
Por cierto, los inspectores trabajan con todos los objetos, no solo con los morphs.
Figura 6.8: Añadir comportamiento específico de la instancia
Para añadir un comportamiento a todas las instancias de una clase,
creamos un método de instancia. Aquí vamos a crear un comportamiento
para «solo esta instancia BoxedMorph».
Además de las variables de instancia, un morph puede tener cualquier número de propiedades con nombre que pueden ser diferentes para cada morph.
Añadimos aquí dos propiedades:
self setProperty: #handlesMouseDown: toValue: true. self setProperty: #mouseButton1Up:localPosition: toValue: [:ignoredEvent :ignoredPosition| self color: Color random]
Ejemplo 6.1: Modificar el comportamiento de este morph desde su Inspector
Estas propiedades son específicas de la interfaz de usuario. Puede
encontrar métodos con estos nombres en la clase Morph para
ver qué hacen.
Después de seleccionar el texto y Do-it, cada vez que
hagas clic-izquierdo del ratón sobre el rectángulo, ¡cambiará
de color!
Ten en cuenta que ya no puedes mover la elipse haciendo clic con el ratón sobre el rectángulo, porque ahora el rectángulo capta el evento del ratón. Tienes que hacer clic con el ratón sobre la elipse. Más información al respecto a continuación.
Una nota rápida sobre Move frente a Pick
up. Move mueve un submorph «dentro» de su padre. Pick
up saca un morph «fuera» de su padre.
Figura 6.9: Mover un submorph dentro de su padre
Figura 6.10: Sacar un submorph de su padre
Antes de continuar, utilicemos un inspector en la elipse para cambiar los valores de un par de sus variables de instancia.
Figura 6.11: Inspeccionar variables de instancia de la elipse
Observa Figura 6.12 y Ejemplo 6.2. En el
panel inferior del inspector, se puede ejecutar código en el contexto
del objeto inspeccionado. self hace referencia a la
instancia. Aquí, el panel contiene código para establecer el
borderWidth y el borderColor.
self borderWidth: 10. self borderColor: Color blue
Ejemplo 6.2: Modificar el estado de esta elipse desde su Inspector
Figura 6.12: Utilizar el Inspector para establecer el color y el ancho del borde
En el caso típico, se desea refinar o cambiar los comportamientos de todas las instancias de una clase.