litesoft
@ 947
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
// This Source Code is in the Public Domain per: http://unlicense.org package org.litesoft.GWT.client.ui.inspection; import org.litesoft.GWT.client.*; import org.litesoft.GWT.client.widgets.*; import org.litesoft.GWT.client.widgets.nonpublic.*; import com.google.gwt.user.client.ui.*; public class WidgetFinder { private WidgetSelector mSelector; private WidgetFinder( WidgetSelector pSelector ) { mSelector = pSelector; } /** * @throws ClassCastException if the returned object is incompatible with <code>T</code> */ @SuppressWarnings("unchecked") public static <T extends Widget> T findRequired( Object pWhat, WidgetSelector pSelector ) { T zWidget = (T) find( pSelector ); if ( zWidget == null ) { AlertManager.alert( "WidgetFinder", "Not Found", "No Widget Found for: \n" + pWhat ); } return zWidget; } public static Widget find( WidgetSelector pSelector ) { return (pSelector != null) ? new WidgetFinder( pSelector ).check( RootPanel.get(), WindowSizingPanel.get() ) : null; } private Widget check( Widget pWidget1, Widget pWidget2 ) { Widget zWidget = check( pWidget1 ); return (zWidget != null) ? zWidget : check( pWidget2 ); } private Widget check( Widget pWidget ) { if ( pWidget != null ) { if ( mSelector.isAcceptable( pWidget ) ) { return pWidget; } if ( pWidget instanceof HasWidgets ) { for ( Widget zWidget : (HasWidgets) pWidget ) { if ( null != (zWidget = check( zWidget )) ) { return zWidget; } } } else if ( pWidget instanceof WidgetCompositor ) { for ( Widget zWidget : ((WidgetCompositor) pWidget).getCompositedWidgets() ) { if ( null != (zWidget = check( zWidget )) ) { return zWidget; } } } } return null; } } |