/*******************************************************************************
* 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);
}
}
}