/*******************************************************************************
* Copyright (c) 2012 Google, Inc.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Google, Inc. - initial API and implementation
*******************************************************************************/
package com.windowtester.runtime.swt.internal.matchers;
import java.util.Map;
import com.windowtester.runtime.swt.internal.widgets.ISWTWidgetReference;
import com.windowtester.runtime.swt.internal.widgets.ToolItemReference;
import com.windowtester.runtime.swt.locator.eclipse.ContributedToolItemLocator.IParameterMatcher;
import com.windowtester.runtime.util.StringComparator;
/**
* Matches contributed tool items.
*/
public class ContributedToolItemMatcher extends WidgetMatcher {
private final String id;
private final IParameterMatcher parameterMatcher;
public ContributedToolItemMatcher(String id, IParameterMatcher parameterMatcher) {
this.id = id;
this.parameterMatcher = parameterMatcher;
}
/* (non-Javadoc)
* @see com.windowtester.runtime.swt.widgets.ISWTWidgetMatcher#matches(com.windowtester.runtime.swt.widgets.ISWTWidgetReference)
*/
@SuppressWarnings("unchecked")
public boolean matches(ISWTWidgetReference<?> ref) {
if (!(ref instanceof ToolItemReference))
return false;
ToolItemReference item = (ToolItemReference)ref;
if (!StringComparator.matches(item.getActionDefinitionId(), id))
return false;
if (parameterMatcher == null)
return true;
Map parameterMap = item.getCommandParameterMap();
if (parameterMap == null)
return true;
return parameterMatcher.matches(parameterMap);
}
}