/*******************************************************************************
 *  Copyright (c) 2000, 2011 IBM Corporation and others.
 *  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:
 *     IBM Corporation - initial API and implementation
 *******************************************************************************/
package org.eclipse.jdt.debug.testplugin;

import org.eclipse.debug.core.DebugEvent;
import org.eclipse.debug.core.model.IExpression;
import org.eclipse.debug.core.model.IWatchExpression;

/**
 * ExpressionWaiter
 */
public class ExpressionWaiter extends DebugElementEventWaiter {

	/**
	 * Constructor
	 * @param kind
	 * @param element
	 */
	public ExpressionWaiter(int kind, Object element) {
		super(kind, element);
	}

	/**
	 * @see org.eclipse.jdt.debug.testplugin.DebugElementEventWaiter#accept(org.eclipse.debug.core.DebugEvent)
	 */
	@Override
	public boolean accept(DebugEvent event) {
		if (event.getDetail() == DebugEvent.STATE) {
			return false;
		}
		IExpression expression = (IExpression)fElement;
		boolean pending = false;
		if (expression instanceof IWatchExpression) {
		    pending = ((IWatchExpression)expression).isPending();
		}
        return super.accept(event) && !pending && expression.getValue() != null;
	}
}
