package org.aplikator.server.descriptor;
import java.util.ArrayList;
import java.util.List;
import org.aplikator.client.shared.descriptor.Access;
import org.aplikator.client.shared.descriptor.MenuDTO;
import org.aplikator.server.data.Context;
public class Menu extends LocalizedServerDescriptorBase {
private List<Action> actions = new ArrayList<Action>();
public Menu(String name) {
super(name);
this.setLocalizationKey(name);
}
public Menu addAction(Action action) {
actions.add(action);
return this;
}
public List<Action> getActions() {
return actions;
}
public MenuDTO getMenuDTO(Context ctx) {
if (getAccess(ctx) == Access.NONE) {
return null;
}
MenuDTO retval = new MenuDTO(this.getId(), this.getLocalizedName(ctx));
for (Action a : actions) {
retval.addAction(a.getActionDTO(ctx));
}
if (retval.getActions().isEmpty()) {
return null;
}
return retval;
}
public Menu addView(View view) {
return addAction(new Action(view.getId(), view.getLocalizationKey(), "list/" + view.getId()));
}
public Menu addFunction(Function function) {
return addAction(new Action(function.getId(), function.getLocalizationKey(), "execute/" + function.getId()));
}
}