next up previous contents
Next: La clase Place Up: Diseño e implantación Previous: La clase Element

La clase Figure

Esta es una clase genérica, y sirve de base para crear las clases de los objetos gráficos Place, Transition y Connection. Esta clase tiene implantados los mecanismos principales para manejar la parte gráfica y atender a los eventos de ratón del usuario. Esta clase copia algunas características de los objetos View, como son el manejo de un frame, para manejar su posición y tamaño respecto al view donde se dibuja, y un bounds, para establecer su propio origen de coordenadas y tamaño. Sin embargo, esta clase tiene la gran diferencia con los objetos View en que no estan agrupados en una gerarquía View, lo que permite que si hay dos o más objetos encimados en el despliegue puedan decidir entre ellos cual es el objeto que recibe un evento de ratón.

La clase Figure mantiene una estrecha relación con el objeto View donde se despliega.

Las variables y métodos instancia de esta clase más importantes son:

@interface Figure  : NSObject <NSCoding>
{
    NSRect 	  bounds;
    NSRect 	  frame;
    id 		  superView;
    NSPoint       old;
    BOOL	  selected;
}
... 
- (NSImage *)drawFigure;
- (BOOL)canResponseToEvent:(NSEvent *)theEvent;
- (void)mouseDown:(NSEvent *)theEvent;
- (void)mouseUp:(NSEvent *)theEvent;
- (void)mouseDragged:(NSEvent *)theEvent;
- (tGraph)typeGraph;
...
@end
Las variables bounds y frame se utilizan para definir las dimensiones y origen respecto relativo y absoluto respectivamente. La variable superView hace referencia al objeto PNView donde se desplegará el objeto. La variable old se utiliza como auxiliar para desplazar la figura (actualizando los valores de la estructura frame) en los métodos que atienden los eventos del usuario. La variable selected se utiliza para determinar si la figura se encuentra seleccionada o no.

Los métodos se ejecutan como se describe a continuación:

drawFigure
Este método no está implantado en esta clase, cada subclase lo debe implantar. Este método es parte de un protocolo que tienen los objetos de esta familia de clases y que utilizan los objetos PNView para desplegar a los objetos gráficos de la red de Petri.

canResponseToEvent
Se verifica que el punto donde se realizó el evento del ratón esté en el frame de la figura, si está en esta área, se regresa un valor verdadero, y falso en caso contrario.

mouseDown
Este método almacena en la variable old el punto donde se realizó el evento de usuario en el sistema de coordenadas del objeto PNView.

mouseUp
Este método limpia el valor de la variable old para poder utilizarse en otro mensaje mouseDown

mouseDragged
Este método actualiza la posición actual del objeto gráfico en su superview, es decir, modifica el origen de la variable frame.

typeGraph
Este método regresa si la figura es una transición, lugar y arco.


next up previous contents
Next: La clase Place Up: Diseño e implantación Previous: La clase Element
Amilcar Meneses
2002-11-08