Revision 1230

View differences:

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