blob: 32d3c3f3cff03fa98e1058c1f3445225f41da2c7 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2006, 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.internal.cheatsheets.state;
import java.util.Hashtable;
import java.util.Properties;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.ui.IMemento;
import org.eclipse.ui.cheatsheets.ICheatSheetManager;
import org.eclipse.ui.internal.cheatsheets.data.CheatSheetSaveHelper;
import org.eclipse.ui.internal.cheatsheets.data.IParserTags;
import org.eclipse.ui.internal.cheatsheets.registry.CheatSheetElement;
import org.eclipse.ui.internal.cheatsheets.views.CheatSheetManager;
/**
* A state manager used to open a cheat sheet whose state comes from a memento.
* This is used by the children of composite cheat sheets.
*/
public class MementoStateManager implements ICheatSheetStateManager {
private IMemento memento;
private CheatSheetElement element;
private CheatSheetSaveHelper saveHelper = new CheatSheetSaveHelper();
private Properties props;
private ICheatSheetManager parentCsm;
/**
* @param memento The memento which will be used to initialize the state. May be
* null to indicate that the state should be initialized.
*/
public MementoStateManager(IMemento memento, ICheatSheetManager parentCsm) {
this.memento = memento;
this.parentCsm = parentCsm;
}
/**
* Load properties from the memento.
*/
@Override
public Properties getProperties() {
if (memento == null) {
return null;
}
if (props == null) {
props = saveHelper.loadFromMemento(memento);
}
return props;
}
@Override
public CheatSheetManager getCheatSheetManager() {
CheatSheetManager result = new CheatSheetManager(element);
if (getProperties() != null) {
result.setData((Hashtable<String, String>) getProperties().get(IParserTags.MANAGERDATA));
}
result.setParent(parentCsm);
return result;
}
@Override
public void setElement(CheatSheetElement element) {
this.element = element;
}
@Override
public IStatus saveState(Properties properties, CheatSheetManager manager) {
// The real save will use a memento, this is an empty method
return Status.OK_STATUS;
}
}