blob: da15b4c65b401e3b346005276b6461254151e656 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 2004 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Common Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/cpl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.jdt.internal.ui.util;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.swt.custom.StyledText;
import org.eclipse.swt.events.HelpEvent;
import org.eclipse.swt.events.HelpListener;
import org.eclipse.help.HelpSystem;
import org.eclipse.help.IContext;
import org.eclipse.help.IContextProvider;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.jface.viewers.StructuredViewer;
import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.jdt.core.IJavaElement;
import org.eclipse.jdt.core.JavaModelException;
import org.eclipse.jdt.internal.ui.JavaPlugin;
import org.eclipse.jdt.internal.ui.actions.ActionUtil;
import org.eclipse.jdt.internal.ui.actions.SelectionConverter;
import org.eclipse.jdt.internal.ui.javaeditor.JavaEditor;
public class JavaUIHelp {
public static void setHelp(StructuredViewer viewer, String contextId) {
JavaUIHelpListener listener= new JavaUIHelpListener(viewer, contextId);
viewer.getControl().addHelpListener(listener);
}
public static void setHelp(JavaEditor editor, StyledText text, String contextId) {
JavaUIHelpListener listener= new JavaUIHelpListener(editor, contextId);
text.addHelpListener(listener);
}
public static IContextProvider getHelpContextProvider(IWorkbenchPart part, String contextId) {
IStructuredSelection selection;
try {
selection= SelectionConverter.getStructuredSelection(part);
} catch (JavaModelException ex) {
JavaPlugin.log(ex);
selection= StructuredSelection.EMPTY;
}
Object[] elements= selection.toArray();
return new JavaUIHelpContextProvider(contextId, elements);
}
private static class JavaUIHelpListener implements HelpListener {
private StructuredViewer fViewer;
private String fContextId;
private JavaEditor fEditor;
public JavaUIHelpListener(StructuredViewer viewer, String contextId) {
fViewer= viewer;
fContextId= contextId;
}
public JavaUIHelpListener(JavaEditor editor, String contextId) {
fContextId= contextId;
fEditor= editor;
}
/*
* @see HelpListener#helpRequested(HelpEvent)
*
*/
public void helpRequested(HelpEvent e) {
try {
Object[] selected= null;
if (fViewer != null) {
ISelection selection= fViewer.getSelection();
if (selection instanceof IStructuredSelection) {
selected= ((IStructuredSelection)selection).toArray();
}
} else if (fEditor != null) {
IJavaElement input= SelectionConverter.getInput(fEditor);
if (ActionUtil.isOnBuildPath(input)) {
selected= SelectionConverter.codeResolve(fEditor);
}
}
JavadocHelpContext.displayHelp(fContextId, selected);
} catch (CoreException x) {
JavaPlugin.log(x);
}
}
}
private static class JavaUIHelpContextProvider implements IContextProvider {
private String fId;
private Object[] fSelected;
public JavaUIHelpContextProvider(String id, Object[] selected) {
fId= id;
fSelected= selected;
}
public int getContextChangeMask() {
return SELECTION;
}
public IContext getContext(Object target) {
IContext context= HelpSystem.getContext(fId);
if (context != null) {
if (fSelected != null && fSelected.length > 0) {
try {
context= new JavadocHelpContext(context, fSelected);
} catch (CoreException e) {
JavaPlugin.log(e);
}
}
}
return context;
}
public String getSearchExpression(Object target) {
return null;
}
}
}