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