Statistics
| Revision:

root / trunk / libraries / libFMap / src / com / iver / cit / gvsig / fmap / tools / Behavior / AreaMapTool.java @ 365

History | View | Annotate | Download (2.46 KB)

1
package com.iver.cit.gvsig.fmap.tools.Behavior;
2

    
3
import java.awt.Color;
4
import java.awt.Graphics;
5
import java.awt.Graphics2D;
6
import java.awt.Point;
7
import java.awt.event.MouseEvent;
8

    
9
import com.iver.cit.gvsig.fmap.tools.Events.MeasureEvent;
10

    
11

    
12
/**
13
 * C?lculo del ?rea.
14
 *
15
 * @author Vicente Caballero Navarro
16
 */
17
public class AreaMapTool extends MeasureMapTool {
18
        
19
    /**
20
     * @see com.iver.cit.gvsig.fmap.tools.Behavior.MapTool#paintComponent(java.awt.Graphics)
21
     */
22
    public void paintComponent(Graphics g) {
23
        g.drawImage(getMapControl().getImage(), 0, 0, null);
24
        g.setColor(Color.black);
25

    
26
        if (!arrayX.isEmpty()) {
27
            drawPolyLine((Graphics2D) g);
28
        }
29
    }
30

    
31
    /**
32
     * DOCUMENT ME!
33
     *
34
     * @param E DOCUMENT ME!
35
     */
36
    public void mouseClicked(MouseEvent E) {
37
        if (E.getClickCount() == 2) {
38
            listener.polylineFinished(new MeasureEvent((Double[]) arrayX.toArray(
39
                    new Double[0]), (Double[]) arrayX.toArray(new Double[0])));
40
            arrayX.clear();
41
            arrayY.clear();
42
            isClicked = false;
43
        } else {
44
            isClicked = true;
45

    
46
            if (arrayX.size() == 0){
47
                    addPoint(E.getPoint());
48
                    addPoint(E.getPoint());
49
                    addPoint(E.getPoint());
50
            } else {
51
                    addAntPoint(E.getPoint());
52
            }
53

    
54
            listener.pointFixed(new MeasureEvent((Double[]) arrayX.toArray(
55
                    new Double[0]), (Double[]) arrayX.toArray(new Double[0])));
56
        }
57
    }
58

    
59
    /**
60
     * DOCUMENT ME!
61
     *
62
     * @param p DOCUMENT ME!
63
     */
64
    private void addAntPoint(Point p) {
65
        arrayX.add(arrayX.size() - 1, new Double(p.x));
66
        arrayY.add(arrayY.size() - 1, new Double(p.y));
67
    }
68

    
69
    /**
70
     * DOCUMENT ME!
71
     *
72
     * @param p DOCUMENT ME!
73
     */
74
    private void changeAntPoint(Point p) {
75
        if (arrayX.size() > 2) {
76
            arrayX.set(arrayX.size() - 2, new Double(p.getX()));
77
            arrayY.set(arrayY.size() - 2, new Double(p.getY()));
78
        }
79
    }
80

    
81
    /**
82
     * DOCUMENT ME!
83
     *
84
     * @param E DOCUMENT ME!
85
     */
86
    public void mouseMoved(MouseEvent E) {
87
        if (isClicked) {
88
            changeAntPoint(E.getPoint());
89

    
90
            MeasureEvent event = new MeasureEvent((Double[]) arrayX.toArray(
91
                        new Double[0]), (Double[]) arrayY.toArray(new Double[0]));
92
            listener.points(event);
93
            getMapControl().repaint();
94
        }
95
    }
96
  
97
}