Statistics
| Revision:

root / trunk / libraries / libFMap / src / com / iver / cit / gvsig / fmap / rendering / VectorialUniqueValueLegend.java @ 458

History | View | Annotate | Download (5.39 KB)

1
package com.iver.cit.gvsig.fmap.rendering;
2

    
3
import com.iver.cit.gvsig.fmap.core.v02.FSymbol;
4
import com.iver.cit.gvsig.fmap.rendering.styling.FStyle2D;
5

    
6
import com.iver.utiles.XMLEntity;
7

    
8
import java.util.HashMap;
9

    
10

    
11
/**
12
 * DOCUMENT ME!
13
 *
14
 * @author Vicente Caballero Navarro
15
 */
16
public class VectorialUniqueValueLegend implements UniqueValueLegend,
17
    VectorialLegend {
18
    private HashMap symbols = new HashMap();
19
    private HashMap values = new HashMap();
20
    private int index = 0;
21
    private int field;
22
    private int labelfield;
23
    private FSymbol defaultSymbol;
24

    
25
    /**
26
     * @see com.iver.cit.gvsig.fmap.rendering.UniqueValueLegend#setValueSymbol(java.lang.Object,
27
     *      org.geotools.renderer.style.Style2D)
28
     */
29
    public void setValueSymbol(Object value, FStyle2D symbol) {
30
        symbols.put(value, symbol);
31
        values.put(new Integer(index), value);
32
        index++;
33
    }
34

    
35
    /**
36
     * @see com.iver.cit.gvsig.fmap.rendering.UniqueValueLegend#getValues()
37
     */
38
    public Object[] getValues() {
39
        return symbols.keySet().toArray(new Object[0]);
40
    }
41

    
42
    /**
43
     * DOCUMENT ME!
44
     *
45
     * @return DOCUMENT ME!
46
     */
47
    private int[] getIndexs() {
48
        Integer[] integers = (Integer[]) values.keySet().toArray(new Integer[0]);
49
        int[] ent = new int[integers.length];
50

    
51
        for (int i = 0; i < integers.length; i++) {
52
            ent[i] = integers[i].intValue();
53
        }
54

    
55
        return ent;
56
    }
57

    
58
    /**
59
     * @see com.iver.cit.gvsig.fmap.rendering.UniqueValueLegend#changeValue(int,
60
     *      java.lang.Object)
61
     */
62
    public void changeValue(int oldValue, Object newValue) {
63
        Object value = values.remove(new Integer(oldValue));
64
        Object symbol = symbols.remove(value);
65
        values.put(new Integer(oldValue), newValue);
66
        symbols.put(newValue, symbol);
67
    }
68

    
69
    /**
70
     * @see com.iver.cit.gvsig.fmap.rendering.ClassifiedLegend#clear()
71
     */
72
    public void clear() {
73
        index = 0;
74
        values.clear();
75
        symbols.clear();
76
    }
77

    
78
    /**
79
     * @see com.iver.cit.gvsig.fmap.rendering.ClassifiedLegend#getDescriptions()
80
     */
81
    public String[] getDescriptions() {
82
        return null;
83
    }
84

    
85
    /**
86
     * @see com.iver.cit.gvsig.fmap.rendering.ClassifiedLegend#getSymbols()
87
     */
88
    public FSymbol[] getSymbols() {
89
        return (FSymbol[]) symbols.values().toArray(new FSymbol[0]);
90
    }
91

    
92
    /**
93
     * @see com.iver.cit.gvsig.fmap.rendering.ClassifiedLegend#getField()
94
     */
95
    public int getField() {
96
        return field;
97
    }
98

    
99
    /**
100
     * @see com.iver.cit.gvsig.fmap.rendering.Legend#setDefaultSymbol(com.iver.cit.gvsig.fmap.rendering.styling.FStyle2D)
101
     */
102
    public void setDefaultSymbol(FSymbol s) {
103
        defaultSymbol = s;
104
    }
105

    
106
    /**
107
     * @see com.iver.cit.gvsig.fmap.rendering.Legend#getLabelField()
108
     */
109
    public int getLabelField() {
110
        return labelfield;
111
    }
112

    
113
    /**
114
     * @see com.iver.cit.gvsig.fmap.rendering.Legend#setLabelField(int)
115
     */
116
    public void setLabelField(int fieldIndex) {
117
        labelfield = fieldIndex;
118
    }
119

    
120
    /**
121
     * @see com.iver.cit.gvsig.fmap.rendering.ClassifiedLegend#setField()
122
     */
123
    public void setField(int i) {
124
        field = i;
125
    }
126

    
127
    /*
128
     * @see com.iver.cit.gvsig.fmap.rendering.Legend#getSymbol(java.lang.Object)
129
     *
130
       public FStyle2D getSymbol(Object value) {
131
           return (FStyle2D) symbols.get(value);
132
       }
133
       //TODO cambiar la implementaci?n del metodo comentado para que encaje
134
     * en este de abajo
135
     */
136

    
137
    /**
138
     * @see com.iver.cit.gvsig.fmap.rendering.Legend#getSymbol(int)
139
     */
140
    public FSymbol getSymbol(int recordIndex) {
141
        return null;
142
    }
143

    
144
    /**
145
     * @see com.iver.cit.gvsig.fmap.rendering.Legend#getDefaultSymbol()
146
     */
147
    public FSymbol getDefaultSymbol() {
148
        return null;
149
    }
150

    
151
    /**
152
     * @see com.iver.cit.gvsig.fmap.rendering.Legend#getXMLEntity()
153
     */
154
    public XMLEntity getXMLEntity() {
155
        XMLEntity xml = new XMLEntity();
156
        xml.putProperty("nameClass",this.getClass().getName());
157
        //TODO defaultSymbol
158
        xml.putProperty("field", field);
159
        xml.putProperty("index", index);
160
        xml.putProperty("labelfield", labelfield);
161

    
162
        //TODO symbols
163
        xml.putProperty("numSymbols", symbols.size());
164
        xml.putProperty("indexs", getIndexs());
165
        xml.putProperty("values", getValues());
166

    
167
        return xml;
168
    }
169

    
170
    /**
171
     * DOCUMENT ME!
172
     *
173
     * @param xml DOCUMENT ME!
174
     *
175
     * @return DOCUMENT ME!
176
     */
177
    public void setXMLEntity(XMLEntity xml) {
178
        //TODO vuvl.defaultSymbol=
179
        field = xml.getIntProperty("field");
180
        index = xml.getIntProperty("index");
181
        labelfield = xml.getIntProperty("labelfield");
182

    
183
        //TODO vuvl.symbols=
184
        int numSymbols = xml.getIntProperty("numSymbols");
185
        int[] indexs = xml.getIntArrayProperty("indexs");
186
        Object[] val = xml.getStringArrayProperty("values");
187

    
188
        for (int i = 0; i < numSymbols; i++) {
189
            values.put(new Integer(indexs[i]), val[i]);
190
        }
191
    }
192

    
193
    /**
194
     * @throws IllegalAccessException
195
     * @throws InstantiationException
196
     * @throws ClassNotFoundException
197
     * @see com.iver.cit.gvsig.fmap.rendering.Legend#cloner()
198
     */
199
    public Legend cloner() throws ClassNotFoundException, InstantiationException, IllegalAccessException {
200
        return (Legend)LegendFactory.createFromXML(getXMLEntity());
201
    }
202
}