Java | .Net |
---|---|
void processMouseEvent(IMouseActionInfo action) | void ProcessMouseEvent(IMouseActionInfo action) |
void processSingleMouseEvent(IMouseActionInfo action) | void ProcessPreDownMouseEvent(IMouseActionInfo action) |
void processHoverMouseEvent(IMouseActionInfo action) | void ProcessPreUpMouseEvent(IMouseActionInfo action) |
void ProcessHoverMouseEvent(IMouseActionInfo action) |
API processxxxMouseEvent()
Sono disponibili diverse API processxxxMouseEvent(), ma l'API principale che viene utilizzata per un evento mouse è processMouseEvent(). È possibile estendere il resto delle API processxxxMouseEvent() nel modo desiderato. Le seguenti implementazioni Java e .Net dell'API processMouseEvent() spiegano come sono correlate il resto delle API processxxxMouseEvent().
L'esempio seguente mostra l'implementazione Java di processMouseEvent():
public void processMouseEvent(IMouseActionInfo action) { int eventState = action.getEventState(); if ( eventState == IMouseActionInfo.PRE_DOWN || eventState == IMouseActionInfo.PRE_UP || eventState == IMouseActionInfo.POST_UP ) processSingleMouseEvent(action); else if ( eventState == IMouseActionInfo.HOVER ) processHoverMouseEvent(action); }
L'esempio seguente mostra l'implementazione .Net di processMouseEvent():
public override void ProcessMouseEvent(IMouseActionInfo action) { switch (action.GetEventState()) { case MouseActionStates.PRE_DOWN: if (action.GetClickCount() == 1) ProcessPreDownMouseEvent(action); break; case MouseActionStates.PRE_UP: // if one click, and it's not a drag, then, we're Done(no need to processPreUpMouseEvent) if (action.GetClickCount() != 1 || action.IsDrag()) ProcessPreUpMouseEvent(action); break; case MouseActionStates.HOVER: ProcessHoverMouseEvent(action); break; } } }
Interfaccia IMouseActionInfo
L'API processMouseEvent() ottiene i dettagli MouseEvent, come EventState, coordinate dello schermo, numero di eventi, e li utilizza per decidere il metodo registrato. Il metodo setMethodSpecification() di IMouseActionInfo viene utilizzato per restituire un oggetto MethodSpecification() come risultato dell'API processMouseEvent().
Classe MethodSpecification
L'oggetto MethodSpecification rappresenta il metodo che viene registrato per un determinato evento. È inizializzato con il nome del metodo e il parametro è impostato sull'oggetto IMouseActionInfo passato a processMouseEvent(). Il registratore assume questo metodo e registra una determinata azione utente.
L'esempio seguente rappresenta l'estensione di processMouseEvent() in Java:
import com.rational.test.ft.domain.IMouseActionInfo; import com.rational.test.ft.sys.MethodSpecification; . . public void processSingleMouseEvent(IMouseActionInfo action) { String method = null; int clicks = action.getClickCount(); if (clicks == 1) // usually when clicks == 1, the method is click, now we've changed to method to doubleClick method = "doubleClick"; //method = "click"; else if (clicks == 2) // usually when clicks == 2, the method is doubleClick, now we've changed to method to click method = "click"; // method = "doubleClick"; else method = "nClick"; // The method to be recorded is represented using this class in RFT MethodSpecification methodSpec = MethodSpecification.proxyMethod(this, method,null); // The method for the user action is set here action.setActionMethodSpecification(methodSpec); }