Revision 27497 trunk/extensions/extRasterTools-SE/src/org/gvsig/rastertools/geolocation/GeoLocationTocMenuEntry.java

View differences:

GeoLocationTocMenuEntry.java
37 37
import com.iver.cit.gvsig.fmap.MapControl;
38 38
import com.iver.cit.gvsig.fmap.layers.FLayer;
39 39
import com.iver.cit.gvsig.fmap.layers.FLayers;
40
import com.iver.cit.gvsig.fmap.tools.CompoundBehavior;
40 41
import com.iver.cit.gvsig.fmap.tools.Behavior.Behavior;
41 42
import com.iver.cit.gvsig.fmap.tools.Behavior.MouseMovementBehavior;
42 43
import com.iver.cit.gvsig.project.documents.view.gui.BaseView;
43
import com.iver.cit.gvsig.project.documents.view.gui.IView;
44 44
import com.iver.cit.gvsig.project.documents.view.toc.AbstractTocContextMenuAction;
45 45
import com.iver.cit.gvsig.project.documents.view.toc.ITocItem;
46 46
import com.iver.cit.gvsig.project.documents.view.toolListeners.StatusBarListener;
......
130 130
	 * (non-Javadoc)
131 131
	 * @see com.iver.cit.gvsig.project.documents.view.toc.AbstractTocContextMenuAction#execute(com.iver.cit.gvsig.project.documents.view.toc.ITocItem, com.iver.cit.gvsig.fmap.layers.FLayer[])
132 132
	 */
133
	public void execute(ITocItem item, FLayer[] selectedItems) {		
134
		boolean isOpen = false;
133
	public void execute(ITocItem item, FLayer[] selectedItems) {
134
		if (selectedItems == null || selectedItems.length != 1 || !(selectedItems[0] instanceof FLyrRasterSE)) {
135
			RasterToolsUtil.messageBoxError(PluginServices.getText(this,"layers_not_selected"), null);
136
			return;
137
		}
135 138
		
136
		BaseView theView = (BaseView) PluginServices.getMDIManager().getActiveWindow();
137
		MapControl mapCtrl = theView.getMapControl();
138

  
139
		// Listener de eventos de movimiento que pone las coordenadas del rat?n en
140
		// la barra de estado
141
		StatusBarListener sbl = new StatusBarListener(mapCtrl);
139
		BaseView theView = null;
140
		GeoLocationDialog dialog = null;
142 141
		
143
		//Comprobamos si no hay capas activas. En este caso no lanzamos la ventana ni activamos la tool
144 142
		IWindow[] win = PluginServices.getMDIManager().getAllWindows();
145 143
		for (int i = 0; i < win.length; i++) {
146
			if (win[i] instanceof IView) {
147
				FLayers lyrs = ((IView) win[i]).getMapControl().getMapContext().getLayers();
148
				FLayer[] actives = lyrs.getActives();
149
				if (actives == null || actives.length == 0)
150
					return;
144
			if (win[i] instanceof BaseView) {
145
				FLayers lyrs = ((BaseView) win[i]).getMapControl().getMapContext().getLayers();
146
				for (int j = 0; j < lyrs.getLayersCount(); j++) 
147
					if(lyrs.getLayer(j).equals(selectedItems[0])) 
148
						theView = (BaseView)win[i];
151 149
			}
152 150
			if (win[i] instanceof GeoLocationDialog)
153
				isOpen = true;
151
				RasterToolsUtil.closeWindow(win[i]);
154 152
		}
155 153
		
156
		if (selectedItems == null || selectedItems.length != 1 || !(selectedItems[0] instanceof FLyrRasterSE))
154
		if(theView == null) {
155
			RasterToolsUtil.messageBoxError(PluginServices.getText(this,"view_not_found"), null);
157 156
			return;
157
		}
158 158
		
159
		MapControl mapCtrl = theView.getMapControl();
160
		
161
		// Listener de eventos de movimiento que pone las coordenadas del rat?n en
162
		// la barra de estado
163
		StatusBarListener sbl = new StatusBarListener(mapCtrl);
164
		
159 165
		FLyrRasterSE lyr = (FLyrRasterSE)selectedItems[0];
160
		GeoLocationDialog gld = new GeoLocationDialog(lyr, mapCtrl.getViewPort(), theView);
161
		if(!isOpen) {
162
			Point posit = RasterToolsUtil.iwindowPosition((int)gld.getSizeWindow().getWidth(), (int)gld.getSizeWindow().getHeight());
163
			gld.setPosition((int)posit.getX(), (int)posit.getY());
164
			RasterToolsUtil.addWindow(gld);
165
		}
166
		dialog = new GeoLocationDialog(lyr, mapCtrl.getViewPort(), theView);
167
		Point posit = RasterToolsUtil.iwindowPosition((int)dialog.getSizeWindow().getWidth(), (int)dialog.getSizeWindow().getHeight());
168
		dialog.setPosition((int)posit.getX(), (int)posit.getY());
169
		RasterToolsUtil.addWindow(dialog);
166 170
		
167
		gld.init(mapCtrl);
168
		loadGeoPanListener(mapCtrl, sbl, gld, lyr);
171
		dialog.init(mapCtrl);
172
		loadGeoPanListener(mapCtrl, sbl, dialog, lyr);
169 173
		mapCtrl.setTool("geoPan");
170 174
	}
171 175

  
......
177 181
			GeorefPanListener pl = new GeorefPanListener(mapCtrl);
178 182
			mb = new GeoRasterBehavior(pl, gld, lyr);
179 183
			mapCtrl.addMapTool("geoPan", new Behavior[]{mb, new MouseMovementBehavior(sbl)});
184
		} else {
185
			Behavior b = mapCtrl.getMapTool("geoPan");
186
			if(	b instanceof CompoundBehavior &&
187
				((CompoundBehavior)b).getBehavior(0) instanceof GeoRasterBehavior) {
188
				GeoRasterBehavior beh = (GeoRasterBehavior)((CompoundBehavior)b).getBehavior(0);
189
				beh.setLayer(lyr);
190
				beh.setITransformIO(gld);	
191
			}				
180 192
		}
181
		
182
		if(mb != null) {
183
			mb.setLayer(lyr);
184
			mb.setITransformIO(gld);
185
		}
186 193
	}
187 194
	
188 195
	/*

Also available in: Unified diff