Next: La clase Place
Up: Diseño e implantación
Previous: La clase Element
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: La clase Place
Up: Diseño e implantación
Previous: La clase Element
Amilcar Meneses
2002-11-08