/*******************************************************************************
* 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.policy;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.ebayopensource.turmeric.policy.adminui.client.Display;
import org.ebayopensource.turmeric.policy.adminui.client.PolicyAdminUIUtil;
import org.ebayopensource.turmeric.policy.adminui.client.model.UserAction;
import org.ebayopensource.turmeric.policy.adminui.client.model.policy.GenericPolicy;
import org.ebayopensource.turmeric.policy.adminui.client.presenter.policy.PolicySummaryPresenter.PolicySummaryDisplay;
import org.ebayopensource.turmeric.policy.adminui.client.view.ErrorDialog;
import org.ebayopensource.turmeric.policy.adminui.client.view.InfoDialog;
import org.ebayopensource.turmeric.policy.adminui.client.view.common.AbstractGenericView;
import org.ebayopensource.turmeric.policy.adminui.client.view.common.TurmericPager;
import com.google.gwt.cell.client.Cell;
import com.google.gwt.cell.client.Cell.Context;
import com.google.gwt.cell.client.CheckboxCell;
import com.google.gwt.cell.client.ClickableTextCell;
import com.google.gwt.cell.client.DateCell;
import com.google.gwt.cell.client.FieldUpdater;
import com.google.gwt.dom.client.Element;
import com.google.gwt.dom.client.NativeEvent;
import com.google.gwt.event.dom.client.ChangeEvent;
import com.google.gwt.event.dom.client.ChangeHandler;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.dom.client.HasChangeHandlers;
import com.google.gwt.event.dom.client.HasClickHandlers;
import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
import com.google.gwt.user.cellview.client.CellTable;
import com.google.gwt.user.cellview.client.Column;
import com.google.gwt.user.cellview.client.ColumnSortEvent;
import com.google.gwt.user.cellview.client.ColumnSortEvent.ListHandler;
import com.google.gwt.user.cellview.client.Header;
import com.google.gwt.user.cellview.client.TextColumn;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.DisclosurePanel;
import com.google.gwt.user.client.ui.FlexTable;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.Grid;
import com.google.gwt.user.client.ui.HasAlignment;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.ListBox;
import com.google.gwt.user.client.ui.PushButton;
import com.google.gwt.user.client.ui.RadioButton;
import com.google.gwt.user.client.ui.ScrollPanel;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.Widget;
import com.google.gwt.view.client.ListDataProvider;
import com.google.gwt.view.client.MultiSelectionModel;
import com.google.gwt.view.client.ProvidesKey;
import com.google.gwt.view.client.SelectionModel;
/**
* The Class PolicySummaryView.
*/
public class PolicySummaryView extends AbstractGenericView implements
PolicySummaryDisplay {
private final static UserAction SELECTED_ACTION = UserAction.POLICY_SUMMARY;
private FlowPanel mainPanel;
private ScrollPanel scrollPanel;
private Display contentView;
private static interface GetValue<C> {
C getValue(GenericPolicy policy);
}
/**
* PolicySearchWidget
*
*/
private class PolicySearchWidget extends Composite {
private FlowPanel mainPanel;
private FlowPanel radioPanel;
private RadioButton policyCriteriaButton;
private RadioButton resourceCriteriaButton;
private RadioButton subjectCriteriaButton;
private RadioButton subjectGroupCriteriaButton;
private Button searchButton;
TextBox searchBox;
private Label typeLabel;
private Label nameLabel;
private Label opLabel;
private Label rlEffectLabel;
private ListBox typeBox;
private ListBox rsNameBox;
private ListBox rlEffectBox;
private ListBox opBox;
private List<String> policyTypes = new ArrayList<String>();
private List<String> rsNames = new ArrayList<String>();
private List<String> opNames = new ArrayList<String>();
public PolicySearchWidget() {
mainPanel = new FlowPanel();
final FlexTable flex = new FlexTable();
// Search for a Policy by: SubjectType + Name or PolicyType + Name
radioPanel = new FlowPanel();
policyCriteriaButton = new RadioButton("Criteria",
PolicyAdminUIUtil.policyAdminConstants.policyCriteria());
policyCriteriaButton.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
typeLabel.setText(PolicyAdminUIUtil.policyAdminConstants
.policyType());
nameLabel.setText(PolicyAdminUIUtil.policyAdminConstants
.policyName());
searchButton.setText(PolicyAdminUIUtil.policyAdminConstants
.search());
rlEffectLabel.setVisible(false);
rlEffectBox.setVisible(false);
flex.clearCell(1, 5);
flex.setWidget(1, 5, searchBox);
flex.setWidget(1, 8, rlEffectLabel);
flex.setWidget(1, 9, rlEffectBox);
}
});
resourceCriteriaButton = new RadioButton("Criteria",
PolicyAdminUIUtil.policyAdminConstants.resourceCriteria());
resourceCriteriaButton.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
typeLabel.setText(PolicyAdminUIUtil.policyAdminConstants
.resourceType());
nameLabel.setText(PolicyAdminUIUtil.policyAdminConstants
.resourceName());
searchButton.setText(PolicyAdminUIUtil.policyAdminConstants
.search());
flex.clearCell(1, 5);
flex.setWidget(1, 5, rsNameBox);
flex.setWidget(1, 8, opLabel);
flex.setWidget(1, 9, opBox);
}
});
subjectCriteriaButton = new RadioButton("Criteria",
PolicyAdminUIUtil.policyAdminConstants.subjectCriteria());
subjectCriteriaButton.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
typeLabel.setText(PolicyAdminUIUtil.policyAdminConstants
.subjectType());
nameLabel.setText(PolicyAdminUIUtil.policyAdminConstants
.subjectName());
searchButton.setText(PolicyAdminUIUtil.policyAdminConstants
.search());
rlEffectLabel.setVisible(false);
rlEffectBox.setVisible(false);
flex.clearCell(1, 5);
flex.setWidget(1, 5, searchBox);
flex.clearCell(1, 8);
flex.clearCell(1, 9);
}
});
subjectGroupCriteriaButton = new RadioButton("Criteria",
PolicyAdminUIUtil.policyAdminConstants
.subjectGroupCriteria());
subjectGroupCriteriaButton.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
typeLabel.setText(PolicyAdminUIUtil.policyAdminConstants
.subjectType());
nameLabel.setText(PolicyAdminUIUtil.policyAdminConstants
.subjectName());
searchButton.setText(PolicyAdminUIUtil.policyAdminConstants
.search());
rlEffectLabel.setVisible(false);
rlEffectBox.setVisible(false);
flex.clearCell(1, 5);
flex.setWidget(1, 5, searchBox);
flex.clearCell(1, 8);
flex.clearCell(1, 9);
}
});
radioPanel.add(policyCriteriaButton);
radioPanel.add(resourceCriteriaButton);
radioPanel.add(subjectCriteriaButton);
radioPanel.add(subjectGroupCriteriaButton);
typeLabel = new Label(
PolicyAdminUIUtil.policyAdminConstants.policyType());
nameLabel = new Label(
PolicyAdminUIUtil.policyAdminConstants.policyName());
opLabel = new Label(
PolicyAdminUIUtil.policyAdminConstants.operationName());
rlEffectLabel = new Label(
PolicyAdminUIUtil.policyAdminConstants.effect());
typeBox = new ListBox(false);
rsNameBox = new ListBox(false);
rlEffectBox = new ListBox(false);
opBox = new ListBox(false);
searchButton = new Button(
PolicyAdminUIUtil.policyAdminConstants.search());
searchBox = new TextBox();
flex.setWidget(0, 1, radioPanel);
flex.getFlexCellFormatter().setColSpan(0, 1, 8);
flex.setWidget(1, 0, typeLabel);
flex.getCellFormatter().setWidth(1, 0, "100px");
flex.setWidget(1, 1, typeBox);
flex.setWidget(1, 4, nameLabel);
flex.setWidget(1, 5, searchBox);
flex.setWidget(1, 12, searchButton);
mainPanel.add(flex);
initWidget(mainPanel);
}
public void clear() {
// select nothing
policyCriteriaButton.setValue(false);
resourceCriteriaButton.setValue(false);
subjectCriteriaButton.setValue(false);
subjectGroupCriteriaButton.setValue(false);
opBox.clear();
opBox.setEnabled(false);
searchBox.setText("");
}
public HasClickHandlers getSubjectCriteriaButton() {
return subjectCriteriaButton;
}
public HasClickHandlers getPolicyCriteriaButton() {
return policyCriteriaButton;
}
public HasClickHandlers getResourceCriteriaButton() {
return resourceCriteriaButton;
}
public HasClickHandlers getSubjectGroupCriteriaButton() {
return subjectGroupCriteriaButton;
}
public HasClickHandlers getSearchButton() {
return searchButton;
}
public void setSubjectCriteriaEnabled(boolean enabled) {
subjectCriteriaButton.setValue(enabled);
}
public boolean isPolicyCriteriaEnabled() {
return policyCriteriaButton.getValue() == true;
}
public boolean isSubjectCriteriaEnabled() {
return subjectCriteriaButton.getValue() == true;
}
public boolean isSubjectGroupCriteriaEnabled() {
return subjectGroupCriteriaButton.getValue() == true;
}
public boolean isResourceCriteriaEnabled() {
return resourceCriteriaButton.getValue() == true;
}
public void setPolicyCriteriaEnabled(boolean enabled) {
policyCriteriaButton.setValue(enabled);
}
public void setSubjectGroupCriteriaEnabled(boolean enabled) {
subjectGroupCriteriaButton.setValue(enabled);
}
public void setResourceCriteriaEnabled(boolean enabled) {
resourceCriteriaButton.setValue(enabled);
}
public void setRsNames(List<String> names) {
rsNames = names;
}
public void setRLEffect(List<String> effects) {
rlEffectBox.clear();
for (String effect : effects) {
rlEffectBox.addItem(effect);
}
}
public void setOpNames(List<String> names) {
opNames = names;
}
public String getSearchTerm() {
return searchBox.getValue();
}
public List<String> getPolicyTypes() {
return policyTypes;
}
public void setPolicyTypes(List<String> types) {
policyTypes = types;
}
public String getSelectedType() {
if (typeBox.getSelectedIndex() >= 0)
return typeBox.getItemText(typeBox.getSelectedIndex());
else
return null;
}
public String getSelectedEffect() {
if (rlEffectBox.getSelectedIndex() >= 0)
return rlEffectBox.getItemText(rlEffectBox.getSelectedIndex());
else
return null;
}
public void setAvailableTypes(List<String> types) {
// enable the selection of a subject type
typeBox.clear();
for (String s : types) {
typeBox.addItem(s);
}
searchBox.setText("");
}
public void setSelectedType(String type) {
if (type == null)
return;
int idx = -1;
for (int i = 0; i < typeBox.getItemCount() && idx < 0; i++) {
if (typeBox.getItemText(i).equals(type))
idx = i;
}
if (idx >= 0)
typeBox.setSelectedIndex(idx);
}
public String getSelectedRsName() {
if (rsNameBox.getSelectedIndex() >= 0)
return rsNameBox.getItemText(rsNameBox.getSelectedIndex());
else
return null;
}
public void setRLEffectBoxVisible(boolean b) {
rlEffectBox.setVisible(b);
}
public void setRLEffectLabelVisible(boolean b) {
rlEffectLabel.setVisible(b);
}
public ListBox getRsNameBox() {
return rsNameBox;
}
public ListBox getAvailableTypeBox() {
return typeBox;
}
public ListBox getOperationNameBox() {
return opBox;
}
public void setAvailableRsNames() {
rsNameBox.clear();
for (String name : rsNames) {
rsNameBox.addItem(name);
}
}
public void setSelectedRsName(String name) {
if (name == null)
return;
int idx = -1;
for (int i = 0; i < rsNameBox.getItemCount() && idx < 0; i++) {
if (rsNameBox.getItemText(i).equals(name))
idx = i;
}
if (idx >= 0)
rsNameBox.setSelectedIndex(idx);
}
public String getSelectedOp() {
if (opBox.getSelectedIndex() >= 0)
return opBox.getItemText(opBox.getSelectedIndex());
else
return null;
}
public void setAvailableOps() {
opBox.clear();
for (String name : opNames) {
opBox.addItem(name);
}
}
public void setSelectedOp(String op) {
if (op == null)
return;
int idx = -1;
for (int i = 0; i < opBox.getItemCount() && idx < 0; i++) {
if (opBox.getItemText(i).equals(op))
idx = i;
}
if (idx >= 0)
opBox.setSelectedIndex(idx);
}
public void setSelectedSearchTerm(String term) {
searchBox.setValue((term == null ? "" : term));
}
}
private class ContentView extends AbstractGenericView implements Display {
private FlowPanel mainPanel;
private CellTable<GenericPolicy> cellTable;
ProvidesKey<GenericPolicy> keyProvider;
DisclosurePanel searchPanel;
PolicySearchWidget searchWidget;
/*
* GWT clone not supported yet. So just one action row implemented now
* http://code.google.com/p/google-web-toolkit/issues/detail?id=5068#c1
*/
ListBox actionCombo = new ListBox();
PushButton actionButton = new PushButton(
PolicyAdminUIUtil.constants.apply());
final Map<GenericPolicy, UserAction> pendingActions = new HashMap<GenericPolicy, UserAction>();
final Map<GenericPolicy, List<UserAction>> permittedActions = new HashMap<GenericPolicy, List<UserAction>>();
ListDataProvider<GenericPolicy> dataProvider;
/*
* columns
*/
Column<GenericPolicy, String> policyNameCol;
TextColumn<GenericPolicy> policyTypeCol;
TextColumn<GenericPolicy> policyStatusCol;
TextColumn<GenericPolicy> policyCreatedByCol;
TextColumn<GenericPolicy> policyModifiedByCol;
Column<GenericPolicy, Date> policyModifiedDateCol;
/**
* ActionPermissionCheckboxCell
*
*/
public class ActionPermissionCheckboxCell extends
CustomPermissionCheckboxCell<GenericPolicy, Boolean> {
/**
* @param action
* @param pendingActions
* @param permittedActions
*/
public ActionPermissionCheckboxCell(UserAction action,
Map<GenericPolicy, UserAction> pendingActions,
Map<GenericPolicy, List<UserAction>> permittedActions) {
super(action, pendingActions, permittedActions);
}
public void render(GenericPolicy value, Object key,
SafeHtmlBuilder sb) {
if (value == null)
return;
// if the user has permission for the action, then render
// according to
// the boolean value else render as disabled
List<UserAction> permitted = permittedActions.get(value);
UserAction pending = pendingActions.get(value);
boolean isChecked = false;
boolean isDisabled = false;
if (permitted != null && permitted.contains(this.action)) {
// The user is permitted to perform the enable/disable
// action
// Check what the enable/disable state of the policy is and
// render appropriately
boolean isEnabled = value.getEnabled();
switch (action) {
case POLICY_ENABLE: {
// this is the enable checkbox, and the policy is
// already enabled, render as disabled
if (isEnabled) {
isChecked = false;
isDisabled = true;
} else {
// policy is not already enabled, decide whether to
// render as checked or not
// based on if there is a pending action to enable
// it
isDisabled = false;
isChecked = (pending != null
&& pending.equals(action) ? true : false);
}
break;
}
case POLICY_DISABLE: {
// if this is the disable checkbox, and the policy is
// already disabled, render as disabled
if (!isEnabled) {
isChecked = false;
isDisabled = true;
} else {
// the policy is not already disabled, decide
// whether to render it as checked or not
// based on if there is a pending action to disable
// it
isDisabled = false;
isChecked = (pending != null
&& pending.equals(action) ? true : false);
}
break;
}
case POLICY_DELETE: {
// this is the delete checkbox, and the policy is
// enabled, it cannot be deleted
isDisabled = false;
isChecked = (pending != null
&& pending.equals(action) ? true : false);
break;
}
case POLICY_EXPORT: {
isDisabled = false;
isChecked = (pending != null
&& pending.equals(action) ? true : false);
break;
}
}
} else {
// the user is not permitted to perform the enable or
// disable action, so render it always as
// disabled.
isDisabled = true;
isChecked = false;
}
sb.appendHtmlConstant("<input type='checkbox' "
+ (isDisabled ? "disabled=disabled" : "")
+ (isChecked ? " checked " : "") + "></input>");
}
}
public ContentView() {
mainPanel = new FlowPanel();
initWidget(mainPanel);
initialize();
}
@SuppressWarnings("unchecked")
public void setPolicies(List<GenericPolicy> policies) {
cellTable.setRowCount(0);
int i = 0;
while (cellTable.getColumnCount() != 0) {
cellTable.removeColumn(i);
};
final List<GenericPolicy> list;
if (policies == null) {
list = Collections.emptyList();
} else {
list = policies;
// date modified sorting
Comparator timeAscComp = new Comparator<GenericPolicy>() {
public int compare(GenericPolicy o1, GenericPolicy o2) {
if (o1 == o2) {
return 0;
}
// Compare the time columns.
if (o1 != null) {
return (o2 != null) ? o1
.getLastModified()
.compareTo(o2.getLastModified()) : 1;
}
return -1;
}
};
Collections.sort(list, timeAscComp);
}
// Attach a column sort handler to the ListDataProvider to sort the
// list.
ListHandler<GenericPolicy> sortHandler = new ListHandler<GenericPolicy>(
list){
@SuppressWarnings({ "rawtypes", "unchecked" })
@Override
public void onColumnSort(ColumnSortEvent event) {
if (policyNameCol.hashCode() == event.getColumn().hashCode()) {
// name sorting
Comparator nameAscComp = new Comparator<GenericPolicy>() {
public int compare(GenericPolicy o1, GenericPolicy o2) {
if (o1 == o2) {
return 0;
}
// Compare the name columns.
if (o1 != null) {
return (o2 != null) ? o1.getName()
.compareToIgnoreCase(o2.getName())
: 1;
}
return -1;
}
};
Comparator nameDescComp = new Comparator<GenericPolicy>() {
public int compare(GenericPolicy o1, GenericPolicy o2) {
if (o1 == o2) {
return 0;
}
// Compare the name columns.
if (o2 != null) {
return (o1 != null) ? o2.getName()
.compareToIgnoreCase(o1.getName())
: 1;
}
return -1;
}
};
if (event.isSortAscending()) {
Collections.sort(list, nameDescComp);
} else {
Collections.sort(list, nameAscComp);
}
} else if (policyTypeCol.hashCode() == event.getColumn()
.hashCode()) {
// type sorting
Comparator typeAscComp = new Comparator<GenericPolicy>() {
public int compare(GenericPolicy o1, GenericPolicy o2) {
if (o1 == o2) {
return 0;
}
// Compare the type columns.
if (o1 != null) {
return (o2 != null) ? o1.getType()
.compareToIgnoreCase(o2.getType())
: 1;
}
return -1;
}
};
Comparator typeDescComp = new Comparator<GenericPolicy>() {
public int compare(GenericPolicy o1, GenericPolicy o2) {
if (o1 == o2) {
return 0;
}
// Compare the type columns.
if (o2 != null) {
return (o1 != null) ? o2.getType()
.compareToIgnoreCase(o1.getType())
: 1;
}
return -1;
}
};
if (event.isSortAscending()) {
Collections.sort(list, typeDescComp);
} else {
Collections.sort(list, typeAscComp);
}
} else if (policyStatusCol.hashCode() == event.getColumn()
.hashCode()) {
// status sorting
Comparator statusAscComp = new Comparator<GenericPolicy>() {
public int compare(GenericPolicy o1, GenericPolicy o2) {
if (o1 == o2) {
return 0;
}
// Compare the status columns.
if (o1 != null) {
return (o2 != null) ? String.valueOf(o1.getEnabled())
.compareToIgnoreCase(String.valueOf(o2.getEnabled()))
: 1;
}
return -1;
}
};
Comparator statusDescComp = new Comparator<GenericPolicy>() {
public int compare(GenericPolicy o1, GenericPolicy o2) {
if (o1 == o2) {
return 0;
}
// Compare the status columns.
if (o2 != null) {
return (o1 != null) ? String.valueOf(o2.getEnabled())
.compareToIgnoreCase(String.valueOf(o1.getEnabled()))
: 1;
}
return -1;
}
};
if (event.isSortAscending()) {
Collections.sort(list, statusDescComp);
} else {
Collections.sort(list, statusAscComp);
}
} else if (policyCreatedByCol.hashCode() == event
.getColumn().hashCode()) {
// creator sorting
Comparator creatorAscComp = new Comparator<GenericPolicy>() {
public int compare(GenericPolicy o1, GenericPolicy o2) {
if (o1 == o2) {
return 0;
}
// Compare the creator columns.
if (o1 != null) {
return (o2 != null) ? o1.getCreatedBy()
.compareToIgnoreCase(
o2.getCreatedBy()) : 1;
}
return -1;
}
};
Comparator creatorDescComp = new Comparator<GenericPolicy>() {
public int compare(GenericPolicy o1, GenericPolicy o2) {
if (o1 == o2) {
return 0;
}
// Compare the creator columns.
if (o2 != null) {
return (o1 != null) ? o2.getCreatedBy()
.compareToIgnoreCase(
o1.getCreatedBy()) : 1;
}
return -1;
}
};
if (event.isSortAscending()) {
Collections.sort(list, creatorDescComp);
} else {
Collections.sort(list, creatorAscComp);
}
} else if (policyModifiedByCol.hashCode() == event
.getColumn().hashCode()) {
// modifier sorting
Comparator modifierAscComp = new Comparator<GenericPolicy>() {
public int compare(GenericPolicy o1, GenericPolicy o2) {
if (o1 == o2) {
return 0;
}
// Compare the updater columns.
if (o1 != null && o1.getLastModifiedBy() != null ) {
return (o2 != null && o2.getLastModifiedBy() != null ) ? o1
.getLastModifiedBy()
.compareToIgnoreCase(
o2.getLastModifiedBy()) : 1;
}
return -1;
}
};
Comparator modifierDescComp = new Comparator<GenericPolicy>() {
public int compare(GenericPolicy o1, GenericPolicy o2) {
if (o1 == o2) {
return 0;
}
// Compare the updater columns.
if (o2 != null && o2.getLastModifiedBy() != null) {
return (o1 != null && o1.getLastModifiedBy() != null ) ? o2
.getLastModifiedBy()
.compareToIgnoreCase(
o1.getLastModifiedBy()) : 1;
}
return -1;
}
};
if (event.isSortAscending()) {
Collections.sort(list, modifierDescComp);
} else {
Collections.sort(list, modifierAscComp);
}
} else if (policyModifiedDateCol.hashCode() == event
.getColumn().hashCode()) {
// date modified sorting
Comparator timeAscComp = new Comparator<GenericPolicy>() {
public int compare(GenericPolicy o1, GenericPolicy o2) {
if (o1 == o2) {
return 0;
}
// Compare the time columns.
if (o1 != null) {
return (o2 != null) ? o1
.getLastModified()
.compareTo(o2.getLastModified()) : 1;
}
return -1;
}
};
Comparator timeDescComp = new Comparator<GenericPolicy>() {
public int compare(GenericPolicy o1, GenericPolicy o2) {
if (o1 == o2) {
return 0;
}
// Compare the time columns.
if (o2 != null) {
return (o1 != null) ? o2
.getLastModified()
.compareTo(
o1.getLastModified()) : 1;
}
return -1;
}
};
if (event.isSortAscending()) {
Collections.sort(list, timeDescComp);
} else {
Collections.sort(list, timeAscComp);
}
}
dataProvider.setList(list);
dataProvider.refresh();
cellTable.redraw();
}
};
dataProvider.setList(list);
final SelectionModel<GenericPolicy> selectionModel = new MultiSelectionModel<GenericPolicy>(
keyProvider);
initTableColumns(selectionModel, sortHandler);
// We know that the data is sorted alphabetically by default.
cellTable.getColumnSortList().push(policyNameCol);
dataProvider.refresh();
}
public void setUserActions(GenericPolicy policy,
List<UserAction> enabledActions) {
if (policy == null)
return;
if (enabledActions == null)
permittedActions.remove(policy);
else
permittedActions.put(policy, new ArrayList<UserAction>(
enabledActions));
if (cellTable != null)
cellTable.redraw();
}
public Map<GenericPolicy, UserAction> getPendingActions() {
return pendingActions;
}
public void activate() {
// do nothing for now
}
@Override
public void initialize() {
mainPanel.clear();
updateCombo();
actionButton.setEnabled(false);
// top part of contentPanel is a disclosure panel with a search
// feature
searchWidget = new PolicySearchWidget();
searchPanel = new DisclosurePanel(
PolicyAdminUIUtil.policyAdminConstants.search());
searchPanel.setContent(searchWidget);
// bottom part of panel is a table with search results
Grid summaryGrid = new Grid(3, 1);
summaryGrid.setStyleName("sggrid");
/*
* Table section
*/
keyProvider = new ProvidesKey<GenericPolicy>() {
public Object getKey(GenericPolicy policy) {
return policy == null ? null : policy.getId();
}
};
cellTable = new CellTable<GenericPolicy>(keyProvider);
dataProvider = new ListDataProvider<GenericPolicy>();
dataProvider.addDataDisplay(cellTable);
/*
* ends table section
*/
actionCombo.addChangeHandler(new ChangeHandler() {
public void onChange(ChangeEvent paramChangeEvent) {
pendingActions.clear();
setPolicies(dataProvider.getList());
actionButton.setEnabled(pendingActions.size()>0);
}
});
TurmericPager pagerAbove = new TurmericPager();
pagerAbove.setDisplay(cellTable);
TurmericPager pagerBelow = new TurmericPager();
pagerBelow.setDisplay(cellTable);
FlexTable actionTableAbove = new FlexTable();
actionTableAbove.setWidget(0, 0, actionCombo);
actionTableAbove.setWidget(0, 1, actionButton);
actionTableAbove.setWidget(0, 2, pagerAbove);
actionTableAbove.getCellFormatter().setWidth(0,2,"600px");
actionTableAbove.getCellFormatter().setHorizontalAlignment(0,2,HasAlignment.ALIGN_RIGHT);
summaryGrid.setWidget(0, 0, actionTableAbove);
summaryGrid.setWidget(1, 0, cellTable);
mainPanel.addStyleName("policy-summary");
mainPanel.add(searchPanel);
searchPanel.addStyleName("policy-content");
summaryGrid.addStyleName("policy-content");
mainPanel.add(summaryGrid);
}
private <C> Column<GenericPolicy, C> createCell(Cell<C> cell,final GetValue<C> getter,
FieldUpdater<GenericPolicy, C> fieldUpdater) {
Column<GenericPolicy, C> column = new Column<GenericPolicy, C>(cell) {
@Override
public C getValue(GenericPolicy object) {
return getter.getValue(object);
}
@Override
public void render(Cell.Context context, GenericPolicy object, SafeHtmlBuilder sb)
{
sb.appendHtmlConstant("<a href='javascript:void(0);'>");
super.render(context, object, sb);
sb.appendHtmlConstant("</a>");
}
};
column.setFieldUpdater(fieldUpdater);
return column;
}
private void initTableColumns(final SelectionModel<GenericPolicy> selectionModel,
ListHandler<GenericPolicy> sortHandler ) {
//checkbox column
final Column<GenericPolicy, GenericPolicy> checkColumn = new Column<GenericPolicy, GenericPolicy>(
new ActionPermissionCheckboxCell(UserAction.valueOf(
this.actionCombo.getValue(this.actionCombo.getSelectedIndex())),
pendingActions, permittedActions)) {
public GenericPolicy getValue(GenericPolicy policy) {
return policy;
}
};
checkColumn.setFieldUpdater(new FieldUpdater<GenericPolicy, GenericPolicy>() {
public void update(int arg0, GenericPolicy arg1,GenericPolicy arg2) {
if (pendingActions.keySet().contains(arg1)) {
pendingActions.remove(arg1);
}else {
// Called when the user clicks on a checkbox.
pendingActions.put(arg1, UserAction.valueOf(
actionCombo.getValue(actionCombo.getSelectedIndex())));
}
actionButton.setEnabled(pendingActions.size()>0);
cellTable.redraw();
}
});
final CheckboxCell cb = new CheckboxCell();
Header<Boolean> hdr = new Header<Boolean>(cb) {
boolean selected = false;
@Override
public void onBrowserEvent(Context context, Element elem,
NativeEvent event) {
super.onBrowserEvent(context, elem, event);
selected=!selected;
final String action = actionCombo.getValue(actionCombo.getSelectedIndex());
for (GenericPolicy visibleItem : cellTable.getVisibleItems()) {
if (!selected && pendingActions.keySet().contains(visibleItem)) {
pendingActions.remove(visibleItem);
//to draw as enable user should has privileges, checkAll must be selected,
//and do not duplicate an entry en the pending actions set
}else if (permittedActions.get(visibleItem).contains(UserAction.valueOf(action)) &&
selected && !pendingActions.keySet().contains(visibleItem) ) {
//also, the action should be a valid action, ie: enabling just for disabled and viceversa
if(! (visibleItem.getEnabled() && UserAction.valueOf(action).compareTo(UserAction.POLICY_ENABLE)==0
|| !visibleItem.getEnabled() && UserAction.valueOf(action).compareTo(UserAction.POLICY_DISABLE)==0)){
pendingActions.put(visibleItem, UserAction.valueOf(
actionCombo.getValue(actionCombo.getSelectedIndex())));
}
}
}
actionButton.setEnabled(pendingActions.size()>0);
cellTable.redraw();
}
@Override
public Boolean getValue() {
return false;
}
};
cellTable.addColumn(checkColumn, hdr);
// policyName.
ClickableTextCell policyNameCellClickable = new ClickableTextCell();
policyNameCol = createCell(policyNameCellClickable, new GetValue<String>(){
public String getValue(GenericPolicy policy) {
return policy.getName() ;
}
}, new FieldUpdater<GenericPolicy, String>() {
public void update(int index, GenericPolicy policy, String value) {
pendingActions.clear();
if(permittedActions.containsKey(policy) && permittedActions.get(policy).contains(UserAction.POLICY_EDIT)){
pendingActions.put(policy, UserAction.POLICY_EDIT);
}else{
pendingActions.put(policy, UserAction.POLICY_VIEW);
}
actionButton.fireEvent(new ClickEvent(){});
pendingActions.clear();
}
});
policyNameCol.setSortable(true);
cellTable.addColumn(policyNameCol, PolicyAdminUIUtil.policyAdminConstants.policyName());
cellTable.getColumnSortList().push(policyNameCol);
// policy type
policyTypeCol = new TextColumn<GenericPolicy>() {
public String getValue(GenericPolicy policy) {
return (policy == null ? null : policy.getType());
}
};
policyTypeCol.setSortable(true);
cellTable.addColumn(policyTypeCol,
PolicyAdminUIUtil.policyAdminConstants.policyType());
// policy status
policyStatusCol = new TextColumn<GenericPolicy>() {
public String getValue(GenericPolicy policy) {
return (policy == null ? null
: policy.getEnabled() ? "ENABLED" : "DISABLED");
}
};
policyStatusCol.setSortable(true);
cellTable.addColumn(policyStatusCol,
PolicyAdminUIUtil.policyAdminConstants.status());
// created by
policyCreatedByCol = new TextColumn<GenericPolicy>() {
public String getValue(GenericPolicy policy) {
return (policy == null ? null : policy.getCreatedBy());
}
};
policyCreatedByCol.setSortable(true);
cellTable.addColumn(policyCreatedByCol,
PolicyAdminUIUtil.policyAdminConstants.createdBy());
// Last modified by
policyModifiedByCol = new TextColumn<GenericPolicy>() {
public String getValue(GenericPolicy policy) {
return (policy == null ? null : policy.getLastModifiedBy());
}
};
policyModifiedByCol.setSortable(true);
cellTable.addColumn(policyModifiedByCol,
PolicyAdminUIUtil.policyAdminConstants.lastModifiedBy());
// Last modified date
policyModifiedDateCol = new Column<GenericPolicy, Date>(
new DateCell(PolicyAdminUIUtil.tzTimeFormat)) {
public Date getValue(GenericPolicy policy) {
return (policy == null ? null : policy.getLastModified());
}
};
policyModifiedDateCol.setSortable(true);
cellTable.addColumn(policyModifiedDateCol,
PolicyAdminUIUtil.policyAdminConstants.lastModifiedTime());
cellTable.addColumnSortHandler(sortHandler);
}
public HasClickHandlers getActionButtonAbove() {
return actionButton;
}
private void updateCombo() {
actionCombo.clear();
actionCombo
.addItem(PolicyAdminUIUtil.policyAdminConstants.enable(), UserAction.POLICY_ENABLE.toString());
actionCombo.addItem(PolicyAdminUIUtil.policyAdminConstants
.disable(), UserAction.POLICY_DISABLE.toString());
actionCombo
.addItem(PolicyAdminUIUtil.policyAdminConstants.delete(), UserAction.POLICY_DELETE.toString());
actionCombo
.addItem(PolicyAdminUIUtil.policyAdminConstants.export(), UserAction.POLICY_EXPORT.toString());
}
}
/**
* Instantiates a new policy summary view.
*/
public PolicySummaryView() {
scrollPanel = new ScrollPanel();
mainPanel = new FlowPanel();
scrollPanel.add(mainPanel);
initWidget(scrollPanel);
initialize();
}
/* (non-Javadoc)
* @see org.ebayopensource.turmeric.policy.adminui.client.presenter.policy.PolicySummaryPresenter.PolicySummaryDisplay#error(java.lang.String)
*/
public void error(String msg) {
ErrorDialog dialog = new ErrorDialog(true);
dialog.setMessage(msg);
dialog.getDialog().center();
dialog.show();
}
/* Info alert messages
* @see org.ebayopensource.turmeric.policy.adminui.client.presenter.policy.PolicySummaryPresenter.PolicySummaryDisplay#info(java.lang.String)
*/
public void info(String msg) {
InfoDialog dialog = new InfoDialog(true);
dialog.setMessage(msg);
dialog.getDialog().center();
dialog.show();
}
/* (non-Javadoc)
* @see org.ebayopensource.turmeric.policy.adminui.client.view.common.AbstractGenericView#initialize()
*/
@Override
public void initialize() {
mainPanel.clear();
mainPanel.setWidth("100%");
mainPanel.add(initContentView());
}
/**
* Inits the content view.
*
* @return the widget
*/
protected Widget initContentView() {
ScrollPanel actionPanel = new ScrollPanel();
contentView = new ContentView();
actionPanel.add(contentView.asWidget());
return actionPanel;
}
/* (non-Javadoc)
* @see org.ebayopensource.turmeric.policy.adminui.client.Display#activate()
*/
public void activate() {
contentView.activate();
this.setVisible(true);
}
/* (non-Javadoc)
* @see org.ebayopensource.turmeric.policy.adminui.client.view.common.PolicyTemplateDisplay.PolicyPageTemplateDisplay#getContentView()
*/
public Display getContentView() {
return contentView;
}
/* (non-Javadoc)
* @see org.ebayopensource.turmeric.policy.adminui.client.presenter.policy.PolicySummaryPresenter.PolicySummaryDisplay#setPermittedActions(org.ebayopensource.turmeric.policy.adminui.client.model.policy.GenericPolicy, java.util.List)
*/
public void setPermittedActions(GenericPolicy policy,
List<UserAction> permittedActions) {
((ContentView) contentView).setUserActions(policy, permittedActions);
}
/* (non-Javadoc)
* @see org.ebayopensource.turmeric.policy.adminui.client.presenter.policy.PolicySummaryPresenter.PolicySummaryDisplay#setPolicies(java.util.List)
*/
public void setPolicies(List<GenericPolicy> policies) {
((ContentView) contentView).setPolicies(policies);
}
/* (non-Javadoc)
* @see org.ebayopensource.turmeric.policy.adminui.client.presenter.policy.PolicySummaryPresenter.PolicySummaryDisplay#getSearchButton()
*/
public HasClickHandlers getSearchButton() {
return ((ContentView) contentView).searchWidget.getSearchButton();
}
/* (non-Javadoc)
* @see org.ebayopensource.turmeric.policy.adminui.client.presenter.policy.PolicySummaryPresenter.PolicySummaryDisplay#getSearchTerm()
*/
public String getSearchTerm() {
return ((ContentView) contentView).searchWidget.getSearchTerm();
}
/* (non-Javadoc)
* @see org.ebayopensource.turmeric.policy.adminui.client.presenter.policy.PolicySummaryPresenter.PolicySummaryDisplay#getSelectedType()
*/
public String getSelectedType() {
return ((ContentView) contentView).searchWidget.getSelectedType();
}
/* (non-Javadoc)
* @see org.ebayopensource.turmeric.policy.adminui.client.presenter.policy.PolicySummaryPresenter.PolicySummaryDisplay#getSelectedEffect()
*/
public String getSelectedEffect() {
return ((ContentView) contentView).searchWidget.getSelectedEffect();
}
/* (non-Javadoc)
* @see org.ebayopensource.turmeric.policy.adminui.client.presenter.policy.PolicySummaryPresenter.PolicySummaryDisplay#isPolicyCriteriaEnabled()
*/
public boolean isPolicyCriteriaEnabled() {
return ((ContentView) contentView).searchWidget
.isPolicyCriteriaEnabled();
}
/* (non-Javadoc)
* @see org.ebayopensource.turmeric.policy.adminui.client.presenter.policy.PolicySummaryPresenter.PolicySummaryDisplay#isResourceCriteriaEnabled()
*/
public boolean isResourceCriteriaEnabled() {
return ((ContentView) contentView).searchWidget
.isResourceCriteriaEnabled();
}
/* (non-Javadoc)
* @see org.ebayopensource.turmeric.policy.adminui.client.presenter.policy.PolicySummaryPresenter.PolicySummaryDisplay#isSubjectCriteriaEnabled()
*/
public boolean isSubjectCriteriaEnabled() {
return ((ContentView) contentView).searchWidget
.isSubjectCriteriaEnabled();
}
/* (non-Javadoc)
* @see org.ebayopensource.turmeric.policy.adminui.client.presenter.policy.PolicySummaryPresenter.PolicySummaryDisplay#isSubjectGroupCriteriaEnabled()
*/
public boolean isSubjectGroupCriteriaEnabled() {
return ((ContentView) contentView).searchWidget
.isSubjectGroupCriteriaEnabled();
}
/* (non-Javadoc)
* @see org.ebayopensource.turmeric.policy.adminui.client.presenter.policy.PolicySummaryPresenter.PolicySummaryDisplay#isSearchCriteriaEnabled()
*/
public boolean isSearchCriteriaEnabled() {
return ((ContentView) contentView).searchWidget
.isSubjectCriteriaEnabled();
}
/* (non-Javadoc)
* @see org.ebayopensource.turmeric.policy.adminui.client.presenter.policy.PolicySummaryPresenter.PolicySummaryDisplay#setAvailableTypes(java.util.List)
*/
public void setAvailableTypes(List<String> types) {
((ContentView) contentView).searchWidget.setAvailableTypes(types);
((ContentView) contentView).searchWidget.getAvailableTypeBox()
.setSelectedIndex(-1);
if (!((ContentView) contentView).searchWidget
.isResourceCriteriaEnabled()) {
((ContentView) contentView).searchWidget.getRsNameBox()
.setSelectedIndex(-1);
((ContentView) contentView).searchWidget.getOperationNameBox()
.setSelectedIndex(-1);
}
}
/* (non-Javadoc)
* @see org.ebayopensource.turmeric.policy.adminui.client.presenter.policy.PolicySummaryPresenter.PolicySummaryDisplay#setResourceNames()
*/
public void setResourceNames() {
((ContentView) contentView).searchWidget.setAvailableRsNames();
((ContentView) contentView).searchWidget.getRsNameBox()
.setSelectedIndex(-1);
((ContentView) contentView).searchWidget.getOperationNameBox().clear();
((ContentView) contentView).searchWidget.getOperationNameBox()
.setSelectedIndex(-1);
((ContentView) contentView).searchWidget.getOperationNameBox()
.setEnabled(true);
}
/* (non-Javadoc)
* @see org.ebayopensource.turmeric.policy.adminui.client.presenter.policy.PolicySummaryPresenter.PolicySummaryDisplay#setOperationNames()
*/
public void setOperationNames() {
((ContentView) contentView).searchWidget.setAvailableOps();
((ContentView) contentView).searchWidget.getOperationNameBox()
.setSelectedIndex(-1);
}
/* (non-Javadoc)
* @see org.ebayopensource.turmeric.policy.adminui.client.presenter.policy.PolicySummaryPresenter.PolicySummaryDisplay#getSubjectCriteriaButton()
*/
public HasClickHandlers getSubjectCriteriaButton() {
return ((ContentView) contentView).searchWidget
.getSubjectCriteriaButton();
}
/* (non-Javadoc)
* @see org.ebayopensource.turmeric.policy.adminui.client.presenter.policy.PolicySummaryPresenter.PolicySummaryDisplay#getPolicyCriteriaButton()
*/
public HasClickHandlers getPolicyCriteriaButton() {
return ((ContentView) contentView).searchWidget
.getPolicyCriteriaButton();
}
/* (non-Javadoc)
* @see org.ebayopensource.turmeric.policy.adminui.client.presenter.policy.PolicySummaryPresenter.PolicySummaryDisplay#getResourceCriteriaButton()
*/
public HasClickHandlers getResourceCriteriaButton() {
return ((ContentView) contentView).searchWidget
.getResourceCriteriaButton();
}
/* (non-Javadoc)
* @see org.ebayopensource.turmeric.policy.adminui.client.presenter.policy.PolicySummaryPresenter.PolicySummaryDisplay#getSubjectGroupCriteriaButton()
*/
public HasClickHandlers getSubjectGroupCriteriaButton() {
return ((ContentView) contentView).searchWidget
.getSubjectGroupCriteriaButton();
}
/* (non-Javadoc)
* @see org.ebayopensource.turmeric.policy.adminui.client.presenter.policy.PolicySummaryPresenter.PolicySummaryDisplay#setSelectedSearchTerm(java.lang.String)
*/
public void setSelectedSearchTerm(String name) {
((ContentView) contentView).searchPanel.setOpen(true);
((ContentView) contentView).searchWidget.setSelectedSearchTerm(name);
}
/* (non-Javadoc)
* @see org.ebayopensource.turmeric.policy.adminui.client.presenter.policy.PolicySummaryPresenter.PolicySummaryDisplay#setSelectedType(java.lang.String)
*/
public void setSelectedType(String type) {
((ContentView) contentView).searchPanel.setOpen(true);
((ContentView) contentView).searchWidget.setSelectedType(type);
}
/* (non-Javadoc)
* @see org.ebayopensource.turmeric.policy.adminui.client.presenter.policy.PolicySummaryPresenter.PolicySummaryDisplay#setPolicyCriteriaEnabled(boolean)
*/
public void setPolicyCriteriaEnabled(boolean enabled) {
((ContentView) contentView).searchPanel.setOpen(true);
((ContentView) contentView).searchWidget
.setPolicyCriteriaEnabled(enabled);
}
/* (non-Javadoc)
* @see org.ebayopensource.turmeric.policy.adminui.client.presenter.policy.PolicySummaryPresenter.PolicySummaryDisplay#setResourceCriteriaEnabled(boolean)
*/
public void setResourceCriteriaEnabled(boolean enabled) {
((ContentView) contentView).searchPanel.setOpen(true);
((ContentView) contentView).searchWidget
.setResourceCriteriaEnabled(enabled);
}
/* (non-Javadoc)
* @see org.ebayopensource.turmeric.policy.adminui.client.presenter.policy.PolicySummaryPresenter.PolicySummaryDisplay#setSubjectCriteriaEnabled(boolean)
*/
public void setSubjectCriteriaEnabled(boolean enabled) {
((ContentView) contentView).searchPanel.setOpen(true);
((ContentView) contentView).searchWidget
.setSubjectCriteriaEnabled(enabled);
}
/* (non-Javadoc)
* @see org.ebayopensource.turmeric.policy.adminui.client.presenter.policy.PolicySummaryPresenter.PolicySummaryDisplay#setSubjectGroupCriteriaEnabled(boolean)
*/
public void setSubjectGroupCriteriaEnabled(boolean enabled) {
((ContentView) contentView).searchPanel.setOpen(true);
((ContentView) contentView).searchWidget
.setSubjectGroupCriteriaEnabled(enabled);
}
/* (non-Javadoc)
* @see org.ebayopensource.turmeric.policy.adminui.client.presenter.policy.PolicySummaryPresenter.PolicySummaryDisplay#setSearchCriteriaEnabled(boolean)
*/
public void setSearchCriteriaEnabled(boolean enabled) {
((ContentView) contentView).searchPanel.setOpen(true);
((ContentView) contentView).searchWidget
.setSubjectCriteriaEnabled(enabled);
}
/* (non-Javadoc)
* @see org.ebayopensource.turmeric.policy.adminui.client.presenter.policy.PolicySummaryPresenter.PolicySummaryDisplay#getPolicyTypes()
*/
public List<String> getPolicyTypes() {
return ((ContentView) contentView).searchWidget.getPolicyTypes();
}
/* (non-Javadoc)
* @see org.ebayopensource.turmeric.policy.adminui.client.presenter.policy.PolicySummaryPresenter.PolicySummaryDisplay#setPolicyTypes(java.util.List)
*/
public void setPolicyTypes(List<String> types) {
((ContentView) contentView).searchWidget.setPolicyTypes(types);
}
/* (non-Javadoc)
* @see org.ebayopensource.turmeric.policy.adminui.client.presenter.policy.PolicySummaryPresenter.PolicySummaryDisplay#getSelectedResource()
*/
public String getSelectedResource() {
return ((ContentView) contentView).searchWidget.getSelectedRsName();
}
/* (non-Javadoc)
* @see org.ebayopensource.turmeric.policy.adminui.client.presenter.policy.PolicySummaryPresenter.PolicySummaryDisplay#getSelectedOperation()
*/
public String getSelectedOperation() {
return ((ContentView) contentView).searchWidget.getSelectedOp();
}
/* (non-Javadoc)
* @see org.ebayopensource.turmeric.policy.adminui.client.presenter.policy.PolicySummaryPresenter.PolicySummaryDisplay#getResourceNameBox()
*/
public HasChangeHandlers getResourceNameBox() {
return ((ContentView) contentView).searchWidget.getRsNameBox();
}
/* (non-Javadoc)
* @see org.ebayopensource.turmeric.policy.adminui.client.presenter.policy.PolicySummaryPresenter.PolicySummaryDisplay#getAvailableTypesBox()
*/
public HasChangeHandlers getAvailableTypesBox() {
return ((ContentView) contentView).searchWidget.getAvailableTypeBox();
}
/* (non-Javadoc)
* @see org.ebayopensource.turmeric.policy.adminui.client.presenter.policy.PolicySummaryPresenter.PolicySummaryDisplay#setRLEffectBoxVisible(boolean)
*/
public void setRLEffectBoxVisible(boolean b) {
((ContentView) contentView).searchWidget.setRLEffectBoxVisible(b);
}
/* (non-Javadoc)
* @see org.ebayopensource.turmeric.policy.adminui.client.presenter.policy.PolicySummaryPresenter.PolicySummaryDisplay#setRLEffectLabelVisible(boolean)
*/
public void setRLEffectLabelVisible(boolean b) {
((ContentView) contentView).searchWidget.setRLEffectLabelVisible(b);
}
/* (non-Javadoc)
* @see org.ebayopensource.turmeric.policy.adminui.client.presenter.policy.PolicySummaryPresenter.PolicySummaryDisplay#setRsNames(java.util.List)
*/
public void setRsNames(List<String> names) {
((ContentView) contentView).searchWidget.setRsNames(names);
}
/* (non-Javadoc)
* @see org.ebayopensource.turmeric.policy.adminui.client.presenter.policy.PolicySummaryPresenter.PolicySummaryDisplay#setOpNames(java.util.List)
*/
public void setOpNames(List<String> names) {
((ContentView) contentView).searchWidget.setOpNames(names);
}
/* (non-Javadoc)
* @see org.ebayopensource.turmeric.policy.adminui.client.presenter.policy.PolicySummaryPresenter.PolicySummaryDisplay#setEffect(java.util.List)
*/
public void setEffect(List<String> effects) {
((ContentView) contentView).searchWidget.setRLEffect(effects);
}
/* (non-Javadoc)
* @see org.ebayopensource.turmeric.policy.adminui.client.presenter.policy.PolicySummaryPresenter.PolicySummaryDisplay#getActionButtonAbove()
*/
public HasClickHandlers getActionButtonAbove() {
return ((ContentView) contentView).getActionButtonAbove();
}
/* (non-Javadoc)
* @see org.ebayopensource.turmeric.policy.adminui.client.presenter.policy.PolicySummaryPresenter.PolicySummaryDisplay#getPendingActions()
*/
public Map<GenericPolicy, UserAction> getPendingActions() {
return ((ContentView) contentView).getPendingActions();
}
@Override
public void addSubjectCriteriaButtonClickHandler(ClickHandler handler) {
getSubjectCriteriaButton().addClickHandler(handler);
}
@Override
public void addPolicyCriteriaButtonClickHandler(ClickHandler handler) {
getPolicyCriteriaButton().addClickHandler(handler);
}
@Override
public void addResourceCriteriaButtonClickHandler(ClickHandler handler) {
getResourceCriteriaButton().addClickHandler(handler);
}
@Override
public void addAvailableTypesBoxChangeHandler(ChangeHandler changeHandler) {
getAvailableTypesBox().addChangeHandler(changeHandler);
}
@Override
public void addResourceNameBoxChangeHandler(ChangeHandler changeHandler) {
getResourceNameBox().addChangeHandler(changeHandler);
}
@Override
public void addSubjectGroupCriteriaButtonClickHandler(
ClickHandler clickHandler) {
getSubjectGroupCriteriaButton().addClickHandler(clickHandler);
}
@Override
public void addSearchButtonClickHandler(ClickHandler clickHandler) {
getSearchButton().addClickHandler(clickHandler);
}
@Override
public void addActionButtonAboveClickHandler(ClickHandler clickHandler) {
getActionButtonAbove().addClickHandler(clickHandler);
}
}