Package com.mucommander.ui.button

Source Code of com.mucommander.ui.button.HelpButton

/*
* This file is part of muCommander, http://www.mucommander.com
* Copyright (C) 2002-2012 Maxence Bernard
*
* muCommander is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* muCommander is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

package com.mucommander.ui.button;

import java.util.Hashtable;
import java.util.Map;

import javax.swing.JButton;
import javax.swing.border.EmptyBorder;

import com.mucommander.commons.runtime.OsFamily;
import com.mucommander.commons.runtime.OsVersion;
import com.mucommander.ui.action.impl.GoToDocumentationAction;
import com.mucommander.ui.main.MainFrame;

/**
* This is a contextual 'Help' button to be used wherever help is available or needed. When clicked, it opens
* muCommander's online documentation in the system's default browser. If a specified help topic is passed to the
* constructor, the browser will open the said topic. If no topic is specified, the base documentation URL will be opened.
*
* <p>Unless explicitely set, this button has a standard help icon but no text label. A tooltip is displayed when
* hovering over the button.</p>
*
* @see com.mucommander.ui.action.impl.GoToDocumentationAction
* @author Maxence Bernard
*/
public class HelpButton extends JButton {

    /**
     * Creates a new HelpButton with no initial topic.
     *
     * @param mainFrame the MainFrame this button is associated with
     */
    public HelpButton(MainFrame mainFrame) {
        this(mainFrame, null);
    }

    /**
     * Creates a new HelpButton with the specified topic.
     *
     * @param mainFrame the MainFrame this button is associated with
     * @param helpTopic the help topic this button will open when clicked, <code>null</code> to open the base documentation URL
     */
    public HelpButton(MainFrame mainFrame, String helpTopic) {
        Map<String, Object> properties = new Hashtable<String, Object>();

        GoToDocumentationAction action = new GoToDocumentationAction(mainFrame, properties);
        setAction(action);

        if(helpTopic!=null)
            setHelpTopic(helpTopic);

        // Note: the button's text and icon must be set after the action otherwise they'll be replaced by the action's

        // Remove the action's label from this button's text
        setText(null);

        // Use the action's label as a tooltip
        setToolTipText(action.getLabel());

        if(OsFamily.MAC_OS_X.isCurrent() && OsVersion.MAC_OS_X_10_5.isCurrentOrHigher()) {
            // If running Mac OS X 10.5 (and up), use the special client property to have a standard help button.
            putClientProperty("JButton.buttonType", "help");

            // Remove the action's icon
            setIcon(null);
        }
        else {
            setContentAreaFilled(false);
            setBorderPainted(false);
            setBorder(new EmptyBorder(0, 0, 0, 0));
        }

        setFocusable(false);
    }

    /**
     * Returns the help topic this button will open when clicked, <code>null</code> if there is none.
     *
     * @return the help topic this button will open when clicked, <code>null</code> if there is none
     */
    public String getHelpTopic() {
        return (String)getAction().getValue(GoToDocumentationAction.TOPIC_PROPERTY_KEY);
    }
   
    /**
     * Sets the help topic this button will open when clicked, <code>null</code> to open the base documentation URL.
     *
     * @param helpTopic the help topic this button will open when clicked, <code>null</code> to open the base documentation URL
     */
    public void setHelpTopic(String helpTopic) {
        getAction().putValue(GoToDocumentationAction.TOPIC_PROPERTY_KEY, helpTopic);
    }
}
TOP

Related Classes of com.mucommander.ui.button.HelpButton

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.