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

pl.fhframework.menu.MenuElement Maven / Gradle / Ivy

package pl.fhframework.menu;

import lombok.Getter;
import lombok.Setter;
import pl.fhframework.core.util.FhmlUtils;
import pl.fhframework.SessionManager;
import pl.fhframework.UserSession;

import java.util.LinkedList;
import java.util.List;
import java.util.concurrent.atomic.AtomicBoolean;

/**
 * Created by mateusz.zaremba
 */
@Getter
@Setter
public class MenuElement {

    private String name;
    private String ref;
    private boolean groupingElement;
    private String icon;
    private List children;
    private AtomicBoolean activityToken;
    private String inputFactory;

    public MenuElement(String name, String ref, String icon, boolean isGroupingElement, AtomicBoolean activityToken, String inputFactory) {
        this.name = name;
        this.ref = ref;
        this.icon = icon;
        this.groupingElement = isGroupingElement;
        this.activityToken = activityToken;
        this.inputFactory = inputFactory;
        children = new LinkedList<>();
    }

    public MenuElement(MenuElement me) {
        this.name = me.name;
        this.ref = me.ref;
        this.icon = me.icon;
        this.groupingElement = me.groupingElement;
        this.activityToken = me.activityToken;
        this.inputFactory = me.inputFactory;
        children = new LinkedList<>();
    }

    public boolean isActive() {
        return activityToken == null || activityToken.get();
    }

    public String getDecoratedName() {
        String decoratedName = name;
        if (!isActive()) {
            decoratedName = FhmlUtils.color(decoratedName, "silver");
        }
        UserSession session = SessionManager.getUserSession();
        if (ref != null && session != null && session.getUseCaseContainer().isUseCaseRunning(ref, false)) {
            decoratedName = FhmlUtils.bold(decoratedName);
        }
        return decoratedName;
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy