package eu.dnetlib.client.adminpanel;

import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.RootPanel;
import eu.dnetlib.client.AdminWidget;


public class AdminPanelController {
	
	private static AdminPanelController instance = null;

	private ActionServiceAsync actionService = GWT.create(ActionService.class);
	
	private FlowPanel contentPanel = new FlowPanel();
	
	private AdminPanelController() {
		
		RootPanel.get("contentWrapper").add(contentPanel);
	}
	
	public static final AdminPanelController getInstance() {
		
		if(instance==null)
			instance = new AdminPanelController();
		
		return instance;
	}
	
	public void showWidget(AdminWidget widget) {

        contentPanel.clear();

        widget.clear();
        widget.reload();

        contentPanel.add(widget);

        widget.afterAdditionToRootPanel();
		
//		equalHeight();
	}
	
	public void updateNoOfActions() {
		
		actionService.getActionCount(new AsyncCallback<Integer>() {
			
			@Override
			public void onSuccess(Integer count) {
				ActionCountWidget.getInstance().updateContent(count);
			}
			
			@Override
			public void onFailure(Throwable arg0) {
				ActionCountWidget.getInstance().updateContent(-1);
			}
		});
	}
	
	public static native void equalHeight() /*-{
    	$wnd.$(".column").equalHeight();
	}-*/;
}
