Revision 1230
org.gvsig.raster.tools/trunk/org.gvsig.raster.tools/org.gvsig.raster.tools.app/org.gvsig.raster.tools.app.basic/src/main/java/org/gvsig/raster/tools/app/basic/tool/roi/ui/ROIManagerDialog.java | ||
---|---|---|
33 | 33 |
import org.gvsig.app.project.documents.view.gui.AbstractViewPanel; |
34 | 34 |
import org.gvsig.fmap.dal.coverage.exception.GridException; |
35 | 35 |
import org.gvsig.fmap.dal.coverage.grid.ROI; |
36 |
import org.gvsig.fmap.dal.exception.DataException; |
|
37 |
import org.gvsig.fmap.dal.feature.FeatureStore; |
|
36 | 38 |
import org.gvsig.fmap.mapcontext.layers.FLayer; |
37 | 39 |
import org.gvsig.fmap.mapcontrol.MapControl; |
38 | 40 |
import org.gvsig.gui.beans.buttonspanel.ButtonsPanel; |
... | ... | |
127 | 129 |
public void close() { |
128 | 130 |
try { |
129 | 131 |
PluginServices.getMDIManager().closeWindow(this); |
132 |
IWindow[] list = PluginServices.getMDIManager().getAllWindows(); |
|
133 |
for (int i = 0; i < list.length; i++) { |
|
134 |
if(list[i] instanceof AbstractViewPanel) { |
|
135 |
((AbstractViewPanel)list[i]).getMapControl().getMapContext().invalidate(); |
|
136 |
} |
|
137 |
} |
|
130 | 138 |
} catch (ArrayIndexOutOfBoundsException e) { |
131 | 139 |
//Si la ventana no se puede eliminar no hacemos nada |
132 | 140 |
} |
... | ... | |
161 | 169 |
/* |
162 | 170 |
* Limpiar los gr?ficos de la vista: |
163 | 171 |
*/ |
172 |
FeatureStore graphicStore = getROIsManagerPanel().getTablePanel().getGraphicLayer().getFeatureStore(); |
|
173 |
if(graphicStore.isEditing()) |
|
174 |
try { |
|
175 |
graphicStore.finishEditing(); |
|
176 |
} catch (DataException e) { |
|
177 |
e.printStackTrace(); |
|
178 |
} |
|
164 | 179 |
getROIsManagerPanel().getTablePanel().clearRoiGraphics(); |
165 | 180 |
getROIsManagerPanel().getTablePanel().getMapControl().rePaintDirtyLayers(); |
166 | 181 |
setPreviousTool(); |
org.gvsig.raster.tools/trunk/org.gvsig.raster.tools/org.gvsig.raster.tools.app/org.gvsig.raster.tools.app.basic/src/main/java/org/gvsig/raster/tools/app/basic/tool/roi/ui/ROIsTablePanel.java | ||
---|---|---|
295 | 295 |
loadROIs(roisArray); |
296 | 296 |
} |
297 | 297 |
|
298 |
@SuppressWarnings("deprecation") |
|
298 | 299 |
private void loadROIs(List<ROI> roisArray) throws GridException { |
299 | 300 |
if (roisArray != null) { |
300 | 301 |
ISymbol symbol = null; |
... | ... | |
361 | 362 |
public void selectDrawRoiTool() { |
362 | 363 |
if (mapControl != null) |
363 | 364 |
if (getPolygonToolButton().isSelected()) { |
364 |
Image img = IconThemeHelper.getImageIcon("poligoncursor-icon").getImage();
|
|
365 |
Image img = IconThemeHelper.getImageIcon("polygon-cursor").getImage();
|
|
365 | 366 |
curImage = img; |
366 | 367 |
mapControl.setTool("drawPolygonROI"); |
367 | 368 |
} else if (getLineToolButton().isSelected()) { |
368 |
Image img = IconThemeHelper.getImageIcon("linecursor-icon").getImage();
|
|
369 |
Image img = IconThemeHelper.getImageIcon("line-cursor").getImage();
|
|
369 | 370 |
curImage = img; |
370 | 371 |
mapControl.setTool("drawLineROI"); |
371 | 372 |
} else if (getPointToolButton().isSelected()) { |
372 |
Image img = IconThemeHelper.getImageIcon("pointcursor-icon").getImage();
|
|
373 |
Image img = IconThemeHelper.getImageIcon("point-cursor").getImage();
|
|
373 | 374 |
curImage = img; |
374 | 375 |
mapControl.setTool("drawPointROI"); |
375 | 376 |
} |
... | ... | |
385 | 386 |
} catch (InterruptedException e) { |
386 | 387 |
return null; |
387 | 388 |
} |
388 |
/*IRasterDataSource dsetCopy = null; |
|
389 |
dsetCopy = rasterLayer.getDataSource().newDataset(); |
|
390 |
BufferFactory bufferFactory = new BufferFactory(dsetCopy); |
|
391 |
bufferFactory.setReadOnly(true); |
|
392 |
bufferFactory.setAllDrawableBands(); |
|
393 |
|
|
394 |
int bands[] = null; |
|
395 |
bands = new int[rasterLayer.getBandCount()]; |
|
396 |
for (int i = 0; i < rasterLayer.getBandCount(); i++) |
|
397 |
bands[i] = i; |
|
398 |
try { |
|
399 |
grid = RasterLocator.getManager().createGrid(datasource, bands); |
|
400 |
//new Grid(bufferFactory, bands); |
|
401 |
} catch (RasterBufferInvalidException e) { |
|
402 |
e.printStackTrace(); |
|
403 |
}*/ |
|
404 | 389 |
} |
405 | 390 |
return grid; |
406 | 391 |
} |
... | ... | |
455 | 440 |
public JToggleButton getPolygonToolButton() { |
456 | 441 |
if (polygonToolButton == null) { |
457 | 442 |
polygonToolButton = new JToggleButton(); |
458 |
polygonToolButton.setIcon(IconThemeHelper.getImageIcon("layer-modify-roi"));
|
|
443 |
polygonToolButton.setIcon(IconThemeHelper.getImageIcon("polygon-icon"));
|
|
459 | 444 |
} |
460 | 445 |
return polygonToolButton; |
461 | 446 |
} |
org.gvsig.raster.tools/trunk/org.gvsig.raster.tools/org.gvsig.raster.tools.app/org.gvsig.raster.tools.app.basic/src/main/java/org/gvsig/raster/tools/app/basic/tool/roi/ui/listener/DrawMouseViewListener.java | ||
---|---|---|
171 | 171 |
GraphicLayer graphicLayer = tablePanel.getGraphicLayer(); |
172 | 172 |
|
173 | 173 |
FeatureStore store = graphicLayer.getFeatureStore(); |
174 |
store.edit(); |
|
174 |
if(!store.isEditing()) |
|
175 |
store.edit(); |
|
175 | 176 |
EditableFeature feature = tablePanel.getRoiFeatureManager() |
176 | 177 |
.addROIFeature(roi, graphicLayer, geometry, sym); |
177 | 178 |
store.insert(feature); |
org.gvsig.raster.tools/trunk/org.gvsig.raster.tools/org.gvsig.raster.tools.app/org.gvsig.raster.tools.app.basic/src/main/java/org/gvsig/raster/tools/app/basic/tool/roi/ROIFeatureManager.java | ||
---|---|---|
32 | 32 |
import org.gvsig.fmap.dal.coverage.grid.ROI; |
33 | 33 |
import org.gvsig.fmap.dal.exception.DataException; |
34 | 34 |
import org.gvsig.fmap.dal.feature.EditableFeature; |
35 |
import org.gvsig.fmap.dal.feature.Feature; |
|
35 | 36 |
import org.gvsig.fmap.dal.feature.FeatureReference; |
37 |
import org.gvsig.fmap.dal.feature.FeatureSet; |
|
36 | 38 |
import org.gvsig.fmap.dal.feature.FeatureStore; |
37 | 39 |
import org.gvsig.fmap.geom.Geometry; |
38 | 40 |
import org.gvsig.fmap.mapcontext.layers.vectorial.GraphicLayer; |
39 | 41 |
import org.gvsig.fmap.mapcontext.rendering.symbols.ISymbol; |
42 |
import org.gvsig.tools.dispose.DisposableIterator; |
|
43 |
import org.slf4j.Logger; |
|
44 |
import org.slf4j.LoggerFactory; |
|
40 | 45 |
|
41 | 46 |
/** |
42 | 47 |
* Manages a table of ROI with its related list of Features. |
... | ... | |
44 | 49 |
* @author <a href="mailto:cordinyana@gvsig.org">C?sar Ordi?ana</a> |
45 | 50 |
*/ |
46 | 51 |
public class ROIFeatureManager { |
47 |
|
|
52 |
protected static final Logger logger = LoggerFactory.getLogger(ROIFeatureManager.class); |
|
48 | 53 |
private Map<String, List<FeatureReference>> roiNameToFeatureList = Collections |
49 | 54 |
.synchronizedMap(new HashMap<String, List<FeatureReference>>()); |
50 | 55 |
|
... | ... | |
119 | 124 |
private synchronized boolean removeROI(String roiName, GraphicLayer layer, |
120 | 125 |
boolean onlyRemoveFromLayer) { |
121 | 126 |
String roiId = getROIId(roiName); |
122 |
layer.removeGraphics(roiId); |
|
127 |
//layer.removeGraphics(roiId); |
|
128 |
removeGraphics(layer, layerId.concat("-")); |
|
123 | 129 |
return onlyRemoveFromLayer ? true : roiNameToFeatureList.remove(roiName) != null; |
124 | 130 |
} |
131 |
|
|
132 |
public void removeGraphics(GraphicLayer lyr, String prefix) { |
|
133 |
DisposableIterator iterator = null; |
|
134 |
FeatureSet featureSet = null; |
|
135 |
FeatureStore store = lyr.getFeatureStore(); |
|
136 |
try{ |
|
137 |
store.beginComplexNotification(); |
|
138 |
if (!store.isEditing()){ |
|
139 |
store.edit(); |
|
140 |
} |
|
141 |
featureSet = store.getFeatureSet(); |
|
142 |
for (iterator = featureSet.fastIterator(); iterator.hasNext();) { |
|
143 |
Feature feature = (Feature) iterator.next(); |
|
144 |
Object obj = feature.get(GraphicLayer.FEATURE_ATTR_GROUPID); |
|
145 |
if (obj instanceof String && ((String)obj).startsWith(prefix)) { |
|
146 |
featureSet.delete(feature); |
|
147 |
} |
|
148 |
} |
|
149 |
store.finishEditing(); |
|
150 |
store.endComplexNotification(); |
|
151 |
} catch (DataException e) { |
|
152 |
logger.error("Error clearing all the geometry of the graphic layer", e); |
|
153 |
} finally { |
|
154 |
if (featureSet != null) { |
|
155 |
featureSet.dispose(); |
|
156 |
} |
|
157 |
if (iterator != null) { |
|
158 |
iterator.dispose(); |
|
159 |
} |
|
160 |
} |
|
161 |
} |
|
125 | 162 |
|
126 | 163 |
public String getROIId(String roiName) { |
127 | 164 |
return layerId.concat("-").concat(roiName); |
org.gvsig.raster.tools/trunk/org.gvsig.raster.tools/org.gvsig.raster.tools.app/org.gvsig.raster.tools.app.basic/src/main/resources/text.properties | ||
---|---|---|
179 | 179 |
mostrar_estadisticas=Mostrar estad?sticas |
180 | 180 |
boton_mostrar=Mostrar todos |
181 | 181 |
boton_limpiar=Limpiar |
182 |
recorte=Recortar capa |
|
182 |
recorte=Recortar capa raster
|
|
183 | 183 |
coordenadas_pixel=Coordenadas Pixel |
184 | 184 |
sup_izq=Sub. Izq. |
185 | 185 |
inf_der=Inf. Der. |
org.gvsig.raster.tools/trunk/org.gvsig.raster.tools/org.gvsig.raster.tools.app/org.gvsig.raster.tools.app.basic/src/main/resources/text_en.properties | ||
---|---|---|
180 | 180 |
mostrar_estadisticas=Show statistics |
181 | 181 |
boton_mostrar=Show all |
182 | 182 |
boton_limpiar=Clean |
183 |
recorte=Clip layer |
|
183 |
recorte=Clip raster layer
|
|
184 | 184 |
coordenadas_pixel=Pixel coordinates |
185 | 185 |
sup_izq=Upper left |
186 | 186 |
inf_der=Lower right |
org.gvsig.raster.tools/trunk/org.gvsig.raster.tools/org.gvsig.raster.tools.app/org.gvsig.raster.tools.app.basic/pom.xml | ||
---|---|---|
121 | 121 |
<artifactId>org.gvsig.metadata.lib.basic.api</artifactId> |
122 | 122 |
<scope>compile</scope> |
123 | 123 |
</dependency> |
124 |
<dependency> |
|
125 |
<groupId>org.geotools</groupId> |
|
126 |
<artifactId>gt2-coverage</artifactId> |
|
127 |
<version>2.2-RC2</version> |
|
128 |
<scope>compile</scope> |
|
129 |
</dependency> |
|
130 |
<dependency> |
|
131 |
<groupId>org.geotools</groupId> |
|
132 |
<artifactId>gt2-geotiff</artifactId> |
|
133 |
<version>2.2-RC2</version> |
|
134 |
<scope>compile</scope> |
|
135 |
</dependency> |
|
124 | 136 |
</dependencies> |
125 | 137 |
<profiles> |
126 | 138 |
<profile> |
Also available in: Unified diff