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 がどのように関連しているかを説明しています。
以下の例は、processMouseEvent() の Java 実装を示しています。
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); }
以下の例は、processMouseEvent() の .Net 実装を示しています。
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 は MouseEvent の詳細、例えば EventState、画面座標、イベントの数などを取得し、それらの詳細に基づいてどのメソッドを記録するかを決定します。 IMouseActionInfo の setMethodSpecification() メソッドは、processMouseEvent() API の結果として MethodSpecification() オブジェクトを戻すために使用されます。
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); }