01: /*******************************************************************************
02: * Copyright (c) 2000, 2006 IBM Corporation and others.
03: * All rights reserved. This program and the accompanying materials
04: * are made available under the terms of the Eclipse Public License v1.0
05: * which accompanies this distribution, and is available at
06: * http://www.eclipse.org/legal/epl-v10.html
07: *
08: * Contributors:
09: * IBM Corporation - initial API and implementation
10: *******************************************************************************/package org.eclipse.ui.internal.ide.dialogs;
11:
12: import org.eclipse.core.runtime.IAdaptable;
13: import org.eclipse.ui.IElementFactory;
14: import org.eclipse.ui.IMemento;
15: import org.eclipse.ui.internal.ide.AboutInfo;
16:
17: /**
18: * A simple factory for the welcome editor
19: */
20: public class WelcomeEditorInputFactory implements IElementFactory {
21: /**
22: * WelcomeEditorInputFactory constructor comment.
23: */
24: public WelcomeEditorInputFactory() {
25: super ();
26: }
27:
28: /**
29: * Re-creates and returns an object from the state captured within the given
30: * memento.
31: * <p>
32: * Under normal circumstances, the resulting object can be expected to be
33: * persistable; that is,
34: * <pre>
35: * result.getAdapter(org.eclipse.ui.IPersistableElement.class)
36: * </pre>
37: * should not return <code>null</code>.
38: * </p>
39: *
40: * @param memento a memento containing the state for the object
41: * @return an object, or <code>null</code> if the element could not be created
42: */
43: public IAdaptable createElement(IMemento memento) {
44: // Get the feature id.
45: String versionedFeatureId = memento
46: .getString(WelcomeEditorInput.FEATURE_ID);
47: if (versionedFeatureId == null) {
48: return null;
49: }
50: int colonPos = versionedFeatureId.indexOf(':');
51: if (colonPos == -1) {
52: // assume the memento is stale or mangled
53: return null;
54: }
55: String featureId = versionedFeatureId.substring(0, colonPos);
56: String versionId = versionedFeatureId.substring(colonPos + 1);
57: // @issue using feature id for plug-in id
58: AboutInfo info = AboutInfo
59: .readFeatureInfo(featureId, versionId);
60: if (info == null) {
61: return null;
62: }
63: return new WelcomeEditorInput(info);
64: }
65: }
|