/******************************************************************************* * Copyright (c) 2004, 2007 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.intro.config; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.ui.IMemento; import org.eclipse.ui.PartInitException; import org.eclipse.ui.forms.widgets.FormToolkit; import org.eclipse.ui.intro.IIntroPart; /** * An Intro standby part. It is a UI component that represents some standby * content. Standby parts can be contributed to the Eclipse intro using the * following extension point: * <p> * <pre> * <extension point="org.eclipse.ui.intro.configExtension"> * <standbyPart * pluginId="com.x.y.somePluginId" * class="com.x.y.someClass" * id="com.x.y.someContentPartId"> * </standbyPart> * </extension> * </pre> * * </p> * Standby content parts have a life cycle that starts with a call to init, * shortly after part construction, followed by a call to createPartControl. * During these two calls, the part is responsible for creating its content and * using the memento to try to recreate its previous state. SetInput is the last * method called when trying to create a standby part. * * @since 3.0 */ public interface IStandbyContentPart { /** * Creates the SWT controls for this standby part. * <p> * Clients should not call this method. The intro framework calls this * method when it needs to. * * @param parent * the parent control * @param toolkit * the form toolkit being used by the IIntroPart implementation */ public void createPartControl(Composite parent, FormToolkit toolkit); /** * Returns the primary control associated with this standby part. The * control is typically set during the createPartControl() call when this * part is being created. * * @return the SWT control which displays this standby part's content, or * <code>null</code> if this standby part's controls have not yet * been created. */ public Control getControl(); /** * Initializes this intro standby content part with the given intro site. A * memento is passed to the part which contains a snapshot of the part state * from a previous session. Where possible, the part should try to recreate * that state. * <p> * This method is automatically called by the workbench shortly after part * construction. It marks the start of this parts' lifecycle. Clients must * not call this method. * </p> * * @param introPart * the intro part hosting this stanndby content part. * @param memento * this part state or <code>null</code> if there is no previous * saved state * @exception PartInitException * if this part was not initialized successfully. */ public void init(IIntroPart introPart, IMemento memento) throws PartInitException; /** * Sets the input to show in this standby part. Note that input can be null, * such as when the part if created through an Intro URL that does not have * an input specified, or when this standby part is being recreated from a * previous workbench session. In this case, the standby part is responsible * for handling a null input, and recreating itself from a cached IMemento. * * @param input * the input object to be used by this standby part. */ public void setInput(Object input); /** * Asks this standby part to take focus. * <p> * Clients should not call this method (the intro framework calls this * method at appropriate times). * </p> */ public void setFocus(); /** * Disposes of this standby part. * <p> * Clients should not call this method. The intro framework calls this * method when the Customizable IntroPart is closed. * </p> */ public void dispose(); /** * Saves the object state within a memento. * <p> * This method is automatically called by the workbench at appropriate * times. Clients must not call this method directly. * </p> * * @param memento * a memento to receive the object state */ public void saveState(IMemento memento); }