blob: c85b21ab927444583532e2f34b3f72fcd1baaa73 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 2016 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.help.ui.internal.views;
import java.util.Dictionary;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.help.search.ISearchEngine;
import org.eclipse.help.search.ISearchScope;
import org.eclipse.help.ui.ISearchScopeFactory;
import org.eclipse.help.ui.RootScopePage;
import org.eclipse.help.ui.internal.HelpUIPlugin;
import org.eclipse.help.ui.internal.HelpUIResources;
import org.eclipse.help.ui.internal.IHelpUIConstants;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.swt.graphics.Image;
/**
* Descriptor for a federated search engine participant.
*/
public class EngineTypeDescriptor {
private IConfigurationElement config;
private Image image;
private ISearchScopeFactory factory;
/**
*
*/
public EngineTypeDescriptor(IConfigurationElement config) {
this.config = config;
}
public IConfigurationElement getConfig() {
return config;
}
public IConfigurationElement [] getPages() {
return config.getChildren("subpage"); //$NON-NLS-1$
}
public String getLabel() {
return config.getAttribute(IHelpUIConstants.ATT_LABEL);
}
public String getId() {
return config.getAttribute(IHelpUIConstants.ATT_ID);
}
public Image getIconImage() {
if (image!=null)
return image;
String icon = config.getAttribute(IHelpUIConstants.ATT_ICON);
if (icon!=null) {
String bundleId = config.getContributor().getName();
HelpUIResources.getImageDescriptor(bundleId, icon);
return HelpUIResources.getImage(icon);
}
image = HelpUIResources.getImage(IHelpUIConstants.IMAGE_HELP_SEARCH);
return image;
}
public String getDescription() {
String desc = null;
IConfigurationElement [] children = config.getChildren(IHelpUIConstants.TAG_DESC);
if (children.length==1)
desc = children[0].getValue();
return desc;
}
public ImageDescriptor getImageDescriptor() {
ImageDescriptor desc=null;
String icon = config.getAttribute(IHelpUIConstants.ATT_ICON);
String bundleId = config.getContributor().getName();
if (icon!=null)
desc = HelpUIResources.getImageDescriptor(bundleId, icon);
else
desc = HelpUIResources.getImageDescriptor(bundleId, IHelpUIConstants.IMAGE_HELP_SEARCH);
return desc;
}
public RootScopePage createRootPage(String scopeSetName) {
try {
Object obj = config.createExecutableExtension(IHelpUIConstants.ATT_PAGE_CLASS);
if (obj instanceof RootScopePage) {
RootScopePage page = (RootScopePage)obj;
return page;
}
return null;
}
catch (CoreException e) {
return null;
}
}
public ISearchEngine createEngine() {
String eclass = config.getAttribute(IHelpUIConstants.ATT_CLASS);
if (eclass!=null) {
try {
Object obj = config.createExecutableExtension(IHelpUIConstants.ATT_CLASS);
if (obj instanceof ISearchEngine)
return (ISearchEngine)obj;
}
catch (CoreException e) {
HelpUIPlugin.logError("Engine " + eclass + " cannot be instantiated", null); //$NON-NLS-1$ //$NON-NLS-2$
}
}
return null;
}
public ISearchScope createSearchScope(IPreferenceStore store, String engineId,
Dictionary<String, Object> parameters) {
if (factory==null) {
String fclass = config.getAttribute(IHelpUIConstants.ATT_SCOPE_FACTORY);
if (fclass!=null) {
try {
Object obj = config.createExecutableExtension(IHelpUIConstants.ATT_SCOPE_FACTORY);
if (obj instanceof ISearchScopeFactory) {
factory = (ISearchScopeFactory)obj;
}
}
catch (CoreException e) {
HelpUIPlugin.logError("Scope factory " + fclass + " cannot be instantiated", null); //$NON-NLS-1$ //$NON-NLS-2$
}
}
}
if (factory!=null)
return factory.createSearchScope(store, engineId, parameters);
return null;
}
}