Revision 41418

View differences:

trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.app/org.gvsig.app.mainplugin/src/main/java/org/gvsig/app/project/documents/view/toc/actions/ZoomAlTemaTocMenuEntry.java
29 29
import org.gvsig.app.project.documents.view.toc.AbstractTocContextMenuAction;
30 30
import org.gvsig.app.project.documents.view.toc.ITocItem;
31 31
import org.gvsig.fmap.dal.exception.ReadException;
32
import org.gvsig.fmap.geom.Geometry;
32 33
import org.gvsig.fmap.geom.GeometryLocator;
33 34
import org.gvsig.fmap.geom.GeometryManager;
34 35
import org.gvsig.fmap.geom.Geometry.SUBTYPES;
......
84 85

  
85 86
	}
86 87

  
88
    public void execute(ITocItem ite, FLayer[] selectedItems) {
87 89

  
88
	public void execute(ITocItem ite, FLayer[] selectedItems) {
90
        if (selectedItems.length == 1) {
91
            try {
92
                if (!selectedItems[0].isAvailable()) {
93
                    return;
94
                }
95
                getMapContext().zoomToEnvelope(selectedItems[0].getFullEnvelope());
96
            } catch (ReadException e1) {
97
                e1.printStackTrace();
98
            }
99
        } else {
100
            try {
101
                Envelope maxExtent = setMaxExtent(selectedItems);
102
                getMapContext().zoomToEnvelope(maxExtent);
103
            } catch (ReadException e1) {
104
                e1.printStackTrace();
105
            }
106
        }
107
        Project project = ((ProjectExtension) PluginServices.getExtension(ProjectExtension.class)).getProject();
108
        project.setModified(true);
109
    }
89 110

  
111
    private Envelope setMaxExtent(FLayer[] actives)
112
            throws ReadException {
90 113

  
91
		// 050209, jmorell: Para que haga un zoom a un grupo de capas seleccionadas.
114
        Envelope extRef = null;
115
        try {
116
            extRef = geomManager.createEnvelope(Geometry.SUBTYPES.GEOM2D);
117
        } catch (Exception ex) {
118
            logger.warn("Can't create new envelope", ex);
119
            return null;
120
        }
121
        for (int i = 0; i < actives.length; i++) {
122
            if (actives[i].isAvailable()) {
123
                Envelope extVar = actives[i].getFullEnvelope();
124
                try {
125
                    extRef.add(extVar);
126
                } catch (Exception e) {
127
                    logger.warn("Error creating the envelope", e);
128
                }
129
            }
130
        }
131
        return extRef;
132
    }
92 133

  
93
		if (selectedItems.length==1) {
94
	        try {
95
	        	if (!selectedItems[0].isAvailable()) {
96
					return;
97
				}
98
	        	getMapContext().zoomToEnvelope(selectedItems[0].getFullEnvelope());
99
			} catch (ReadException e1) {
100
				e1.printStackTrace();
101
			}
102
		} else {
103
			try {
104
				Envelope maxExtent = setMaxExtent(selectedItems);
105
				getMapContext().zoomToEnvelope(maxExtent);
106
			} catch (ReadException e1) {
107
				e1.printStackTrace();
108
			}
109
		}
110
		Project project=((ProjectExtension)PluginServices.getExtension(ProjectExtension.class)).getProject();
111
		project.setModified(true);
112
	}
113

  
114
	private Envelope setMaxExtent(FLayer[] actives)
115
			throws ReadException {
116
		Envelope extRef = null;
117
			extRef = actives[0].getFullEnvelope();
118

  
119
			double minXRef = extRef.getMinimum(0);
120
			double maxYRef = extRef.getMaximum(1);
121
			double maxXRef = extRef.getMaximum(0);
122
			double minYRef = extRef.getMinimum(1);
123
			for (int i = 0; i < actives.length; i++) {
124
				if (actives[i].isAvailable()) {
125
					Envelope extVar = actives[i].getFullEnvelope();
126
					double minXVar = extVar.getMinimum(0);
127
					double maxYVar = extVar.getMaximum(1);
128
					double maxXVar = extVar.getMaximum(0);
129
					double minYVar = extVar.getMinimum(1);
130
					if (minXVar <= minXRef) {
131
						minXRef = minXVar;
132
					}
133
					if (maxYVar >= maxYRef) {
134
						maxYRef = maxYVar;
135
					}
136
					if (maxXVar >= maxXRef) {
137
						maxXRef = maxXVar;
138
					}
139
					if (minYVar <= minYRef) {
140
						minYRef = minYVar;
141
					}
142
					try {
143
						extRef = geomManager.createEnvelope(minXRef, minYRef, maxXRef, maxYRef, SUBTYPES.GEOM2D);
144
					} catch (CreateEnvelopeException e) {
145
						logger.error("Error creating the envelope", e);
146
					}
147
				}
148
			}
149
		return extRef;
150
	}
134
    
151 135
}
trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.app/org.gvsig.app.mainplugin/src/main/java/org/gvsig/app/extension/ViewControls.java
43 43
import org.gvsig.app.project.documents.view.gui.IView;
44 44
import org.gvsig.app.project.documents.view.toc.gui.FPopupMenu;
45 45
import org.gvsig.app.project.documents.view.toolListeners.snapping.Snapping;
46
import org.gvsig.fmap.geom.primitive.Envelope;
46 47
import org.gvsig.fmap.mapcontext.MapContext;
47 48
import org.gvsig.fmap.mapcontext.layers.FLayer;
48 49
import org.gvsig.fmap.mapcontext.layers.FLayers;
......
80 81
        MapControl mapCtrl = view.getMapControl();
81 82

  
82 83
        if (command.equalsIgnoreCase("view-navigation-zoom-all")) {
83
            mapa.getViewPort().setEnvelope(mapa.getLayers().getFullEnvelope());
84
            document.setModified(true);
84
            Envelope all = mapa.getLayers().getFullEnvelope();
85
            if( all!=null && !all.isEmpty() ) {
86
                mapa.getViewPort().setEnvelope(all);
87
                document.setModified(true);
88
            }
85 89

  
86 90
        } else if (command.equalsIgnoreCase("view-navigation-frame-manager")) {
87 91
            FPanelExtentSelector l = new FPanelExtentSelector();
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.symbology/org.gvsig.symbology.lib/org.gvsig.symbology.lib.impl/src/main/java/org/gvsig/symbology/fmap/mapcontext/rendering/legend/impl/AbstractVectorialLegend.java
379 379
				dataProjection = coordTrans.getPOrig();
380 380

  
381 381
				Envelope env = featureStore.getEnvelope();
382
				if (!env.isEmpty()) {
382
				if ( env!=null && !env.isEmpty()) {
383 383
					reprojectedDataEnvelop = env.convert(coordTrans);
384 384
				} else {
385 385
					reprojectedDataEnvelop = env;

Also available in: Unified diff