/*******************************************************************************
* Copyright (c) 2008 IBM Corporation.
* 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:
* Robert Fuhrer (rfuhrer@watson.ibm.com) - initial API and implementation
*******************************************************************************/
package org.eclipse.imp.help;
import org.eclipse.help.HelpSystem;
import org.eclipse.help.IContext;
import org.eclipse.help.IContextProvider;
import org.eclipse.imp.editor.LanguageServiceManager;
import org.eclipse.imp.parser.IParseController;
import org.eclipse.imp.services.IHelpService;
import org.eclipse.jface.text.IRegion;
public class IMPHelpContextProvider implements IContextProvider {
private final IHelpService fHelpContextSrvc;
private final IParseController fParseController;
private final String fContextID;
private final Object[] fSelected;
private final IRegion fSelection;
public IMPHelpContextProvider(LanguageServiceManager srvcMgr, String helpContextID, Object[] selected) {
fHelpContextSrvc= srvcMgr.getContextHelp();
fParseController= srvcMgr.getParseController();
fContextID= helpContextID;
fSelected= selected;
fSelection= null;
}
public IMPHelpContextProvider(LanguageServiceManager srvcMgr, String helpContextID, IRegion selection) {
fHelpContextSrvc= srvcMgr.getContextHelp();
fParseController= srvcMgr.getParseController();
fContextID= helpContextID;
fSelected= null;
fSelection= selection;
}
public IContext getContext(Object target) {
IContext context= HelpSystem.getContext(fContextID);
if (fHelpContextSrvc != null) {
context= HelpSystem.getContext(fHelpContextSrvc.getContextId(fContextID));
if (fSelected != null && fSelected.length > 0) {
context= new IMPHelpContext(context, buildHelpString(fSelected, fHelpContextSrvc, fParseController));
} else if (fSelection != null) {
context= new IMPHelpContext(context, buildHelpString(fSelection, fHelpContextSrvc, fParseController));
}
}
return context;
}
public static String buildHelpString(Object[] entities, IHelpService helpService, IParseController parseController) {
StringBuilder sb= new StringBuilder();
for(int i= 0; i < entities.length; i++) {
sb.append(helpService.getHelp(entities[i], parseController));
}
String result= sb.toString();
return result;
}
public static String buildHelpString(IRegion selection, IHelpService helpService, IParseController parseController) {
return helpService.getHelp(selection, parseController);
}
public int getContextChangeMask() {
return SELECTION;
}
public String getSearchExpression(Object target) {
return null;
}
}