use of org.whole.lang.ui.menu.IItemContainer in project whole by wholeplatform.
the class ActionsE4InterpreterVisitor method visit.
@Override
public void visit(GroupAction entity) {
IItemContainer<IAction, ImageDescriptor> container = (IItemContainer<IAction, ImageDescriptor>) getBindings().wGetValue("itemContainer");
String groupName = stringEvaluate(entity.getText());
IFillMenuStrategy strategy;
FillStrategy fillStrategy = entity.getFillStrategy();
if (Matcher.match(Hierarchical, fillStrategy))
strategy = createFillMenuStrategy((Hierarchical) fillStrategy, groupName);
else
strategy = FlatFillMenuStrategy.instance(groupName);
if (EntityUtils.hasParent(entity) && Matcher.match(SeparatedAction, entity.wGetParent()))
container.addSeparator(groupName);
else
container.addGroupMarker(groupName);
getBindings().wEnterScope();
getBindings().wDefValue("fillMenuStrategy", strategy);
lazyEvaluate(entity.getActions());
getBindings().wExitScope();
setResult(null);
}
use of org.whole.lang.ui.menu.IItemContainer in project whole by wholeplatform.
the class ActionsE4InterpreterVisitor method visit.
@Override
public void visit(SubgroupAction entity) {
IItemContainer<IAction, ImageDescriptor> container = (IItemContainer<IAction, ImageDescriptor>) getBindings().wGetValue("itemContainer");
String groupName = stringEvaluate(entity.getText());
IFillMenuStrategy strategy;
FillStrategy fillStrategy = entity.getFillStrategy();
if (Matcher.match(Hierarchical, fillStrategy))
strategy = createFillMenuStrategy((Hierarchical) fillStrategy);
else
strategy = FlatFillMenuStrategy.instance();
IItemContainer<IAction, ImageDescriptor> subContainer = container.addIntoSubContainer(groupName, null);
getBindings().wEnterScope();
getBindings().wDefValue("itemContainer", subContainer);
getBindings().wDefValue("fillMenuStrategy", strategy);
lazyEvaluate(entity.getActions());
getBindings().wExitScope();
setResult(null);
}
use of org.whole.lang.ui.menu.IItemContainer 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);
}
Aggregations