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

org.wings.session.MenuManager Maven / Gradle / Ivy

The newest version!
package org.wings.session;

import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

import org.wings.SComponent;
import org.wings.SFrame;
import org.wings.SMenu;
import org.wings.SPopupMenu;

public class MenuManager {

    private Map> menuLinkMap = new HashMap<>();

    public void registerMenuLink(SMenu menu, SComponent component) {
        register(menu, component);
    }

    public void registerMenuLink(SPopupMenu menu, SComponent component) {
        register(menu, component);
    }

    private void register(SComponent menu, SComponent component) {
        if (menu == null)
            throw new IllegalArgumentException("Menu must not be null!");

        Set components = getComponents(menu);
        components.add(component);
        menuLinkMap.put(menu, components);
    }

    public void deregisterMenuLink(SMenu menu, SComponent component) {
        deregister(menu, component);
    }

    public void deregisterMenuLink(SPopupMenu menu, SComponent component) {
        deregister(menu, component);
    }

    private void deregister(SComponent menu, SComponent component) {
        if (menu == null)
            throw new IllegalArgumentException("Menu must not be null!");

        Set components = getComponents(menu);
        components.remove(component);

        if (components.isEmpty()) {
            menuLinkMap.remove(menu);
        } else {
            menuLinkMap.put(menu, components);
        }
    }

    public boolean isMenuLinked(SMenu menu) {
        return !getComponents(menu).isEmpty();
    }

    public boolean isMenuLinked(SPopupMenu menu) {
        return !getComponents(menu).isEmpty();
    }

    public Set getMenueLinks(SMenu menu) {
        return getComponents(menu);
    }

    public Set getMenueLinks(SPopupMenu menu) {
        return getComponents(menu);
    }

    public Set getMenues() {
        return menuLinkMap.keySet();
    }

    public Set getMenues(SFrame frame) {
        Set menuesUsedInFrame = new HashSet<>(menuLinkMap.keySet());
        for (Iterator i = menuesUsedInFrame.iterator(); i.hasNext();) {
            if (i.next().getParentFrame() != frame) {
                i.remove();
            }
        }
        return menuesUsedInFrame;
    }

    private Set getComponents(SComponent menu) {
        Set links = menuLinkMap.get(menu);
        if (links == null) {
            links = new HashSet<>(2);
        }
        return links;
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy