blob: 65084eedde7e52a8922df893422bfd631fdafc25 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2004, 2015 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.ui.cheatsheets;
import java.util.Set;
/**
* Manages the running of a cheat sheet.
* <p>
* Each cheat sheet that is opened in the UI is assigned its own cheat sheet
* manager, which stays with it until the cheat sheet is completed (or
* restarted). The cheat sheet manager is passed as a parameter to cheat
* sheet-aware actions which implement {@link ICheatSheetAction}. The manager
* carries arbitrary key-value data (strings) for the lifetime of a cheat sheet,
* and can be accessed via {@link #getData(String)}and
* {@link #setData(String, String)}. If the workbench is shut down while the
* cheat sheet is in progress, this data will generally be saved and later
* restored when the workbench is restarted and cheat sheet is resumed. The
* manager also supports a {@link CheatSheetListener}(specified via the
* "listener" attribute of the "cheatsheet" element in the cheat sheet content
* file), which is kept informed of life cycle events over the course of the
* cheat sheet's life time.
* </p>
*
* @since 3.0
* @noimplement This interface is not intended to be implemented by clients.
* @noextend This interface is not intended to be extended by clients.
*/
public interface ICheatSheetManager {
/**
* Returns the id of the cheat sheet managed by this manager.
*
* @return the cheat sheet id
*/
public String getCheatSheetID();
/**
* Returns the data value associated with the given key.
*
* @param key the key
* @return the string data associated with the key, or
* <code>null</code> none
* @exception IllegalArgumentException if <code>key</code>
* is <code>null</code>
*/
public String getData(String key);
/**
* Sets the data value associated with the given key.
* <p>
* Data associated with a cheat sheet manager is remembered
* for the life of the manager. All data is discarded when
* the cheat sheet is completed (or restarted).
* </p>
*
* @param key the key
* @param data the string data associated with the key,
* or <code>null</code> to remove
* @exception IllegalArgumentException if <code>key</code>
* is <code>null</code>
*/
public void setData(String key, String data);
/**
* Get the cheat sheet manager for the enclosing composite cheat sheet.
* @return The cheat sheet manager for the composite cheat sheet which contains
* this cheat sheet as a task or <code>null</code> if this cheatsheet was not
* opened as a subtask of a composite cheat sheet.
* @since 3.2
*/
public ICheatSheetManager getParent();
/**
* Get the keys for the data in this cheat sheet manager
* @return The set of keys.
* @since 3.2
*/
public Set<String> getKeySet();
}