package hirondelle.stocks.help;
import java.awt.event.*;
import javax.swing.*;
import java.util.logging.*;
import javax.help.*;
import java.net.URL;
import hirondelle.stocks.util.Args;
import hirondelle.stocks.util.Util;
public final class HelpAction extends AbstractAction {
public HelpAction(
JFrame aFrame, String aText, int aMnemonicKeyEvent, Icon aIcon, View aView
) {
super(aText, aIcon);
Args.checkForNull(aFrame);
Args.checkForNull(aText);
Args.checkForNull(aView);
fFrame = aFrame;
fView = aView;
putValue(SHORT_DESCRIPTION, "StocksMonitor Help");
putValue(LONG_DESCRIPTION, "Displays JavaHelp for StocksMonitor.");
putValue(MNEMONIC_KEY, new Integer(aMnemonicKeyEvent) );
initHelpSystem();
}
@Override public void actionPerformed(ActionEvent event) {
fLogger.info("Showing help system.");
fHelpBroker.setCurrentView( fView.toString() );
fDisplayHelp.actionPerformed( event );
}
public enum View {
SEARCH("Search"),
CONTENTS("TOC"),
INDEX("Index");
@Override public String toString(){
return fName;
}
private View(String aName){
fName = aName;
}
private String fName;
}
private JFrame fFrame;
private View fView;
private static final String PATH_TO_JAVA_HELP =
"hirondelle/stocks/help/JavaHelp/HelpSet.hs"
;
private ClassLoader DEFAULT_CLASS_LOADER = null;
private static final Logger fLogger = Util.getLogger(HelpAction.class);
private HelpBroker fHelpBroker;
private CSH.DisplayHelpFromSource fDisplayHelp;
private void initHelpSystem(){
if ( fHelpBroker != null && fDisplayHelp != null) return;
ClassLoader loader = this.getClass().getClassLoader();
URL helpSetURL = HelpSet.findHelpSet(loader, PATH_TO_JAVA_HELP);
assert helpSetURL != null : "Cannot find help system.";
try {
HelpSet helpSet = new HelpSet(DEFAULT_CLASS_LOADER, helpSetURL);
fHelpBroker = helpSet.createHelpBroker();
fHelpBroker.enableHelpKey( fFrame.getRootPane(), "overview", helpSet );
fDisplayHelp = new CSH.DisplayHelpFromSource(fHelpBroker);
}
catch (HelpSetException ex) {
fLogger.severe("Cannot create help system with: " + helpSetURL);
}
assert fHelpBroker != null : "HelpBroker is null.";
}
}