org.ebayopensource.turmeric.policy.adminui.client.view.common.PolicyMenuWidget.java Source code

Java tutorial

Introduction

Here is the source code for org.ebayopensource.turmeric.policy.adminui.client.view.common.PolicyMenuWidget.java

Source

/*******************************************************************************
 * Copyright (c) 2006-2010 eBay Inc. All Rights Reserved.
 * Licensed under the Apache License, Version 2.0 (the "License"); 
 * you may not use this file except in compliance with the License. 
 * You may obtain a copy of the License at 
 *
 *    http://www.apache.org/licenses/LICENSE-2.0
 *******************************************************************************/
package org.ebayopensource.turmeric.policy.adminui.client.view.common;

import java.util.List;

import org.ebayopensource.turmeric.policy.adminui.client.PolicyAdminUIUtil;
import org.ebayopensource.turmeric.policy.adminui.client.model.UserAction;
import org.ebayopensource.turmeric.policy.adminui.client.view.common.PolicyTemplateDisplay.MenuDisplay;

import com.google.gwt.event.logical.shared.HasSelectionHandlers;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.SimplePanel;
import com.google.gwt.user.client.ui.Tree;
import com.google.gwt.user.client.ui.TreeItem;

/**
 * The Class PolicyMenuWidget.
 */
public class PolicyMenuWidget extends AbstractGenericView implements MenuDisplay {

    private SimplePanel mainPanel;
    private Tree tree;
    TreeItem sgParent;
    TreeItem polParent;
    TreeItem polCreateItem;
    TreeItem editHistoryItem;
    TreeItem authPolCreateItem;

    /**
    * Instantiates a new policy menu widget.
    */
    public PolicyMenuWidget() {
        mainPanel = new SimplePanel();
        initWidget(mainPanel);
        initialize();
    }

    /* (non-Javadoc)
     * @see org.ebayopensource.turmeric.policy.adminui.client.Display#activate()
     */
    public void activate() {
        this.asWidget().setVisible(true);
    }

    /* (non-Javadoc)
     * @see org.ebayopensource.turmeric.policy.adminui.client.view.common.AbstractGenericView#initialize()
     */
    @Override
    public void initialize() {
        mainPanel.clear();
        tree = new Tree();
        initSubjectGroup(tree);
        initPolicy(tree);
        initEntityHistory(tree);
        mainPanel.add(tree);
    }

    /**
     * Inits the subject group.
     * 
     * @param tree
     *            the tree
     */
    public void initSubjectGroup(Tree tree) {
        Label sgHeader = new Label(PolicyAdminUIUtil.policyAdminConstants.subjectGroup());
        sgParent = tree.addItem(sgHeader);
        sgParent.setState(true, false);
        TreeItem sgSummaryItem = sgParent.addItem(new Label(PolicyAdminUIUtil.policyAdminConstants.summary()));
        sgSummaryItem.setUserObject(UserAction.SUBJECT_GROUP_SUMMARY);
        TreeItem sgCreateItem = sgParent.addItem(new Label(PolicyAdminUIUtil.policyAdminConstants.create()));
        sgCreateItem.setUserObject(UserAction.SUBJECT_GROUP_CREATE);
        TreeItem sgImportItem = sgParent.addItem(new Label(PolicyAdminUIUtil.policyAdminConstants.importAction()));
        sgImportItem.setUserObject(UserAction.SUBJECT_GROUP_IMPORT);
    }

    /**
     * Inits the policy.
     * 
     * @param tree
     *            the tree
     */
    public void initPolicy(Tree tree) {
        Label policyHeader = new Label(PolicyAdminUIUtil.policyAdminConstants.policies());
        polParent = tree.addItem(policyHeader);
        polParent.setState(true, false);
        TreeItem polSummaryItem = polParent.addItem(new Label(PolicyAdminUIUtil.policyAdminConstants.summary()));
        polSummaryItem.setUserObject(UserAction.POLICY_SUMMARY);
        TreeItem polImportItem = polParent
                .addItem(new Label(PolicyAdminUIUtil.policyAdminConstants.importAction()));
        polImportItem.setUserObject(UserAction.POLICY_IMPORT);
        polCreateItem = polParent.addItem(new Label(PolicyAdminUIUtil.policyAdminConstants.create()));

        authPolCreateItem = polCreateItem.addItem(new Label(PolicyAdminUIUtil.policyAdminConstants.authzPolicy()));
        authPolCreateItem.setUserObject(UserAction.AUTHZ_POLICY_CREATE);
        TreeItem blPolCreateItem = polCreateItem
                .addItem(new Label(PolicyAdminUIUtil.policyAdminConstants.blPolicy()));
        blPolCreateItem.setUserObject(UserAction.BL_POLICY_CREATE);
        TreeItem wlPolCreateItem = polCreateItem
                .addItem(new Label(PolicyAdminUIUtil.policyAdminConstants.wlPolicy()));
        wlPolCreateItem.setUserObject(UserAction.WL_POLICY_CREATE);
        TreeItem rlPolCreateItem = polCreateItem
                .addItem(new Label(PolicyAdminUIUtil.policyAdminConstants.rateLimitingPolicy()));
        rlPolCreateItem.setUserObject(UserAction.RL_POLICY_CREATE);
    }

    /**
     * Inits the entity history.
     * 
     * @param tree
     *            the tree
     */
    public void initEntityHistory(Tree tree) {
        editHistoryItem = tree.addItem(new Label(PolicyAdminUIUtil.policyAdminConstants.changeHistory()));
        editHistoryItem.setState(true, false);
        TreeItem editHistoryViewItem = editHistoryItem
                .addItem(new Label(PolicyAdminUIUtil.policyAdminConstants.view()));
        editHistoryViewItem.setUserObject(UserAction.CHANGE_HISTORY_SUMMARY);
    }

    /**
     * Gets the selector.
     * 
     * @return the selector
     */
    public HasSelectionHandlers<TreeItem> getSelector() {
        return tree;
    }

    /**
     * Sets the actions.
     * 
     * @param actions
     *            the new actions
     */
    public void setActions(List<UserAction> actions) {
        if (tree != null) {
            for (int i = 0; i < tree.getItemCount(); i++) {
                TreeItem item = tree.getItem(i);
                setActions(item, actions);
            }
            tree.ensureSelectedItemVisible();
        }
    }

    /**
     * Sets the selected.
     * 
     * @param action
     *            the new selected
     */
    public void setSelected(UserAction action) {
        if (tree != null) {
            for (int i = 0; i < tree.getItemCount(); i++) {
                TreeItem item = tree.getItem(i);
                setSelected(item, action);
            }
            tree.ensureSelectedItemVisible();
        }
    }

    private void setSelected(TreeItem item, UserAction action) {
        if (item == null || action == null)
            return;

        if (item.getChildCount() > 0) {
            for (int i = 0; i < item.getChildCount(); i++) {
                setSelected(item.getChild(i), action);
            }
        } else {
            if (item.getUserObject() != null && action.equals(item.getUserObject()))
                item.setSelected(true);
            else
                item.setSelected(false);
        }
    }

    private void setActions(TreeItem item, List<UserAction> actions) {
        if (item == null || actions == null)
            return;
        if (item.getChildCount() > 0) {
            for (int i = 0; i < item.getChildCount(); i++)
                setActions(item.getChild(i), actions);
        } else {
            UserAction action = (UserAction) item.getUserObject();
            if (action != null && actions.contains(action))
                item.setVisible(true);
            else
                item.setVisible(false);
        }
    }
}