/********************************************************************
* Copyright (c) 2010 eBay Inc., and others. 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;
import java.util.Iterator;
import java.util.List;
import org.ebayopensource.turmeric.policy.adminui.client.Display;
import org.ebayopensource.turmeric.policy.adminui.client.PolicyDashboard;
import org.ebayopensource.turmeric.policy.adminui.client.model.UserAction;
import org.ebayopensource.turmeric.policy.adminui.client.view.common.PolicyMenuWidget;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.logical.shared.HasSelectionHandlers;
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.ResizeComposite;
import com.google.gwt.user.client.ui.ScrollPanel;
import com.google.gwt.user.client.ui.SplitLayoutPanel;
import com.google.gwt.user.client.ui.TreeItem;
import com.google.gwt.user.client.ui.Widget;
/**
* PolicyContainer.
*/
public class PolicyContainer extends ResizeComposite implements HasWidgets, PolicyDashboard {
/** The content panel. */
protected SplitLayoutPanel contentPanel;
Widget policyContent;
PolicyMenuWidget menuWidget;
/**
* Instantiates a new policy container.
*/
public PolicyContainer() {
configureContent();
initWidget(contentPanel);
}
/**
* Configure content.
*
* @return the split layout panel
*/
protected SplitLayoutPanel configureContent() {
contentPanel = new SplitLayoutPanel();
contentPanel.addWest(initMenuView(), 150);
return contentPanel;
}
/**
* Inits the menu view.
*
* @return the widget
*/
protected Widget initMenuView() {
ScrollPanel scroller = new ScrollPanel();
menuWidget = new PolicyMenuWidget();
scroller.add(menuWidget);
return scroller;
}
/* (non-Javadoc)
* @see com.google.gwt.user.client.ui.HasWidgets#add(com.google.gwt.user.client.ui.Widget)
*/
public void add(Widget arg0) {
if (policyContent != null) {
contentPanel.remove(policyContent);
}
GWT.log(arg0.getClass().getName() + "as policy content");
policyContent = arg0;
contentPanel.add(policyContent);
}
/* (non-Javadoc)
* @see com.google.gwt.user.client.ui.HasWidgets#clear()
*/
public void clear() {
if (policyContent != null) {
contentPanel.remove(policyContent);
policyContent = null;
}
this.onResize();
}
/* (non-Javadoc)
* @see com.google.gwt.user.client.ui.HasWidgets#iterator()
*/
public Iterator<Widget> iterator() {
return this.contentPanel.iterator();
}
/* (non-Javadoc)
* @see com.google.gwt.user.client.ui.HasWidgets#remove(com.google.gwt.user.client.ui.Widget)
*/
public boolean remove(Widget arg0) {
boolean result = contentPanel.remove(arg0);
if (arg0 == policyContent)
policyContent = null;
return result;
}
/**
* Activate.
*
* @param view
* the view
* @see org.ebayopensource.turmeric.policy.adminui.client.view.PolicyDashboard#activate(org.ebayopensource.turmeric.policy.adminui.client.Display)
*/
@Override
public void activate(Display view) {
}
/* (non-Javadoc)
* @see org.ebayopensource.turmeric.policy.adminui.client.PolicyDashboard#setActions(java.util.List)
*/
public void setActions(List<UserAction> actions) {
this.menuWidget.setActions(actions);
}
/**
* Gets the selector.
*
* @return the selector
* @see org.ebayopensource.turmeric.policy.adminui.client.view.PolicyDashboard#getSelector()
*/
@Override
public HasSelectionHandlers<TreeItem> getSelector() {
return menuWidget.getSelector();
}
/* (non-Javadoc)
* @see org.ebayopensource.turmeric.policy.adminui.client.PolicyDashboard#setSelected(org.ebayopensource.turmeric.policy.adminui.client.model.UserAction)
*/
public void setSelected (UserAction action) {
GWT.log("UserAction selected:"+action);
this.menuWidget.setSelected(action);
}
/**
* Error.
*
* @param err
* the err
* @see org.ebayopensource.turmeric.policy.adminui.client.PolicyDashboard#error(java.lang.String)
*/
@Override
public void error(String err) {
ErrorDialog dialog = new ErrorDialog(true);
dialog.setMessage(err);
dialog.getDialog().center();
dialog.show();
}
}