package com.ge.inds.evse.client;

import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.ClickListener;
import com.google.gwt.user.client.ui.FlexTable;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.SourcesTableEvents;
import com.google.gwt.user.client.ui.TableListener;
import com.google.gwt.user.client.ui.Widget;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;

/**
 * 
 * @author avalanche
 */
public class McintoshEntryPoint implements EntryPoint {

	final Button addButton = new Button("Add Row");
	final Button deleteButton = new Button("Delete Row");
	final FlexTable table = new FlexTable();
	final Set selectedTableRows = new HashSet();

	public McintoshEntryPoint() {
		addButton.addClickListener(new ClickListener() {

			public void onClick(Widget arg0) {
				table.insertRow(table.getRowCount());
				table.addCell(table.getRowCount() - 1);
				table.addCell(table.getRowCount() - 1);
				table.setText(table.getRowCount() - 1, 1,
						"foo" + table.getRowCount());
			}
		});
		deleteButton.addClickListener(new ClickListener() {

			public void onClick(Widget arg0) {
				Window.alert("inside delte handler");
				Object[] array = selectedTableRows.toArray();
				Arrays.sort(array);
				for (int i = array.length - 1; i > -1; i--) {
					int row = ((Integer) array[i]).intValue();
					table.removeRow(row);
					selectedTableRows.remove(new Integer(row));
				}
			}
		});
		table.addTableListener(new TableListener() {

			public void onCellClicked(SourcesTableEvents arg0, int rrow, int col) {
				Integer row = new Integer(rrow);
				if (selectedTableRows.contains(row)) {
					selectedTableRows.remove(row);
					table.setText(rrow, 0, "x");
				} else {
					selectedTableRows.add(row);
					table.setText(rrow, 0, "y");
				}
			}
		});

	}

	/**
	 * The entry point method, called automatically by loading a module that
	 * declares an implementing class as an entry-point
	 */
	public void onModuleLoad() {
		RootPanel.get().add(table);
		RootPanel.get().add(addButton);
		RootPanel.get().add(deleteButton);
	}
}