Writing the help action
The interface
ILiveHelpAction
is used to build an active help action.
It is straightforward to implement an
ILiveHelpAction
.
You must implement two methods.
-
run() - This method is called to run the live help action.
This method will be called by the help system from a non-UI thread, so UI
access must be wrapped in a
Display.syncExec()
method.
-
setInitializationString(String) - This method is called to
initialize your action with a String data parameter you can specify in the
HTML which runs the JavaScript liveAction.
If you don't need initialization data, you can just implement
this method to do nothing. This method is called before run().
Here is a simple implementation of a live help action that opens a message
dialog. We don't need any information from the JavaScript, so the
initialization data is ignored.
package org.eclipse.platform.doc.isv.activeHelp;
import org.eclipse.help.ILiveHelpAction;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.swt.widgets.*;
import org.eclipse.ui.*;
/**
* Sample Active Help action.
*/
public class ActiveHelpOpenDialogAction implements ILiveHelpAction {
public void setInitializationString(String data) {
// ignore the data. We do not use any javascript parameters.
}
public void run() {
// Active help does not run on the UI thread, so we must use syncExec
Display.getDefault().syncExec(new Runnable() {
public void run() {
IWorkbenchWindow window =
PlatformUI.getWorkbench().getActiveWorkbenchWindow();
if (window != null) {
// Bring the Workbench window to the top of other windows;
// On some Windows systems, it will only flash the Workbench
// icon on the task bar
Shell shell = window.getShell();
shell.setMinimized(false);
shell.forceActive();
// Open a message dialog
MessageDialog.openInformation(
window.getShell(),
"Hello World.",
"Hello World.");
}
}
});
}
}