/*******************************************************************************
* 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.ui.viewmodel.update;
import org.eclipse.cdt.dsf.ui.viewmodel.IVMProvider;
import org.eclipse.cdt.dsf.ui.viewmodel.properties.IElementPropertiesProvider;
/**
* A view model provider which supports caching of data returned by view model
* nodes. The methods in this interface allow clients to configure how the
* cache should be updated in response to different events.
*
* @since 1.0
*/
public interface ICachingVMProvider extends IVMProvider, IElementPropertiesProvider {
/**
* A prefix used to create a property to indicate whether a given property
* has changed since the last cache update with the {@link IVMUpdatePolicy#ARCHIVE}
* flag. The caching VM provider appends these properties to an element's set of
* properties as they are retrieved through the cache.
*
* @see org.eclipse.cdt.dsf.ui.viewmodel.properties.IElementPropertiesProvider
* @see IVMUpdatePolicy#ARCHIVE
*
* @since 2.0
*/
public static final String PROP_IS_CHANGED_PREFIX = "is_changed."; //$NON-NLS-1$
/**
* A property used to indicate whether a given cache entry is currently dirty.
* The caching VM provider appends this property to an
* element's set of properties as they are retrieved through the cache.
*
* @see org.eclipse.cdt.dsf.ui.viewmodel.properties.IElementPropertiesProvider
* @see IVMUpdatePolicy#DIRTY
*
* @since 2.0
*/
public static final String PROP_CACHE_ENTRY_DIRTY = "cache_entry_dirty"; //$NON-NLS-1$
/**
* Property name for the current update policy in view.
*
* @see org.eclipse.cdt.dsf.ui.viewmodel.properties.IElementPropertiesProvider
*
* @since 2.1
*/
public static final String PROP_UPDATE_POLICY_ID = "update_policy_id"; //$NON-NLS-1$
/**
* Returns the update policies that the given provider supports.
*/
public IVMUpdatePolicy[] getAvailableUpdatePolicies();
/**
* Returns the active update policy.
*/
public IVMUpdatePolicy getActiveUpdatePolicy();
/**
* Sets the active update policy. This has to be one of the update
* policies supported by the provider.
*/
public void setActiveUpdatePolicy(IVMUpdatePolicy mode);
/**
* Forces the view to flush its cache and re-fetch data from the view
* model nodes.
*/
public void refresh();
}