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