
com.talk2object.plum.viewgeneration.viewbuilder.ActionsViewBuilder Maven / Gradle / Ivy
The newest version!
package com.talk2object.plum.viewgeneration.viewbuilder;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.talk2object.common.SortableItem;
import com.talk2object.plum.interaction.interaction.SortedActions;
import com.talk2object.plum.model.ViewAction;
import com.talk2object.plum.view.component.Component;
import com.talk2object.plum.view.component.menu.Menu;
import com.talk2object.plum.view.component.menu.MenuItem;
import com.talk2object.plum.view.component.window.PackingCase;
import com.talk2object.plum.viewgeneration.AbstractSimpleViewBuilder;
import com.talk2object.plum.viewgeneration.ViewBuildContext;
/**
* create menu view for Actions.
*
* @author jack
*
*/
public class ActionsViewBuilder extends AbstractSimpleViewBuilder {
@Override
public Component build(Object model, ViewBuildContext context) {
PackingCase packingCase = new PackingCase();
SortedActions actions = (SortedActions) model;
// key is menu name. sub menus
Map>> subMenus = new HashMap>>();
buildMenuItems(actions, subMenus);
createMenu(actions, subMenus, packingCase);
return packingCase;
}
protected void buildMenuItems(SortedActions actionList,
Map>> subMenus) {
for (ViewAction action : actionList.getActions()) {
MenuItem menuItem = new MenuItem();
menuItem.setModel(action);
menuItem.updateView();
addMenuItem(action.getCategory(), menuItem, action.getIndex(),
subMenus);
}
for (List> list : subMenus.values()) {
Collections.sort(list);
}
}
protected void createMenu(SortedActions actions,
Map>> subMenus,
PackingCase packingCase) {
// construct menu
List menuNames = new ArrayList();
for (String name : actions.getCategories())
menuNames.add(name);
// other menu names not in annotation append to tail of the name list.
for (String name : subMenus.keySet()) {
if (!menuNames.contains(name)) {
menuNames.add(name);
}
}
for (String menuName : menuNames) {
Component subMenu;
if (!menuName.isEmpty()) {
subMenu = new Menu();
subMenu.setCaption(menuName);
packingCase.addChild(subMenu);
} else {
subMenu = packingCase;
}
List> menuItems = subMenus.get(menuName);
if (menuItems != null) {
for (SortableItem
© 2015 - 2025 Weber Informatics LLC | Privacy Policy