svn-gvsig-desktop / trunk / libraries / libFMap / src / com / iver / cit / gvsig / fmap / layers / SelectionSupport.java @ 1076
History | View | Annotate | Download (2.75 KB)
1 |
package com.iver.cit.gvsig.fmap.layers; |
---|---|
2 |
|
3 |
import com.iver.utiles.XMLEntity; |
4 |
|
5 |
import java.util.ArrayList; |
6 |
import java.util.Iterator; |
7 |
|
8 |
|
9 |
/**
|
10 |
* Clase que gestiona las operaci?nes sobre la selecci?n.
|
11 |
*
|
12 |
* @author Vicente Caballero Navarro
|
13 |
*/
|
14 |
public class SelectionSupport { |
15 |
private FBitSet selection = new FBitSet(); |
16 |
private ArrayList listeners = new ArrayList(); |
17 |
|
18 |
/**
|
19 |
* Inserta una nueva selecci?n.
|
20 |
*
|
21 |
* @param selection FBitSet con la selecci?n.
|
22 |
*/
|
23 |
public void setSelection(FBitSet selection) { |
24 |
this.selection = selection;
|
25 |
fireSelectionEvents(); |
26 |
} |
27 |
|
28 |
/**
|
29 |
* Devuelve un FBitSet con los ?ndices de los elementos seleccionados.
|
30 |
*
|
31 |
* @return FBitSet.
|
32 |
*/
|
33 |
public FBitSet getSelection() {
|
34 |
return selection;
|
35 |
} |
36 |
|
37 |
/**
|
38 |
* Devuelve true si el elemento est? seleccionado.
|
39 |
*
|
40 |
* @param recordIndex ?ndice del registro.
|
41 |
*
|
42 |
* @return True si est? seleccionado.
|
43 |
*/
|
44 |
public boolean isSelected(int recordIndex) { |
45 |
return selection.get(recordIndex);
|
46 |
} |
47 |
|
48 |
/**
|
49 |
* Elimina la selecci?n.
|
50 |
*/
|
51 |
public void clearSelection() { |
52 |
this.selection.clear();
|
53 |
} |
54 |
|
55 |
/**
|
56 |
* A?ade un SelectionListener al ArrayList de Listeners.
|
57 |
*
|
58 |
* @param listener SelectionListener a a?adir.
|
59 |
*/
|
60 |
public void addSelectionListener(SelectionListener listener) { |
61 |
listeners.add(listener); |
62 |
} |
63 |
|
64 |
/**
|
65 |
* Borra el SelectionListener que se le pasa como par?metro del ArrayList
|
66 |
* de Listener.
|
67 |
*
|
68 |
* @param listener SlectionListener a borrar.
|
69 |
*/
|
70 |
public void removeSelectionListener(SelectionListener listener) { |
71 |
listeners.remove(listener); |
72 |
} |
73 |
|
74 |
/**
|
75 |
* Cuando ocurre un evento de cambio en la selecci?n, ?ste puede ser uno de
|
76 |
* una gran cantidad de eventos. Con el fin de no propagar todos estos
|
77 |
* eventos, se realiza la propagaci?n de manera manual al final de la
|
78 |
* "r?faga" de eventos
|
79 |
*/
|
80 |
public void fireSelectionEvents() { |
81 |
for (Iterator iter = listeners.iterator(); iter.hasNext();) { |
82 |
SelectionListener listener = (SelectionListener) iter.next(); |
83 |
|
84 |
listener.selectionChanged(new SelectionEvent());
|
85 |
} |
86 |
} |
87 |
|
88 |
/**
|
89 |
* Devuelve el XMLEntity con la informaci?n necesaria para reproducir un
|
90 |
* objeto igual al actual.
|
91 |
*
|
92 |
* @return XMLEntity.
|
93 |
*/
|
94 |
public XMLEntity getXMLEntity() {
|
95 |
XMLEntity xml = new XMLEntity();
|
96 |
|
97 |
if (selection != null) { |
98 |
xml.putProperty("numBitSet", selection.cardinality());
|
99 |
|
100 |
int n = 0; |
101 |
|
102 |
for (int i = 0; i < selection.length(); i++) { |
103 |
if (selection.get(i)) {
|
104 |
xml.putProperty(String.valueOf(n), i);
|
105 |
n++; |
106 |
} |
107 |
} |
108 |
} |
109 |
|
110 |
return xml;
|
111 |
} |
112 |
|
113 |
/**
|
114 |
* A partir del XMLEntity reproduce la selecci?n.
|
115 |
*
|
116 |
* @param xml DOCUMENT ME!
|
117 |
*/
|
118 |
public void setXMLEntity(XMLEntity xml) { |
119 |
int numBitSet = xml.getIntProperty("numBitSet"); |
120 |
|
121 |
if (numBitSet != 0) { |
122 |
for (int i = 0; i < numBitSet; i++) { |
123 |
selection.set(xml.getIntProperty(String.valueOf(i)));
|
124 |
} |
125 |
} |
126 |
} |
127 |
} |