Search in sources :

Example 1 with SecondaryEntryGroup

use of org.freeplane.core.ui.ribbon.RibbonMenuPrimaryContributorFactory.SecondaryEntryGroup in project freeplane by freeplane.

the class RibbonMenuSecondaryGroupContributorFactory method getContributor.

/**
 *********************************************************************************
 * CONSTRUCTORS
 *********************************************************************************
 */
/**
 *********************************************************************************
 * METHODS
 *********************************************************************************
 */
/**
 *********************************************************************************
 * REQUIRED METHODS FOR INTERFACES
 *********************************************************************************
 */
public ARibbonContributor getContributor(final Properties attributes) {
    return new ARibbonContributor() {

        SecondaryEntryGroup group;

        public String getKey() {
            return attributes.getProperty("name", null);
        }

        public void contribute(RibbonBuildContext context, ARibbonContributor parent) {
            group = new SecondaryEntryGroup(TextUtils.removeTranslateComment(TextUtils.getRawText("ribbon.menu.group." + getKey())));
            context.processChildren(context.getCurrentPath(), this);
            parent.addChild(group, new ChildProperties(parseOrderSettings(attributes.getProperty("orderPriority", ""))));
        }

        public void addChild(Object child, ChildProperties properties) {
            if (child instanceof RibbonApplicationMenuEntrySecondary) {
                group.addEntry((RibbonApplicationMenuEntrySecondary) child);
            } else if (child instanceof AbstractCommandButton) {
                group.addEntry(wrapButton((AbstractCommandButton) child));
            }
        }

        private RibbonApplicationMenuEntrySecondary wrapButton(AbstractCommandButton button) {
            ActionListener listener = null;
            PopupPanelCallback callback = null;
            CommandButtonKind kind = CommandButtonKind.ACTION_ONLY;
            if (button instanceof JCommandButton) {
                if (((JCommandButton) button).getPopupCallback() != null) {
                    kind = (((JCommandButton) button).getCommandButtonKind());
                    callback = ((JCommandButton) button).getPopupCallback();
                }
            }
            for (ActionListener l : button.getListeners(ActionListener.class)) {
                if (l instanceof RibbonActionListener) {
                    listener = l;
                    break;
                }
            }
            RibbonApplicationMenuEntrySecondary entry = new RibbonApplicationMenuEntrySecondary(button.getIcon(), button.getText(), listener, kind);
            if (callback != null) {
                entry.setPopupCallback(callback);
            }
            KeyStroke ks = (KeyStroke) button.getClientProperty(RibbonActionContributorFactory.ACTION_ACCELERATOR);
            if (ks != null) {
                AFreeplaneAction action = (AFreeplaneAction) button.getClientProperty(RibbonActionContributorFactory.ACTION_KEY_PROPERTY);
                if (action != null) {
                    RichTooltip tip = RibbonActionContributorFactory.getRichTooltip(action, ks);
                    if (tip != null) {
                        entry.setActionRichTooltip(tip);
                    }
                }
            }
            return entry;
        }
    };
}
Also used : PopupPanelCallback(org.pushingpixels.flamingo.api.common.popup.PopupPanelCallback) JCommandButton(org.pushingpixels.flamingo.api.common.JCommandButton) RichTooltip(org.pushingpixels.flamingo.api.common.RichTooltip) AFreeplaneAction(org.freeplane.core.ui.AFreeplaneAction) ActionListener(java.awt.event.ActionListener) RibbonActionListener(org.freeplane.core.ui.ribbon.RibbonActionContributorFactory.RibbonActionListener) AbstractCommandButton(org.pushingpixels.flamingo.api.common.AbstractCommandButton) KeyStroke(javax.swing.KeyStroke) SecondaryEntryGroup(org.freeplane.core.ui.ribbon.RibbonMenuPrimaryContributorFactory.SecondaryEntryGroup) CommandButtonKind(org.pushingpixels.flamingo.api.common.JCommandButton.CommandButtonKind) RibbonActionListener(org.freeplane.core.ui.ribbon.RibbonActionContributorFactory.RibbonActionListener) RibbonApplicationMenuEntrySecondary(org.pushingpixels.flamingo.api.ribbon.RibbonApplicationMenuEntrySecondary)

Aggregations

ActionListener (java.awt.event.ActionListener)1 KeyStroke (javax.swing.KeyStroke)1 AFreeplaneAction (org.freeplane.core.ui.AFreeplaneAction)1 RibbonActionListener (org.freeplane.core.ui.ribbon.RibbonActionContributorFactory.RibbonActionListener)1 SecondaryEntryGroup (org.freeplane.core.ui.ribbon.RibbonMenuPrimaryContributorFactory.SecondaryEntryGroup)1 AbstractCommandButton (org.pushingpixels.flamingo.api.common.AbstractCommandButton)1 JCommandButton (org.pushingpixels.flamingo.api.common.JCommandButton)1 CommandButtonKind (org.pushingpixels.flamingo.api.common.JCommandButton.CommandButtonKind)1 RichTooltip (org.pushingpixels.flamingo.api.common.RichTooltip)1 PopupPanelCallback (org.pushingpixels.flamingo.api.common.popup.PopupPanelCallback)1 RibbonApplicationMenuEntrySecondary (org.pushingpixels.flamingo.api.ribbon.RibbonApplicationMenuEntrySecondary)1