package org.freeplane.core.ui.ribbon; import java.util.ArrayList; import java.util.Collections; import java.util.List; import org.pushingpixels.flamingo.api.ribbon.JRibbon; import org.pushingpixels.flamingo.api.ribbon.RibbonApplicationMenu; import org.pushingpixels.flamingo.api.ribbon.RibbonTask; public class RootContributor extends ARibbonContributor { private final JRibbon ribbon; private final List<ComparableContributorHull<RibbonTask>> tasks = new ArrayList<ComparableContributorHull<RibbonTask>>(); private final List<ComparableContributorHull<RibbonTaskBarComponent>> taskbar = new ArrayList<ComparableContributorHull<RibbonTaskBarComponent>>(); public RootContributor(JRibbon ribbon) { this.ribbon = ribbon; } public String getKey() { return "/"; } public void contribute(RibbonBuildContext context, ARibbonContributor parent) { ribbon.removeAllTaskbarComponents(); ribbon.removeAllTasks(); context.processChildren(context.getCurrentPath(), this); Collections.sort(tasks, comparator); for (ComparableContributorHull<RibbonTask> hull : tasks) { this.ribbon.addTask(hull.getObject()); } Collections.sort(taskbar, comparator); for (ComparableContributorHull<RibbonTaskBarComponent> hull : taskbar) { this.ribbon.addTaskbarComponent(hull.getObject().getComponent()); } } public void addChild(Object child, ChildProperties properties) { if(child instanceof RibbonTask) { tasks.add(new ComparableContributorHull<RibbonTask>((RibbonTask)child, properties.getOrderPriority())); } else if(child instanceof RibbonApplicationMenu) { this.ribbon.setApplicationMenu((RibbonApplicationMenu) child); } else if(child instanceof RibbonTaskBarComponent) { RibbonTaskBarComponent comp = (RibbonTaskBarComponent) child; taskbar.add(new ComparableContributorHull<RibbonTaskBarComponent>(comp, properties.getOrderPriority())); } } }