Package com.stormbrain.test.client

Source Code of com.stormbrain.test.client.Controller

package com.stormbrain.test.client;

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.event.dom.client.DragEvent;
import com.google.gwt.event.dom.client.DragHandler;
import com.google.gwt.event.dom.client.DragOverEvent;
import com.google.gwt.event.dom.client.DragOverHandler;
import com.google.gwt.event.dom.client.MouseDownEvent;
import com.google.gwt.event.dom.client.MouseDownHandler;
import com.google.gwt.event.dom.client.MouseMoveEvent;
import com.google.gwt.event.dom.client.MouseMoveHandler;
import com.google.gwt.event.dom.client.MouseOverEvent;
import com.google.gwt.event.dom.client.MouseOverHandler;
import com.google.gwt.event.dom.client.MouseUpEvent;
import com.google.gwt.event.dom.client.MouseUpHandler;
import com.google.gwt.event.shared.HandlerRegistration;
import com.google.gwt.touch.client.Point;
import com.google.gwt.user.client.Window;
import com.stormbrain.test.client.model.Arc;

public class Controller implements MouseUpHandler, MouseDownHandler, MouseMoveHandler {
  private Canvas canvas;
  private Painter painter;
  private Context2d context;
  private Point lastMouseDown = null;
  private Arc bubble = null;
  private HandlerRegistration mouseMove;
 
  public Controller(Canvas canvas, Painter painter) {
    this.canvas = canvas;
    this.painter = painter;
    this.context = canvas.getContext2d();
   
    this.canvas.addMouseDownHandler(this);
    this.canvas.addMouseUpHandler(this);
   
    context.setFillStyle(CssColor.make(0, 0, 255))
    context.setStrokeStyle(CssColor.make(0, 0, 255));   
  }

  public void onMouseUp(MouseUpEvent event) {
    double distance = getDistance(lastMouseDown, new Point(event.getX(), event.getY()));
    lastMouseDown = null;
   
    context.closePath();
    bubble.showFill(true);   
    if(distance < 5.0) {
      bubble.setRadius(5);
    } else {
      bubble.setRadius(distance)
    }
    mouseMove.removeHandler()
  }

  private double getDistance(Point point1, Point point2) {
    return Math.sqrt((point2.getY() - point1.getY()) * (point2.getY() - point1.getY()) +
        (point2.getX() - point1.getX()) * (point2.getX() - point1.getX()));
  }

  public void onMouseDown(MouseDownEvent event) {
    lastMouseDown = new Point(event.getX(), event.getY());
   
    bubble = new Arc(lastMouseDown, 0);
    bubble.showFill(false);
    painter.add(bubble);
   
    mouseMove = canvas.addMouseMoveHandler(this);
  }

  public void onMouseMove(MouseMoveEvent event) {
    double distance = getDistance(lastMouseDown, new Point(event.getX(), event.getY()));
   
    bubble.setRadius(distance);
  }
}
TOP

Related Classes of com.stormbrain.test.client.Controller

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.