/*
 * Copyright 2010-2015 Institut Pasteur.
 * 
 * This file is part of Icy.
 * 
 * Icy 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.
 * 
 * Icy 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 Icy. If not, see <http://www.gnu.org/licenses/>.
 */
package icy.gui.component.menu;

import icy.action.IcyAbstractAction;
import icy.resource.icon.IcyIcon;

import java.awt.event.ActionListener;

import org.pushingpixels.flamingo.api.common.JCommandButton.CommandButtonKind;
import org.pushingpixels.flamingo.api.common.icon.ResizableIcon;
import org.pushingpixels.flamingo.api.ribbon.RibbonApplicationMenuEntrySecondary;

/**
 * @author Stephane
 */
public class IcyRibbonApplicationMenuEntrySecondary extends RibbonApplicationMenuEntrySecondary
{
    private final IcyAbstractAction action;

    public IcyRibbonApplicationMenuEntrySecondary(ResizableIcon icon, String text, ActionListener mainActionListener,
            CommandButtonKind entryKind)
    {
        super(icon, text, mainActionListener, entryKind);

        action = null;
    }

    public IcyRibbonApplicationMenuEntrySecondary(IcyAbstractAction action)
    {
        super((action.getIcon() != null) ? new IcyIcon(action.getIcon()) : null, action.getName(), action,
                CommandButtonKind.ACTION_ONLY);

        this.action = action;

        // set tooltip
        setActionRichTooltip(action.getRichToolTip());
    }

    @Override
    public boolean isEnabled()
    {
        return super.isEnabled() && ((action == null) || action.isEnabled());
    }

    @Override
    public void setEnabled(boolean b)
    {
        final boolean oldValue = isEnabled();

        super.setEnabled(b);

        if ((oldValue != b) && (action != null))
            action.setEnabled(b);
    }
}