All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.nasdanika.html.app.viewparts.ActionGroupNavigationPanelViewPart Maven / Gradle / Ivy

package org.nasdanika.html.app.viewparts;

import java.util.List;
import java.util.Map.Entry;

import org.nasdanika.common.ProgressMonitor;
import org.nasdanika.html.Fragment;
import org.nasdanika.html.app.Action;
import org.nasdanika.html.app.Label;
import org.nasdanika.html.app.ViewGenerator;
import org.nasdanika.html.app.ViewPart;
import org.nasdanika.html.app.impl.Util;
import org.nasdanika.html.bootstrap.ActionGroup;
import org.nasdanika.html.bootstrap.Breakpoint;
import org.nasdanika.html.bootstrap.Card;
import org.nasdanika.html.bootstrap.Size;

/**
 * Uses {@link ACTION_GROUP} in the navigation panel.
 * @author Pavel Vlasov
 *
 */
public class ActionGroupNavigationPanelViewPart implements ViewPart {
	
	protected List navigationPanelActions;
	protected Action activeAction;

	public ActionGroupNavigationPanelViewPart(List navigationPanelActions, Action activeAction) {
		this.navigationPanelActions = navigationPanelActions;
		this.activeAction = activeAction;
	}

	@SuppressWarnings("unchecked")
	@Override
	public Object generate(ViewGenerator viewGenerator, ProgressMonitor progressMonitor) {
		Fragment ret = viewGenerator.getHTMLFactory().fragment();
		for (Entry categoryGroup: Util.groupByCategory(navigationPanelActions)) {
			ActionGroup actionGroup = viewGenerator.getBootstrapFactory().actionGroup(true);			
			for (Action child: (List) categoryGroup.getValue()) {
				viewGenerator.add(actionGroup, child, Util.equalOrInPath(activeAction, child));
			}
			if (categoryGroup.getKey() == null) {
				ret.content(actionGroup);
			} else {
				Card categoryCard = viewGenerator.getBootstrapFactory().card();
				categoryCard.margin().top(Breakpoint.DEFAULT, Size.S1);
				Label category = categoryGroup.getKey();
				categoryCard.border(category.getColor());
				categoryCard.getHeader().background(category.getColor());
				viewGenerator.label(category, categoryCard.getHeader().toHTMLElement());
				categoryCard.toHTMLElement().content(actionGroup);
				ret.content(categoryCard);
			}
		}
		return ret;
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy