14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 package org.jemmy.lookup; 26 27 import org.jemmy.Rectangle; 28 29 /** 30 * Lookup that matches all the controls with the bounds that lay inside 31 * the given rectangle. The way to determine bounds of any control is 32 * implemented by the child class in @{@linkplain #getBounds(java.lang.Object)} 33 * method. 34 * @param <CONTROL> 35 * @author shura 36 */ 37 public abstract class CoordinateLookup<CONTROL> implements LookupCriteria<CONTROL>{ 38 39 private Rectangle area; 40 41 /** 42 * 43 * @param area Rectangle area to lookup up for controls that reside inside it 44 */ 45 public CoordinateLookup(Rectangle area) { 46 this.area = area; 47 } 48 49 /** 50 * 51 * @return Rectangle area to lookup up for controls that reside inside it 52 */ 53 protected Rectangle getArea() { 54 return area; 55 } 56 57 /** 58 * 59 * @param control 60 * @return logical bounds for the control that has to be inside the given 61 * rectangle to match the lookup 62 */ 63 protected abstract Rectangle getBounds(CONTROL control); 64 65 public boolean check(CONTROL control) { 66 Rectangle a = getArea(); 67 Rectangle bounds = getBounds(control); 68 return bounds.x >= a.x && bounds.y >= a.y && 69 (bounds.x + bounds.width) <= (a.x + a.width) && 70 (bounds.y + bounds.height) <= (a.y + a.height); 71 } 72 73 @Override 74 public String toString() { 75 return "CoordinateLookup[area=" + area + "]"; 76 } 77 } | 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 package org.jemmy.lookup; 26 27 import org.jemmy.Rectangle; 28 29 /** 30 * Lookup that matches all the controls with the bounds that lay inside 31 * the given rectangle. The way to determine bounds of any control is 32 * implemented by the child class in @{@linkplain #getBounds(java.lang.Object)} 33 * method. 34 * 35 * @author shura 36 */ 37 public abstract class CoordinateLookup<CONTROL> implements LookupCriteria<CONTROL>{ 38 39 private Rectangle area; 40 41 /** 42 * 43 * @param area Rectangle area to lookup up for controls that reside inside it 44 */ 45 public CoordinateLookup(Rectangle area) { 46 this.area = area; 47 } 48 49 /** 50 * 51 * @return Rectangle area to lookup up for controls that reside inside it 52 */ 53 protected Rectangle getArea() { 54 return area; 55 } 56 57 /** 58 * 59 * @param control todo document 60 * @return logical bounds for the control that has to be inside the given 61 * rectangle to match the lookup 62 */ 63 protected abstract Rectangle getBounds(CONTROL control); 64 65 public boolean check(CONTROL control) { 66 Rectangle a = getArea(); 67 Rectangle bounds = getBounds(control); 68 return bounds.x >= a.x && bounds.y >= a.y && 69 (bounds.x + bounds.width) <= (a.x + a.width) && 70 (bounds.y + bounds.height) <= (a.y + a.height); 71 } 72 73 @Override 74 public String toString() { 75 return "CoordinateLookup[area=" + area + "]"; 76 } 77 } |