Statistics
| Revision:

svn-gvsig-desktop / trunk / libraries / libFMap / src / com / iver / cit / gvsig / fmap / ExtentHistory.java @ 580

History | View | Annotate | Download (3.54 KB)

1 213 fernando
/* Generated by Together */
2
package com.iver.cit.gvsig.fmap;
3
4 485 vcaballero
import com.iver.utiles.XMLEntity;
5
6 213 fernando
import java.awt.geom.Rectangle2D;
7
8 449 vcaballero
9 485 vcaballero
/**
10
 * DOCUMENT ME!
11
 *
12
 * @author Vicente Caballero Navarro
13
 */
14 213 fernando
public class ExtentHistory {
15
    private int NUMREC;
16
    private Rectangle2D[] extents;
17
    private int num = 0;
18
19
    /**
20
     * Creates a new ExtentsHistory object.
21
     */
22
    public ExtentHistory() {
23
        NUMREC = 4;
24
        extents = new Rectangle2D.Double[NUMREC];
25
    }
26
27
    /**
28
     * Creates a new ExtentsHistory object.
29
     *
30
     * @param numEntries Numero de entradas que se guardan en el historico de
31
     *        rect?ngulos, por defecto 20
32
     */
33
    public ExtentHistory(int numEntries) {
34
        NUMREC = numEntries;
35
    }
36
37
    /**
38
     * Pone un nuevo rect?ngulo al final del array
39
     *
40
     * @param ext Rect?ngulo que se a?ade al hist?rico
41
     */
42
    public void put(Rectangle2D.Double ext) {
43
        if ((ext != null) && ((num < 1) || (ext != extents[num - 1]))) {
44
            if (num < (NUMREC)) {
45
                extents[num] = ext;
46
                num = num + 1;
47
            } else {
48
                for (int i = 0; i < (NUMREC - 1); i++) {
49
                    extents[i] = extents[i + 1];
50
                }
51
52
                extents[num - 1] = ext;
53
            }
54
        }
55
    }
56
57
    /**
58
     * Devuelve true si hay alg?n rect?ngulo en el hist?rico
59
     *
60
     * @return true o false en caso de que haya o no haya rect?ngulos
61
     */
62
    public boolean hasPrevious() {
63
        return num > 0;
64
    }
65
66
    /**
67
     * Obtiene el ?ltimo rect?ngulo que se a?adi? al hist?rico
68
     *
69
     * @return Ultimo rect?ngulo a?adido
70
     */
71
    public Rectangle2D get() {
72
        Rectangle2D ext = extents[num - 1];
73
74
        return ext;
75
    }
76
77
    /**
78
     * Devuelve el ?ltimo rect?ngulo del hist?rico y lo elimina del mismo
79
     *
80
     * @return Ultimo rect?ngulo a?adido
81
     */
82
    public Rectangle2D removePrev() {
83
        Rectangle2D ext = extents[num - 1];
84
        num = num - 1;
85
86
        return ext;
87
    }
88 485 vcaballero
89
    /**
90
     * DOCUMENT ME!
91
     *
92
     * @return DOCUMENT ME!
93
     */
94
    public XMLEntity getXMLEntity() {
95
        XMLEntity xml = new XMLEntity();
96
        xml.putProperty("num", num);
97
        xml.putProperty("numrec", NUMREC);
98
99
        for (int i = 0; i < NUMREC; i++) {
100
            if (extents[i] != null) {
101
                xml.putProperty("extent" + i + "X", extents[i].getX());
102
                xml.putProperty("extent" + i + "Y", extents[i].getY());
103
                xml.putProperty("extent" + i + "W", extents[i].getWidth());
104
                xml.putProperty("extent" + i + "H", extents[i].getHeight());
105
            }
106
        }
107
108
        return xml;
109 449 vcaballero
    }
110 485 vcaballero
111
    /**
112
     * DOCUMENT ME!
113
     *
114
     * @param xml DOCUMENT ME!
115
     *
116
     * @return DOCUMENT ME!
117
     */
118
    public static ExtentHistory createFromXML(XMLEntity xml) {
119
        ExtentHistory eh = new ExtentHistory();
120
        eh.num = xml.getIntProperty("num");
121
        eh.NUMREC = xml.getIntProperty("numrec");
122
123
        for (int i = 0; i < eh.NUMREC; i++) {
124
            try {
125
                eh.extents[i].setRect(xml.getDoubleProperty("extent" + i + "X"),
126
                    xml.getDoubleProperty("extent" + i + "Y"),
127
                    xml.getDoubleProperty("extent" + i + "W"),
128
                    xml.getDoubleProperty("extent" + i + "H"));
129
            } catch (Exception e) {
130
                System.out.println("En las ExtentHistory =" + e); //TODO o se captura de alguna forma o se mete un nuevo parametro en el xml para saber exactamente cuantos rect?gulos se han a?adido.
131
            }
132
        }
133
134
        return eh;
135 449 vcaballero
    }
136 213 fernando
}