package authoritymanager.client;

import java.util.HashMap;

import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.DialogBox;
import com.google.gwt.user.client.ui.FlexTable;
import com.google.gwt.user.client.ui.HasHorizontalAlignment;
import com.google.gwt.user.client.ui.HasVerticalAlignment;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.ListBox;
import com.google.gwt.user.client.ui.Panel;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;

public class EditRecordPage extends Page {
	Panel panel ;
	
	private HashMap<String, EditPage> pages;

	public EditRecordPage(AuthorityManagerView view) {
		super(view);
		panel = new VerticalPanel() ;
		add(panel) ;
		pages = new HashMap<String, EditPage>();
		String[] itemType = ClientConfiguration.getItemTypes();
		for (int iItemType = 0; iItemType < Math.min(1, itemType.length); iItemType++) {
			String [] [] insertView = ClientConfiguration.getInsertView(itemType [iItemType]) ;
			EditPage editPage = new EditPage(view, itemType [iItemType], insertView [0] [1], insertView [1] [0]) ;
			pages.put(editPage.getPageType(), editPage);
		}
	}

	public void show(DataSerial record) {
		String itemType = record.getType() ;
		EditPage editPage = pages.get(itemType) ;
		if (editPage != null) {
			panel.clear() ;
			panel.add(editPage) ;
			editPage.show(record) ;
		}
	}
	public void show(String itemID) {
		AsyncCallback<DataSerial> callback = new AsyncCallback<DataSerial>() {
			@Override
			public void onFailure(Throwable caught) {
			}
			@Override
			public void onSuccess(DataSerial record) {
				String itemType = record.getType() ;
				EditPage editPage = pages.get(itemType) ;
				if (editPage != null) {
					panel.clear() ;
					panel.add(editPage) ;
					editPage.show(record) ;
				}
			}
		} ;
		view.getController().getItem(itemID, callback) ;
	}	
}
