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) |
APIs processxxxMouseEvent()
Há muitas APIs processxxxMouseEvent() disponíveis, mas a API principal usada para qualquer evento de mouse é processMouseEvent(). Você pode estender o restante das APIs processxxxMouseEvent() da forma que desejar. As implementações Java e .Net da API processMouseEvent() a seguir mostram como o restante das APIs processxxxMouseEvent() estão relacionadas.
O seguinte exemplo mostra a implementação Java de 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); }
O seguinte exemplo mostra a implementação .Net de 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: // Com apenas um clique, sem arrastar, concluímos (não há necessidade de processPreUpMouseEvent) if (action.GetClickCount() != 1 || action.IsDrag()) ProcessPreUpMouseEvent(action); break; case MouseActionStates.HOVER: ProcessHoverMouseEvent(action); break; } } }
Interface IMouseActionInfo
A API processMouseEvent() obtém os detalhes de MouseEvent, como EventState, coordenadas de tela e números de eventos, e usa esses detalhes para decidir qual método será gravado. O método setMethodSpecification() de IMouseActionInfo é usado para retornar um objeto MethodSpecification() como resultado da API processMouseEvent().
Classe MethodSpecification
O objeto MethodSpecification representa o método que está sendo gravado para um determinado evento. Ele é iniciado com o nome do método e o parâmetro é definido para o objeto IMouseActionInfo que está sendo transmitido a processMouseEvent(). O gravador seleciona esse método e o registra para uma determinada ação do usuário.
A seguinte amostra representa estender o processMouseEvent() em 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) // geralmente quando clicks == 1, o método é click; agora alteramos o método para doubleClick method = "doubleClick"; //método = "click"; else if (clicks == 2) // geralmente quando clicks == 2, o método é doubleClick; agora alteramos o método para click method = "click"; // método = "doubleClick"; diferente method = "nClick"; // O método a ser gravado é representado usando esta classe em RFT MethodSpecification methodSpec = MethodSpecification.proxyMethod(this, method,null); // O método para a ação do usuário é definido aqui action.setActionMethodSpecification(methodSpec); }