| 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) |
processxxxMouseEvent() API
여러 processxxxMouseEvent() API를 사용할 수 있지만 모든 마우스 이벤트에 사용되는 기본 API는 processMouseEvent()입니다. 나머지 processxxxMouseEvent() API는 사용자가 원하는 방식으로 확장할 수 있습니다. 다음 processMouseEvent() API의 Java 및 .Net 구현에서는 나머지 processxxxMouseEvent() API가 관련되어 있는 방식에 대해 설명합니다.
다음 예제에서는 Java에서 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);
}
다음 예제에서는 .Net에서 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;
}
}
}
IMouseActionInfo 인터페이스
processMouseEvent() API는 EventState, 화면 좌표 및 이벤트 수와 같은 MouseEvent 세부사항을 획득하며 이러한 세부사항을 사용하여 레코드할 메소드를 결정합니다. processMouseEvent() API의 결과로서 MethodSpecification() 오브젝트를 리턴하는 데 IMouseActionInfo의 setMethodSpecification() 메소드가 사용됩니다.
MethodSpecification 클래스
MethodSpecification 오브젝트는 특정 이벤트에 사용하도록 레코드 중인 메소드를 나타냅니다. 이 오브젝트는 메소드 이름을 사용하여 초기화되고 매개변수는 processMouseEvent()에 전달되는 중인 IMouseActionInfo 오브젝트에 설정됩니다. 레코더가 이 메소드를 선택하여 주어진 사용자 조치에 맞게 레코드합니다.
다음 샘플은 Java에서 processMouseEvent()를 확장하는 것을 나타냅니다.
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);
}