/*******************************************************************************
* Copyright (c) 2007, 2009 Wind River Systems 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:
* Wind River Systems - initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.dsf.debug.ui.viewmodel.expression;
import org.eclipse.cdt.dsf.concurrent.RequestMonitor;
import org.eclipse.cdt.dsf.ui.viewmodel.IVMNode;
import org.eclipse.cdt.dsf.ui.viewmodel.VMDelta;
import org.eclipse.debug.core.model.IExpression;
import org.eclipse.jface.viewers.TreePath;
/**
* Interface for view model nodes that can be used within the expression view.
* The methods of this interface allow the {@link ExpressionManagerVMNode}
* to use this node to delegate expression parsing to this node, and to
* generate deltas for expressions that are owned by this node.
*/
public interface IExpressionVMNode extends IVMNode {
/**
* Returns whether the given expression node recognizes and can parse the given
* expression.
* @param expression Expression that needs to be parsed.
* @return true if expression can be parsed
*/
public boolean canParseExpression(IExpression expression);
/**
* Asynchronously fills in the given expression update.
* @param update Update to complete.
*/
public void update(IExpressionUpdate update);
/**
* Returns the flags that this node can generate for the given expression and
* event.
*/
public int getDeltaFlagsForExpression(IExpression expression, Object event);
/**
* Adds delta flags to the given parent delta based on the expression
* object given. The nodes add flags to the expression view's root
* delta using this method, regardless of whether the node is directly
* below the expression manager or not.
*
*/
public void buildDeltaForExpression(IExpression expression, int elementIdx, Object event, VMDelta parentDelta,
TreePath path, RequestMonitor rm);
/**
* Adds delta to the given parent delta based on the given element that
* was created base on an expression parsed by this node. The VM nodes can
* add a new delta node to the parentDela by implementing this method.
*/
public void buildDeltaForExpressionElement(Object element, int elementIdx, Object event, VMDelta parentDelta, final RequestMonitor rm);
}