package org.jboss.tools.common.reddeer.widget; import org.eclipse.swt.custom.CLabel; import org.eclipse.swt.layout.FormData; import org.eclipse.swt.widgets.Combo; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Text; import org.eclipse.swt.widgets.Widget; import org.hamcrest.BaseMatcher; import org.hamcrest.Description; import org.hamcrest.Matcher; import org.hamcrest.core.Is; import org.jboss.reddeer.core.resolver.WidgetResolver; /** * * @author apodhrad * */ public class WithCLabelMatcher extends BaseMatcher<String> { protected Matcher<String> matcher; public WithCLabelMatcher(String label) { matcher = Is.<String> is(label); } @Override public boolean matches(Object obj) { if (!(obj instanceof Text || obj instanceof Combo)) { return false; } Control control = (Control) obj; Control parent = control.getParent(); java.util.List<Widget> children = WidgetResolver.getInstance().getChildren(parent); for (Widget w : children) { if (w instanceof CLabel || w instanceof CLabel) { CLabel cLabel = (CLabel) w; Object layoutData = cLabel.getLayoutData(); if (layoutData instanceof FormData) { FormData formData = (FormData) layoutData; if (control.equals(formData.left.control) || control.equals(formData.right.control)) { if (matcher.matches(cLabel.getText())) { return true; } } } } } return false; } @Override public void describeTo(Description description) { description.appendText("with label ").appendDescriptionOf(matcher); } @Override public String toString() { return "Matcher matching widget with label:\n" + matcher.toString(); } }