/*******************************************************************************
 * Copyright (c) 2000, 2005 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.ui;


/**
 * Interface for asking an object to store its state in a memento.
 * <p>
 * This interface is typically included in interfaces where 
 * persistance is required.
 * </p><p>
 * When the workbench is shutdown objects which implement this interface 
 * will be persisted.  At this time the <code>getFactoryId</code> method 
 * is invoked to discover the id of the element factory that will be used 
 * to re-create the object from a memento.  Then the <code>saveState</code> 
 * method is invoked to store the element data into a newly created memento. 
 * The resulting mementos are collected up and written out to a single file.
 * </p>
 * <p>
 * During workbench startup these mementos are read from the file.  The
 * factory Id for each is retrieved and mapped to an <code>IElementFactory</code> 
 * which has been registered in the element factory extension point.  If a 
 * factory exists for the Id it will be engaged to re-create the original 
 * object.
 * </p>
 *
 * @see org.eclipse.core.runtime.IAdaptable
 * @see org.eclipse.ui.IMemento
 * @see org.eclipse.ui.IElementFactory
 * @since 1.1
 */
public interface IPersistableElement extends IPersistable {
    /**
     * Returns the id of the element factory which should be used to re-create this
     * object.
     * <p>
     * Factory ids are declared in extensions to the standard extension point
     * <code>"org.eclipse.ui.elementFactories"</code>.
     * </p>
     * 
     * @return the element factory id
     * @see IElementFactory
     */
    public String getFactoryId();
}
