| 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);
}