Revision 24346 branches/v2_0_0_prep/libraries/libFMap_data/src/org/gvsig/fmap/data/feature/impl/DefaultFeatureReferenceSelection.java
DefaultFeatureReferenceSelection.java | ||
---|---|---|
42 | 42 |
import org.gvsig.tools.persistence.PersistenceException; |
43 | 43 |
import org.gvsig.tools.persistence.PersistentState; |
44 | 44 |
import org.gvsig.tools.visitor.Visitor; |
45 |
import org.slf4j.Logger; |
|
46 |
import org.slf4j.LoggerFactory; |
|
45 | 47 |
|
46 | 48 |
/** |
47 | 49 |
* Default implementation of a FeatureReferenceSelection, based on the usage of |
... | ... | |
50 | 52 |
* |
51 | 53 |
* @author <a href="mailto:cordin@disid.com">C?sar Ordi?ana</a> |
52 | 54 |
*/ |
53 |
public class DefaultFeatureReferenceSelection extends BaseWeakReferencingObservable implements |
|
54 |
FeatureReferenceSelection { |
|
55 |
|
|
55 |
public class DefaultFeatureReferenceSelection extends |
|
56 |
BaseWeakReferencingObservable implements FeatureReferenceSelection { |
|
57 |
|
|
58 |
private static final Logger LOGGER = LoggerFactory |
|
59 |
.getLogger(DefaultFeatureReferenceSelection.class); |
|
60 |
|
|
56 | 61 |
private Set selected = new HashSet(); |
57 | 62 |
|
58 | 63 |
/** |
... | ... | |
90 | 95 |
} |
91 | 96 |
|
92 | 97 |
public boolean select(FeatureReference reference) { |
93 |
if (getFeatureStore().isEditing()) {
|
|
94 |
getCommands().select(this, reference);
|
|
95 |
}
|
|
98 |
if (getFeatureStore().isEditing()) {
|
|
99 |
getCommands().select(this, reference);
|
|
100 |
}
|
|
96 | 101 |
boolean change = false; |
97 | 102 |
if (reversed) { |
98 | 103 |
change = selected.remove(reference); |
... | ... | |
108 | 113 |
} |
109 | 114 |
|
110 | 115 |
public boolean deselect(FeatureReference reference) { |
111 |
if (getFeatureStore().isEditing()) {
|
|
112 |
getCommands().deselect(this, reference);
|
|
113 |
}
|
|
116 |
if (getFeatureStore().isEditing()) {
|
|
117 |
getCommands().deselect(this, reference);
|
|
118 |
}
|
|
114 | 119 |
boolean change = false; |
115 | 120 |
if (reversed) { |
116 | 121 |
change = selected.add(reference); |
... | ... | |
125 | 130 |
return change; |
126 | 131 |
} |
127 | 132 |
|
128 |
public void selectAll() { |
|
129 |
if (getFeatureStore().isEditing()) {
|
|
130 |
getCommands().startComplex("_selectionSelectAll");
|
|
131 |
getCommands().selectAll(this);
|
|
132 |
}
|
|
133 |
public void selectAll() throws DataException {
|
|
134 |
if (getFeatureStore().isEditing()) {
|
|
135 |
getCommands().startComplex("_selectionSelectAll");
|
|
136 |
getCommands().selectAll(this);
|
|
137 |
}
|
|
133 | 138 |
if (!reversed) { |
134 | 139 |
reverse(); |
135 | 140 |
} |
136 | 141 |
selected.clear(); |
137 |
if (getFeatureStore().isEditing()) {
|
|
138 |
getCommands().endComplex();
|
|
139 |
}
|
|
142 |
if (getFeatureStore().isEditing()) {
|
|
143 |
getCommands().endComplex();
|
|
144 |
}
|
|
140 | 145 |
notifyObservers(DataStoreNotification.SELECTION_CHANGE); |
141 | 146 |
} |
142 | 147 |
|
143 |
public void deselectAll() { |
|
144 |
if (getFeatureStore().isEditing()) {
|
|
145 |
getCommands().startComplex("_selectionDeselectAll");
|
|
146 |
getCommands().deselectAll(this);
|
|
147 |
}
|
|
148 |
public void deselectAll() throws DataException {
|
|
149 |
if (getFeatureStore().isEditing()) {
|
|
150 |
getCommands().startComplex("_selectionDeselectAll");
|
|
151 |
getCommands().deselectAll(this);
|
|
152 |
}
|
|
148 | 153 |
if (reversed) { |
149 | 154 |
reverse(); |
150 | 155 |
} |
151 | 156 |
selected.clear(); |
152 |
if (getFeatureStore().isEditing()) {
|
|
153 |
getCommands().endComplex();
|
|
154 |
}
|
|
157 |
if (getFeatureStore().isEditing()) {
|
|
158 |
getCommands().endComplex();
|
|
159 |
}
|
|
155 | 160 |
|
156 | 161 |
notifyObservers(DataStoreNotification.SELECTION_CHANGE); |
157 | 162 |
} |
... | ... | |
165 | 170 |
} |
166 | 171 |
|
167 | 172 |
public void reverse() { |
168 |
if (getFeatureStore().isEditing()) {
|
|
169 |
getCommands().selectionReverse(this);
|
|
170 |
}
|
|
171 |
reversed = !reversed;
|
|
173 |
if (getFeatureStore().isEditing()) {
|
|
174 |
getCommands().selectionReverse(this);
|
|
175 |
}
|
|
176 |
reversed = !reversed;
|
|
172 | 177 |
notifyObservers(DataStoreNotification.SELECTION_CHANGE); |
173 | 178 |
} |
174 | 179 |
|
... | ... | |
194 | 199 |
} |
195 | 200 |
|
196 | 201 |
public void dispose() { |
197 |
deselectAll(); |
|
202 |
try { |
|
203 |
deselectAll(); |
|
204 |
} catch (DataException ex) { |
|
205 |
LOGGER.error("Error on dispose(), deselecting all selected values", |
|
206 |
ex); |
|
207 |
} |
|
198 | 208 |
} |
199 | 209 |
|
200 | 210 |
public boolean isFromStore(DataStore store) { |
... | ... | |
227 | 237 |
return featureStore; |
228 | 238 |
} |
229 | 239 |
|
230 |
public void loadState(PersistentState state) throws PersistenceException {
|
|
231 |
state.set("reversed", reversed);
|
|
232 |
state.set("totalSize", totalSize);
|
|
233 |
state.set("selected", selected.iterator());
|
|
234 |
}
|
|
240 |
public void loadState(PersistentState state) throws PersistenceException {
|
|
241 |
state.set("reversed", reversed);
|
|
242 |
state.set("totalSize", totalSize);
|
|
243 |
state.set("selected", selected.iterator());
|
|
244 |
}
|
|
235 | 245 |
|
236 |
public void setState(PersistentState state) throws PersistenceException {
|
|
237 |
this.reversed = state.getBoolean("reversed");
|
|
238 |
this.totalSize = state.getLong("totalSize");
|
|
239 |
Iterator it = state.getIterator("selected");
|
|
240 |
// FIXME: Esto no funcionara bien. Hay que darle una pensada mas.
|
|
241 |
while( it.hasNext() ) {
|
|
242 |
DefaultFeatureReference ref = new DefaultFeatureReference(
|
|
243 |
this.featureStore);
|
|
244 |
ref.setState((PersistentState) it.next());
|
|
245 |
this.selected.add(ref);
|
|
246 |
}
|
|
247 |
}
|
|
246 |
public void setState(PersistentState state) throws PersistenceException {
|
|
247 |
this.reversed = state.getBoolean("reversed");
|
|
248 |
this.totalSize = state.getLong("totalSize");
|
|
249 |
Iterator it = state.getIterator("selected");
|
|
250 |
// FIXME: Esto no funcionara bien. Hay que darle una pensada mas.
|
|
251 |
while (it.hasNext()) {
|
|
252 |
DefaultFeatureReference ref = new DefaultFeatureReference(
|
|
253 |
this.featureStore);
|
|
254 |
ref.setState((PersistentState) it.next());
|
|
255 |
this.selected.add(ref);
|
|
256 |
}
|
|
257 |
}
|
|
248 | 258 |
|
249 |
public PersistentState getState() throws PersistenceException {
|
|
250 |
return AbstractPersistenceManager.getState(this);
|
|
251 |
}
|
|
259 |
public PersistentState getState() throws PersistenceException {
|
|
260 |
return AbstractPersistenceManager.getState(this);
|
|
261 |
}
|
|
252 | 262 |
|
253 | 263 |
private long getFeatureStoreTotalSize() throws DataException { |
254 | 264 |
return getFeatureStore().getFeatureSet().getSize(); |
255 | 265 |
} |
256 | 266 |
|
257 | 267 |
protected AbstractCommandsRecord getCommands() { |
258 |
try {
|
|
259 |
return (AbstractCommandsRecord) getFeatureStore()
|
|
260 |
.getCommandsRecord();
|
|
261 |
} catch (DataException e) {
|
|
262 |
// Ignore
|
|
263 |
return null;
|
|
264 |
}
|
|
265 |
}
|
|
268 |
try {
|
|
269 |
return (AbstractCommandsRecord) getFeatureStore()
|
|
270 |
.getCommandsRecord();
|
|
271 |
} catch (DataException e) {
|
|
272 |
// Ignore
|
|
273 |
return null;
|
|
274 |
}
|
|
275 |
}
|
|
266 | 276 |
|
267 |
|
|
268 | 277 |
} |
Also available in: Unified diff