package be.msyben.vinylManager.aide;

import be.msyben.vinylManager.exceptions.VinylManagerException;
import be.msyben.vinylManager.properties.Language;
import java.awt.event.KeyEvent;
import java.net.URL;
import javax.help.CSH;
import javax.help.HelpBroker;
import javax.help.HelpSet;
import javax.help.HelpSetException;
import javax.swing.JMenuItem;
import javax.swing.KeyStroke;

/**
 * Item de l'aide.
 *
 * @author Mathieu Syben
 */
public class AideMenuItem {

    /**
     * Le menu item
     */
    private static JMenuItem aide = null;

    /**
     * Constructeur privé non instantiable
     */
    private AideMenuItem() {
    }

    /**
     * Méthode appelée lors de la demande de récupération du JMenuItem pour
     * l'aide.
     *
     * @return un JMenuItem qui ouvre la fenêtre d'aide lorsqu'on clique dessus
     * ou quand on fait F1
     * @throws VinylManagerException en cas d'erreur lors de la création de
     * l'aide.
     */
    public static synchronized JMenuItem getAideMenuItem() throws VinylManagerException {
        if (aide == null) {
            try {
                createAideMenuItem();
            } catch (HelpSetException ex) {
                throw new VinylManagerException(ex);
            }
        }
        return aide;
    }

    /**
     * Création du JMenuItem pour l'aide.
     *
     * @throws HelpSetException en cas d'erreur lors de la création.
     */
    private static void createAideMenuItem() throws HelpSetException {
        URL url = AideMenuItem.class.getResource("help.hs");
        HelpSet hs = new HelpSet(null, url);
        HelpBroker hb = hs.createHelpBroker();
        aide = new JMenuItem(Language.getInstance().get("main.menu.aide"));
        aide.addActionListener(new CSH.DisplayHelpFromSource(hb));
        aide.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F1, 0));
    }

    public static void updateName() {
        if (aide != null) {
            aide.setText(Language.getInstance().get("main.menu.aide"));
        }
    }
}
