/**
 * Play.java
 */
package com._3dmathpuzzles.play;

import com.google.gwt.canvas.client.Canvas;
import com.google.gwt.canvas.dom.client.Context2d;
import com.google.gwt.canvas.dom.client.CssColor;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.logical.shared.AttachEvent;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.RootPanel;

/**
 * Main class to play a puzzle online
 * @author Neil Aggarwal
 */
public class Play implements AttachEvent.Handler,ClickHandler,EntryPoint {
  /** Run this module */ 
  @Override
  public void onModuleLoad() {
    Canvas canvas = Canvas.createIfSupported();
    if( canvas == null )
      Window.alert("Canvas is not supported");
    canvas.addAttachHandler(this);
    RootPanel.get("play").add(canvas);
    canvas.setWidth("100%");
    canvas.setHeight("100%");
    canvas.addAttachHandler(this);
    canvas.addClickHandler(this);
  }
  
  /** Called when the canvas is attached or detached */
  public void onAttachOrDetach(AttachEvent event) {
    Canvas canvas = (Canvas)event.getSource();
    Context2d context = canvas.getContext2d();
    CssColor black = CssColor.make(0,0,0);
    CssColor red = CssColor.make(255,0,0);
    CssColor green = CssColor.make(0,255,0);
    CssColor blue = CssColor.make(0,0,255);
    context.setStrokeStyle(black);
    context.setFillStyle(green);
    int width = canvas.getCoordinateSpaceWidth();
    int height = canvas.getCoordinateSpaceHeight();
    Window.alert("Canvas width is "+width+", height="+height);
    context.fillRect(0, 0, width, height);
    context.setStrokeStyle(red);
    context.setFillStyle(blue);
    context.fillRect(10, 10, 20, 20);
  }

  /** Called when the user clicks the mouse */
  @Override
  public void onClick(ClickEvent event) {
    Window.alert("Click, x="+event.getX()+", y="+event.getY()+", shift pressed: "+event.isShiftKeyDown());
  }
}
