package org.freeplane.core.ui.ribbon;
import java.awt.event.ActionListener;
import java.util.Properties;
import org.freeplane.core.ui.AFreeplaneAction;
import org.freeplane.core.util.Compat;
import org.pushingpixels.flamingo.api.common.icon.ResizableIcon;
import org.pushingpixels.flamingo.api.ribbon.RibbonApplicationMenuEntryFooter;
public class RibbonMenuFooterContributorFactory implements IRibbonContributorFactory {
final private RibbonBuilder builder;
/***********************************************************************************
* CONSTRUCTORS
**********************************************************************************/
public RibbonMenuFooterContributorFactory(RibbonBuilder builder) {
this.builder = builder;
}
/***********************************************************************************
* METHODS
**********************************************************************************/
/***********************************************************************************
* REQUIRED METHODS FOR INTERFACES
**********************************************************************************/
public ARibbonContributor getContributor(final Properties attributes) {
String accel = attributes.getProperty("accelerator", null);
final String actionKey = attributes.getProperty("action");
if (actionKey != null) {
if (accel != null) {
if (Compat.isMacOsX()) {
accel = accel.replaceFirst("CONTROL", "META").replaceFirst("control", "meta");
}
builder.getAcceleratorManager().setDefaultAccelerator(actionKey, accel);
}
}
return new ARibbonContributor() {
public String getKey() {
return attributes.getProperty("action");
}
public void contribute(RibbonBuildContext context, ARibbonContributor parent) {
final String key = attributes.getProperty("action");
if(key != null) {
AFreeplaneAction action = context.getBuilder().getMode().getAction(key);
if(action != null) {
String title = RibbonActionContributorFactory.getActionTitle(action);
ResizableIcon icon = RibbonActionContributorFactory.getActionIcon(action);
ActionListener listener = new RibbonActionContributorFactory.RibbonActionListener(action);
final RibbonApplicationMenuEntryFooter entry = new RibbonApplicationMenuEntryFooter(icon, title, listener);
parent.addChild(entry, new ChildProperties(parseOrderSettings(attributes.getProperty("orderPriority", ""))));
}
}
}
public void addChild(Object child, ChildProperties properties) {
}
};
}
}