チェックしたいすべてのウィジェットがすでにわかっている場合の別のアプローチは、DOM.isOrHasChild(Element) または Element.isOrHasChild(Node) を使用することです。
例えば:
public void onClick(ClickEvent event) {
Element targetElem = Element.as(event.getNativeEvent().getEventTarget());
Widget targetWidget = null;
if (widgetA.getElement().isOrHasChild(targetElem) {
targetWidget = widgetA;
}
else if (widgetB.getElement().isOrHasChild(targetElem) {
targetWidget = widgetA;
}
.....
if (targetWidget != null) {
// You found you widget - Yay!
}
else {
// No widget found - Bummer!
}
}
このアプローチは、テスト対象のウィジェットが事前にわかっている場合にのみ機能します。利点は、追加のチェックを行う必要がある可能性のある「一部の」ウィジェットへの一般的な参照ではなく、特定のウィジェット参照があることです。
たとえば、widgetA が MySpecialTextBox という TextBox のサブクラスである場合、次のようにすることができます。
MySpecialTextBox widgetA;
if (widgetA.getElement().isOrHasChild(targetElem) {
widgetA.someSpecialMethod();
}