Package chunmap.app.tools

Source Code of chunmap.app.tools.RectangleTool

/**
* Copyright (c) 2009-2011, chunquedong(YangJiandong)
*
* This file is part of ChunMap project
* Licensed under the GNU LESSER GENERAL PUBLIC LICENSE(Version >=3)
*
* History:
*     2010-05-05  Jed Young  Creation
*/
package chunmap.app.tools;

import java.awt.AWTEvent;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.MouseEvent;

import chunmap.model.elem.Envelope;
import chunmap.app.bench.AbstractTool;
import chunmap.app.bench.EventType;

public abstract class RectangleTool extends AbstractTool{
  //private static final Logger Log = new Logger(Logger.Debug,RectangleTool.class.getName());

  private int x = 0;
  private int y = 0;
  private boolean draging = false;
  protected Envelope envelope;
  private Color color=Color.black;
 
  @Override
  public boolean actionEvent(AWTEvent event, EventType type) {
    if (event instanceof MouseEvent) {
      MouseEvent e = (MouseEvent) event;
      if (MouseEvent.MOUSE_PRESSED == e.getID()) {
        mousePressed(e);
      } else if (MouseEvent.MOUSE_RELEASED == e.getID()) {
        mouseReleased(e);
      } else if (MouseEvent.MOUSE_DRAGGED == e.getID()) {
        mouseDragged(e);
      }
    }
   
    return true;
  }

  public void mouseDragged(MouseEvent e) {
    if (e.isMetaDown()) return;
   
    envelope=new Envelope(x,y,e.getX(),e.getY());
    int minx = (int)envelope.getMinX();
    int miny = (int)envelope.getMinY();
    int width = (int)envelope.getWidth();
    int height = (int)envelope.getHeight();

    Image image=map.getBufferImage();
    Graphics tg=image.getGraphics();
    tg.setColor(color);
   
    tg.drawImage(map.getOriginImage(), 0, 0,null);
    tg.drawRect(minx, miny, width, height);
   
    image.flush();
    map.getGraphics().drawImage(image, 0, 0,map);
  }

  public void mousePressed(MouseEvent e) {
    if (e.isMetaDown())
      return;
    draging = true;
    x = e.getX();
    y = e.getY();
  }

  public void mouseReleased(MouseEvent e) {
    if (draging) {
      if(envelope!=null){
        finished();
      }
     
      //reset
      draging = false;
      x = 0;
      y = 0;
      envelope=null;
    }
  }
 
  public abstract void finished();
}
TOP

Related Classes of chunmap.app.tools.RectangleTool

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.