/******************************************************************************* * Copyright (c) 2002, 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.internal.cheatsheets.registry; import org.eclipse.core.runtime.*; import org.eclipse.osgi.util.NLS; import org.eclipse.ui.IPluginContribution; import org.eclipse.ui.cheatsheets.CheatSheetListener; import org.eclipse.ui.internal.cheatsheets.*; import org.eclipse.ui.model.WorkbenchAdapter; import org.eclipse.ui.model.IWorkbenchAdapter; import org.osgi.framework.Bundle; /** * Instances represent registered cheatsheets or cheatsheets opened using the content file. */ public class CheatSheetElement extends WorkbenchAdapter implements IAdaptable, IPluginContribution { private String contentFile; private String id; private String name; private String description; private IConfigurationElement configurationElement; private String listenerClass; private boolean composite; private boolean registered = false; private String contentXml; private String href; /** * Create a new instance of this class * * @param name java.lang.String */ public CheatSheetElement(String name) { this.name = name; } /** * Returns an object which is an instance of the given class * associated with this object. Returns <code>null</code> if * no such object can be found. */ public Object getAdapter(Class adapter) { if (adapter == IWorkbenchAdapter.class) { return this; } return Platform.getAdapterManager().getAdapter(this, adapter); } /** * * @return IConfigurationElement */ public IConfigurationElement getConfigurationElement() { return configurationElement; } /** * Get the content File path of this element * * @return java.lang.String */ public String getContentFile() { return contentFile; } /** * Answer the description parameter of this element * * @return java.lang.String */ public String getDescription() { return description; } /** * Answer the id as specified in the extension. * * @return java.lang.String */ public String getID() { return id; } /** * Returns the name of this cheatsheet element. */ public String getLabel(Object element) { return name; } /** * Returns the listener class name of this cheatsheet element. */ public String getListenerClass() { return listenerClass; } /** * * @param newConfigurationElement IConfigurationElement */ public void setConfigurationElement(IConfigurationElement newConfigurationElement) { configurationElement = newConfigurationElement; } /** * Set the contentFile parameter of this element * * @param value the path of the content file */ public void setContentFile(String value) { contentFile = value; } /** * Set the description parameter of this element * * @param value java.lang.String */ public void setDescription(String value) { description = value; } /** * Set the id parameter of this element * * @param value java.lang.String */ public void setID(String value) { id = value; } /** * Set the listener class name of this element. */ public void setListenerClass(String value) { listenerClass = value; } public CheatSheetListener createListenerInstance() { if(listenerClass == null || configurationElement == null) { return null; } Class extClass = null; CheatSheetListener listener = null; String pluginId = configurationElement.getContributor().getName(); try { Bundle bundle = Platform.getBundle(pluginId); extClass = bundle.loadClass(listenerClass); } catch (Exception e) { String message = NLS.bind(Messages.get().ERROR_LOADING_CLASS, (new Object[] {listenerClass})); IStatus status = new Status(IStatus.ERROR, ICheatSheetResource.CHEAT_SHEET_PLUGIN_ID, IStatus.OK, message, e); CheatSheetPlugin.getPlugin().getLog().log(status); } try { if (extClass != null) { listener = (CheatSheetListener) extClass.newInstance(); } } catch (Exception e) { String message = NLS.bind(Messages.get().ERROR_CREATING_CLASS, (new Object[] {listenerClass})); IStatus status = new Status(IStatus.ERROR, ICheatSheetResource.CHEAT_SHEET_PLUGIN_ID, IStatus.OK, message, e); CheatSheetPlugin.getPlugin().getLog().log(status); } if (listener != null){ return listener; } return null; } public String getLocalId() { return id; } public String getPluginId() { return configurationElement.getContributor().getName(); } public void setComposite(boolean composite) { this.composite = composite; } public boolean isComposite() { return composite; } /** * Get a URL which is saved with the state so the cheatsheet can later be * reopened from the state file. * @return null if the cheatsheet was opened from the registry otherwise * the URL of the content file. */ public String getRestorePath() { if (!registered) { return contentFile; } return null; } public void setRegistered(boolean registered) { this.registered = registered; } public boolean isRegistered() { return registered; } public void setContentXml(String xml) { this.contentXml = xml; } public String getContentXml() { return contentXml; } public void setHref(String contentPath) { this.href = contentPath; } public String getHref() { return href; } }