Revision 38039

View differences:

trunk/extensions/extGeoProcessing/src/com/iver/cit/gvsig/geoprocess/core/util/ViewTools.java
1
package com.iver.cit.gvsig.geoprocess.core.util;
2

  
3
import java.util.ArrayList;
4

  
5
import com.iver.andami.PluginServices;
6
import com.iver.cit.gvsig.ProjectExtension;
7
import com.iver.cit.gvsig.fmap.layers.FLayer;
8
import com.iver.cit.gvsig.fmap.layers.FLayers;
9
import com.iver.cit.gvsig.project.Project;
10
import com.iver.cit.gvsig.project.documents.ProjectDocument;
11
import com.iver.cit.gvsig.project.documents.view.ProjectView;
12
import com.iver.cit.gvsig.project.documents.view.ProjectViewFactory;
13

  
14
public class ViewTools {
15

  
16
    public static ProjectView getViewFromLayer(final FLayer layer) {
17

  
18
	final Project project = ((ProjectExtension) PluginServices.getExtension(ProjectExtension.class)).getProject();
19
	final ArrayList<ProjectDocument> views = project.getDocumentsByType(ProjectViewFactory.registerName);
20

  
21
	for (int i = 0; i < views.size(); i++) {
22
	    final ProjectView view = (ProjectView) views.get(i);
23
	    final FLayers flayers = view.getMapContext().getLayers();
24
	    for (int j = 0; j < flayers.getLayersCount(); j++) {
25
		final FLayer lyr = flayers.getLayer(j);
26
		if (lyr.equals(layer)) {
27
		    return view;
28
		}
29
		final ArrayList layerList = new ArrayList();
30
		splitLayerGroup(lyr, layerList);
31
		for (int k = 0; k < layerList.size(); k++) {
32
		    final FLayer lyr2 = ((FLayer) layerList.get(k));
33
		    if (lyr2.equals(layer)) {
34
			return view;
35
		    }
36
		}
37
	    }
38
	}
39
	return null;
40
    }
41

  
42
    private static void splitLayerGroup(final FLayer layer, final ArrayList result) {
43
	int i;
44
	FLayers layerGroup;
45
	if (layer instanceof FLayers) {
46
	    layerGroup = (FLayers) layer;
47
	    for (i = 0; i < layerGroup.getLayersCount(); i++) {
48
		splitLayerGroup(layerGroup.getLayer(i), result);
49
	    }
50
	}
51
	else {
52
	    result.add(layer);
53
	}
54
    }
55
}
trunk/extensions/extGeoProcessing/src/com/iver/cit/gvsig/geoprocess/impl/buffer/BufferGeoprocessController.java
108 108
import com.iver.cit.gvsig.geoprocess.core.gui.AddResultLayerTask;
109 109
import com.iver.cit.gvsig.geoprocess.core.gui.IGeoprocessPanel;
110 110
import com.iver.cit.gvsig.geoprocess.core.gui.IGeoprocessUserEntries;
111
import com.iver.cit.gvsig.geoprocess.core.util.ViewTools;
111 112
import com.iver.cit.gvsig.geoprocess.impl.buffer.fmap.BufferGeoprocess;
112 113
import com.iver.cit.gvsig.geoprocess.impl.buffer.fmap.BufferVisitor;
113 114
import com.iver.cit.gvsig.geoprocess.impl.buffer.gui.BufferPanelIF;
115
import com.iver.cit.gvsig.project.documents.view.ProjectView;
114 116
import com.iver.cit.gvsig.project.documents.view.gui.View;
115 117
import com.iver.utiles.swing.threads.IMonitorableTask;
116 118
import com.iver.utiles.swing.threads.MonitorableDecoratorMainFirst;
......
232 234
			cap = BufferVisitor.CAP_SQUARE;
233 235
		params.put("cap", new Byte(cap));
234 236
		
235
		
236
		IProjection proj =  ((View)PluginServices.
237
				getMDIManager().
238
				getActiveWindow()).
239
				getMapControl().
240
				getViewPort().
241
				getProjection();
237
		ProjectView view = ViewTools.getViewFromLayer(inputLayer);
238
		IProjection proj =  view.getMapContext().getViewPort().getProjection();
242 239
		params.put("projection", proj);
243 240
		
244 241
		
245
		int distanceUnits = ((View)PluginServices.
246
				getMDIManager().
247
				getActiveWindow()).getMapControl().getViewPort().getDistanceUnits();
242
		int distanceUnits = view.getMapContext().getViewPort().getDistanceUnits();
248 243
		params.put("distanceunits", new Integer(distanceUnits));
249 244
		
250 245
		
251 246
		boolean isProjected = proj.isProjected();
252 247
		int mapUnits = -1;
253 248
		if(isProjected){
254
			mapUnits = ((View)PluginServices.
255
				getMDIManager().
256
				getActiveWindow()).getMapControl().getViewPort().getMapUnits();
249
			mapUnits = view.getMapContext().getViewPort().getMapUnits();
257 250
		}else{
258 251
			mapUnits = 1;
259 252
		}

Also available in: Unified diff