Search in sources :

Example 1 with Action

use of org.whole.lang.actions.model.Action in project whole by wholeplatform.

the class ActionsE4InterpreterVisitor method visit.

@Override
public void visit(Actions entity) {
    IItemContainer<IAction, ImageDescriptor> container = (IItemContainer<IAction, ImageDescriptor>) getBindings().wGetValue("itemContainer");
    IFillMenuStrategy strategy = (IFillMenuStrategy) getBindings().wGetValue("fillMenuStrategy");
    int size = entity.wSize();
    List<IAction> contributions = new ArrayList<IAction>();
    for (int i = 0; i < size; i++) {
        Action action = (Action) entity.wGet(i);
        if (Matcher.isAssignableAsIsFrom(GroupAction, action)) {
            // FIXME, add a boolean modifier to GroupAction and SubGroupAction
            if (strategy instanceof HierarchicalFillMenuStrategy)
                Collections.sort(contributions, ActionsComparator.instance());
            IAction[] actions = contributions.toArray(new IAction[contributions.size()]);
            strategy.fillMenu(container, ActionSet.create(actions), 0, actions.length);
            contributions.clear();
        }
        IEntity result = evaluate(action);
        if (result == null)
            continue;
        IUpdatableAction updatableAction = (IUpdatableAction) result.wGetValue();
        updatableAction.update();
        if (updatableAction.isEnabled())
            contributions.add(updatableAction);
    }
    // FIXME, add a sort boolean feature to GroupAction and SubGroupAction
    if (strategy instanceof HierarchicalFillMenuStrategy)
        Collections.sort(contributions, ActionsComparator.instance());
    IAction[] actions = contributions.toArray(new IAction[contributions.size()]);
    strategy.fillMenu(container, ActionSet.create(actions), 0, actions.length);
}
Also used : SeparatedAction(org.whole.lang.actions.model.SeparatedAction) IAction(org.eclipse.jface.action.IAction) TemplateAction(org.whole.lang.actions.model.TemplateAction) SubgroupAction(org.whole.lang.actions.model.SubgroupAction) GroupAction(org.whole.lang.actions.model.GroupAction) IUpdatableAction(org.whole.lang.ui.actions.IUpdatableAction) CustomAction(org.whole.lang.actions.model.CustomAction) Action(org.whole.lang.actions.model.Action) PerformAction(org.whole.lang.actions.model.PerformAction) IAction(org.eclipse.jface.action.IAction) IEntity(org.whole.lang.model.IEntity) IItemContainer(org.whole.lang.ui.menu.IItemContainer) ArrayList(java.util.ArrayList) IUpdatableAction(org.whole.lang.ui.actions.IUpdatableAction) IFillMenuStrategy(org.whole.lang.ui.menu.IFillMenuStrategy) HierarchicalFillMenuStrategy(org.whole.lang.ui.menu.HierarchicalFillMenuStrategy) ImageDescriptor(org.eclipse.jface.resource.ImageDescriptor)

Aggregations

ArrayList (java.util.ArrayList)1 IAction (org.eclipse.jface.action.IAction)1 ImageDescriptor (org.eclipse.jface.resource.ImageDescriptor)1 Action (org.whole.lang.actions.model.Action)1 CustomAction (org.whole.lang.actions.model.CustomAction)1 GroupAction (org.whole.lang.actions.model.GroupAction)1 PerformAction (org.whole.lang.actions.model.PerformAction)1 SeparatedAction (org.whole.lang.actions.model.SeparatedAction)1 SubgroupAction (org.whole.lang.actions.model.SubgroupAction)1 TemplateAction (org.whole.lang.actions.model.TemplateAction)1 IEntity (org.whole.lang.model.IEntity)1 IUpdatableAction (org.whole.lang.ui.actions.IUpdatableAction)1 HierarchicalFillMenuStrategy (org.whole.lang.ui.menu.HierarchicalFillMenuStrategy)1 IFillMenuStrategy (org.whole.lang.ui.menu.IFillMenuStrategy)1 IItemContainer (org.whole.lang.ui.menu.IItemContainer)1