use of org.pushingpixels.flamingo.api.ribbon.RibbonApplicationMenuEntryPrimary in project freeplane by freeplane.
the class RibbonMenuPrimaryContributorFactory method getContributor.
/**
*********************************************************************************
* 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() {
RibbonApplicationMenuEntryPrimary entry;
public String getKey() {
String key = attributes.getProperty("action", null);
if (key == null) {
key = attributes.getProperty("name", null);
}
return key;
}
public void contribute(RibbonBuildContext context, ARibbonContributor parent) {
entry = null;
if (context.hasChildren(context.getCurrentPath())) {
if (attributes.get("action") == null) {
AFreeplaneAction action = ActionUtils.getDummyAction(getKey());
entry = createMenuEntry(action, CommandButtonKind.POPUP_ONLY);
} else {
AFreeplaneAction action = context.getBuilder().getMode().getAction(getKey());
if (action == null) {
action = ActionUtils.getDummyAction(getKey());
}
entry = createMenuEntry(action, CommandButtonKind.ACTION_AND_POPUP_MAIN_ACTION);
}
context.processChildren(context.getCurrentPath(), this);
} else {
if (attributes.get("action") == null) {
return;
}
AFreeplaneAction action = context.getBuilder().getMode().getAction(getKey());
if (action == null) {
return;
}
entry = createMenuEntry(action, CommandButtonKind.ACTION_ONLY);
}
KeyStroke ks = context.getBuilder().getAcceleratorManager().getAccelerator(getKey());
if (ks != null) {
AFreeplaneAction action = context.getBuilder().getMode().getAction(getKey());
if (action != null) {
RichTooltip tip = RibbonActionContributorFactory.getRichTooltip(action, ks);
if (tip != null) {
entry.setActionRichTooltip(tip);
}
}
}
parent.addChild(entry, new ChildProperties(parseOrderSettings(attributes.getProperty("orderPriority", ""))));
}
public void addChild(Object child, ChildProperties properties) {
if (child instanceof SecondaryEntryGroup) {
SecondaryEntryGroup group = (SecondaryEntryGroup) child;
entry.addSecondaryMenuGroup(group.getTitle(), group.getEntries().toArray(new RibbonApplicationMenuEntrySecondary[0]));
}
}
};
}
use of org.pushingpixels.flamingo.api.ribbon.RibbonApplicationMenuEntryPrimary in project freeplane by freeplane.
the class LastOpenedMapsRibbonContributorFactory method getContributor.
public ARibbonContributor getContributor(final Properties attributes) {
return new ARibbonContributor() {
@Override
public String getKey() {
return "lastOpenedMaps";
}
private final String menuName = TextUtils.getText(attributes.getProperty("name_ref"));
@Override
public void contribute(RibbonBuildContext context, ARibbonContributor parent) {
RibbonApplicationMenuEntryPrimary primeEntry = new RibbonApplicationMenuEntryPrimary(null, menuName, null, CommandButtonKind.POPUP_ONLY);
primeEntry.setRolloverCallback(getCallback(primeEntry));
parent.addChild(primeEntry, new ChildProperties(parseOrderSettings(attributes.getProperty("orderPriority", ""))));
}
@Override
public void addChild(Object child, ChildProperties properties) {
}
private PrimaryRolloverCallback getCallback(final RibbonApplicationMenuEntryPrimary primeEntry) {
if (rolloverCallback == null) {
rolloverCallback = new PrimaryRolloverCallback() {
public void menuEntryActivated(JPanel targetPanel) {
targetPanel.removeAll();
targetPanel.setLayout(new BorderLayout());
JCommandButtonPanel secondary = new JRibbonApplicationMenuPopupPanelSecondary(primeEntry);
secondary.setToShowGroupLabels(false);
String groupDesc = menuName;
secondary.addButtonGroup(groupDesc);
List<AFreeplaneAction> openActions = lastOpenedList.createOpenLastMapActionList();
for (AFreeplaneAction action : openActions) {
String restoreable = (String) action.getValue(Action.DEFAULT);
StringTokenizer tokens = new StringTokenizer(restoreable, ";");
File file = lastOpenedList.createFileFromRestorable(tokens);
JCommandButton menuButton = new JCommandButton(file.getName());
menuButton.addActionListener(action);
menuButton.setCommandButtonKind(CommandButtonKind.ACTION_ONLY);
menuButton.setHorizontalAlignment(SwingUtilities.LEADING);
menuButton.setPopupOrientationKind(CommandButtonPopupOrientationKind.SIDEWARD);
menuButton.setEnabled(true);
menuButton.setActionRichTooltip(new RichTooltip((String) action.getValue(Action.SHORT_DESCRIPTION), file.toString()));
secondary.addButtonToLastGroup(menuButton);
}
JScrollablePanel<JCommandButtonPanel> scrollPanel = new JScrollablePanel<JCommandButtonPanel>(secondary, ScrollType.VERTICALLY);
targetPanel.add(scrollPanel, BorderLayout.CENTER);
}
};
}
return rolloverCallback;
}
};
}
use of org.pushingpixels.flamingo.api.ribbon.RibbonApplicationMenuEntryPrimary in project freeplane by freeplane.
the class RibbonMenuPrimaryContributorFactory method createMenuEntry.
/**
*********************************************************************************
* METHODS
*********************************************************************************
*/
public static RibbonApplicationMenuEntryPrimary createMenuEntry(final AFreeplaneAction action, CommandButtonKind kind) {
String title = ActionUtils.getActionTitle(action);
ResizableIcon icon = ActionUtils.getActionIcon(action);
RibbonApplicationMenuEntryPrimary entry = new RibbonApplicationMenuEntryPrimary(icon, title, new RibbonActionContributorFactory.RibbonActionListener(action), kind);
return entry;
}
use of org.pushingpixels.flamingo.api.ribbon.RibbonApplicationMenuEntryPrimary in project freeplane by freeplane.
the class RibbonMenuContributorFactory method getContributor.
public ARibbonContributor getContributor(final Properties attributes) {
return new ARibbonContributor() {
private RibbonApplicationMenu menu;
public String getKey() {
return "app_menu";
}
public void contribute(RibbonBuildContext context, ARibbonContributor parent) {
menu = new RibbonApplicationMenu();
context.processChildren(context.getCurrentPath(), this);
parent.addChild(menu, null);
}
public void addChild(Object child, ChildProperties properties) {
if (child instanceof RibbonApplicationMenuEntryFooter) {
menu.addFooterEntry((RibbonApplicationMenuEntryFooter) child);
} else if (child instanceof RibbonApplicationMenuEntryPrimary) {
menu.addMenuEntry((RibbonApplicationMenuEntryPrimary) child);
}
}
};
}
Aggregations