Revision 2611 org.gvsig.raster.wmts/trunk/org.gvsig.raster.wmts/org.gvsig.raster.wmts.app.wmtsclient/src/main/java/org/gvsig/raster/wmts/app/wmtsclient/gui/wizard/WMTSWizard.java

View differences:

WMTSWizard.java
33 33
import java.io.IOException;
34 34
import java.net.MalformedURLException;
35 35
import java.net.URL;
36
import java.util.ArrayList;
37
import java.util.List;
36 38
import java.util.Properties;
37 39
import java.util.prefs.Preferences;
38 40

  
39 41
import javax.swing.JOptionPane;
40
import javax.swing.JPanel;
41 42

  
42 43
import org.cresques.cts.IProjection;
43 44
import org.gvsig.andami.Launcher;
......
55 56
import org.gvsig.fmap.dal.DataParameters;
56 57
import org.gvsig.fmap.dal.DataStoreParameters;
57 58
import org.gvsig.fmap.dal.coverage.exception.ConnectException;
59
import org.gvsig.fmap.dal.coverage.store.parameter.RasterDataParameters;
58 60
import org.gvsig.fmap.dal.coverage.store.parameter.TileDataParameters;
59 61
import org.gvsig.fmap.dal.exception.InitializeException;
60 62
import org.gvsig.fmap.dal.exception.ProviderNotRegisteredException;
......
62 64
import org.gvsig.fmap.mapcontext.exceptions.LoadLayerException;
63 65
import org.gvsig.gui.beans.Messages;
64 66
import org.gvsig.raster.util.CancelTaskImpl;
65
import org.gvsig.raster.wmts.app.wmtsclient.gui.panel.WMTSParamsPanel;
66
import org.gvsig.raster.wmts.app.wmtsclient.gui.panel.main.IServerPanel;
67
import org.gvsig.raster.wmts.app.wmtsclient.gui.panel.main.NextPrevPanel;
68 67
import org.gvsig.raster.wmts.app.wmtsclient.layer.FLyrWMTS;
69 68
import org.gvsig.raster.wmts.io.WMTSDataParameters;
70 69
import org.gvsig.raster.wmts.io.WMTSServerExplorer;
71 70
import org.gvsig.raster.wmts.io.WMTSServerExplorerParameters;
72 71
import org.gvsig.raster.wmts.ogc.struct.WMTSServiceIdentification;
72
import org.gvsig.raster.wmts.swing.AddServerPanel;
73
import org.gvsig.raster.wmts.swing.NextPrevPanel;
74
import org.gvsig.raster.wmts.swing.WMTSSwingLocator;
75
import org.gvsig.raster.wmts.swing.WMTSWizardListener;
76
import org.gvsig.raster.wmts.swing.WmtsGUI;
73 77
import org.gvsig.tools.ToolsLocator;
74 78
import org.gvsig.tools.persistence.PersistenceManager;
75 79
import org.gvsig.utils.swing.jcomboServer.ServerData;
......
92 96
	
93 97
	protected int                         page                   = 0;
94 98
	protected boolean                     connected              = false;
95
	private IServerPanel                  serverPanel            = null;
99
	private AddServerPanel                serverPanel            = null;
96 100
	private NextPrevPanel                 nextPrevPanel          = null;
101
	protected WmtsGUI                     wmtsParamsPanel        = null;
97 102
	
98
	private WizardListenerSupport         listenerSupport        = null;
99
	protected WMTSParamsPanel             wmtsParamsPanel        = null;
103
	private WMTSWizardListenerImpl        listenerSupport        = null;
100 104
	private static Preferences            fPrefs                 = Preferences.userRoot().node( "gvsig.wmts-wizard" );
101 105
	private boolean                       refreshing             = fPrefs.getBoolean("refresh_capabilities", false);
102 106
	protected int                         firstPage              = 0;
......
105 109
	private WMTSDataParameters            storeParams            = null;
106 110
	private WMTSServerExplorer            explorer               = null;
107 111

  
112
	public class WMTSWizardListenerImpl implements WMTSWizardListener {
113
		private WizardListenerSupport         gvsigWizardListener    = null;
114
		
115
		public WMTSWizardListenerImpl(WizardListenerSupport gvsigWizardListener) {
116
		  	this.gvsigWizardListener = gvsigWizardListener;
117
		}
118
		
119
		public void callStateChanged(boolean finishable) {
120
			this.gvsigWizardListener.callStateChanged(finishable);
121
		}
122

  
123
		public void callError(Exception descripcion) {
124
			this.gvsigWizardListener.callError(descripcion);
125
		}
126

  
127
		public void addWizardListener(WizardListener listener) {
128
			this.gvsigWizardListener.addWizardListener(listener);
129
		}
130

  
131
		public void removeWizardListener(WizardListener listener) {
132
			this.gvsigWizardListener.removeWizardListener(listener);
133
		}
134

  
135
	}
136

  
108 137
	/**
109 138
	 * This is the default constructor
110 139
	 */
......
145 174
		gridBagConstraints1.gridy = 1;
146 175
		add(getNextPrevPanel(), gridBagConstraints1);
147 176
		activarVisualizarBotones();
148
		serverPanel.getTxtHost().setServerList(getServerDataPersistence().getArrayOfServerData());
177
		getIserverPanel().getTxtHost().setServerList(getServerDataPersistence().getArrayOfServerData());
149 178
	}
150 179
	
151 180
	/**
......
155 184
	 * @return true if you're done, false if not.
156 185
	 */
157 186
	public boolean areSettingsValid() {
158
		return wmtsParamsPanel.isCorrectlyConfigured();
187
		return getPanelPage2().isCorrectlyConfigured();
159 188
	}
160 189
	
161
	private WizardListenerSupport getWizardListenerSupport() {
190
	private WMTSWizardListenerImpl getWizardListenerSupport() {
162 191
		if(listenerSupport == null)
163
			listenerSupport = new WizardListenerSupport();
192
			listenerSupport = new WMTSWizardListenerImpl(new WizardListenerSupport());
164 193
		return listenerSupport;
165 194
	}
166 195
	
167 196
	/**
168
	 * This method initializes jPanel
169
	 *
170
	 * @return javax.swing.JPanel
171
	 */
172
	public NextPrevPanel getNextPrevPanel() {
173
		if (nextPrevPanel == null) {
174
			nextPrevPanel = new NextPrevPanel();
175
			nextPrevPanel.getBtnNext().addActionListener(this);
176
			nextPrevPanel.getBtnPrev().addActionListener(this);
177
		}
178
		return nextPrevPanel;
179
	}
180

  
181
	/**
182 197
	 * Thread to connect to a WMTS server
183 198
	 * @author Nacho Brodin (nachobrodin@gmail.com)
184 199
	 */
......
201 216
	    		explorer.connect(cancel);
202 217
	    		saveServerListFromComboBox();
203 218
			} catch (ConnectException e) {
204
				serverPanel.getTxtAbstract().setText("Connection closed... \n" + e.getMessage());
219
				getIserverPanel().setTextInfo("Connection closed... \n" + e.getMessage());
205 220
				JOptionPane.showMessageDialog(null, Messages.getText("wmts_cant_connect"), Messages.getText("Error"), JOptionPane.ERROR_MESSAGE);
206 221
				return;
207 222
			} finally {
......
230 245
	private boolean checkHostAndNetwork() {
231 246
		if(!explorer.isHostReachable()) {
232 247
			JOptionPane.showMessageDialog(null, Messages.getText("host_unreachable"), Messages.getText("Error"), JOptionPane.ERROR_MESSAGE);
233
			serverPanel.getTxtAbstract().setText("Connection closed... \n");
248
			getIserverPanel().setTextInfo("Connection closed... \n");
234 249
			return false;
235 250
		}
236 251
		return true;
......
241 256
	 */
242 257
	private void rellenarControles() {
243 258
		try {
244
			String host = serverPanel.getTxtHost().getModel().getSelectedItem().toString();
259
			String host = getIserverPanel().getTxtHost().getModel().getSelectedItem().toString();
245 260
			WMTSServiceIdentification id = explorer.getOGCClient().getServiceIdentification();
246 261
			
247
			serverPanel.getJLabelTitle().setText(id.getTitle());
248
			nextPrevPanel.getJLabelServerTypeValue().setText(id.getServiceType());
249
			serverPanel.getTxtAbstract().setText(id.getAbstract());
262
			getIserverPanel().setTitle(id.getTitle());
263
			getNextPrevPanel().getJLabelServerTypeValue().setText(id.getServiceType());
264
			getIserverPanel().setTextInfo(id.getAbstract());
250 265

  
251
			wmtsParamsPanel.setWizardData(explorer);
266
			getPanelPage2().setWizardData(explorer);
252 267
			connected = true;
253 268
			activarVisualizarBotones();
254 269
		} catch (Exception e) {
255 270
			if (e.getMessage() == null) {
256
				serverPanel.getTxtAbstract().setText(PluginServices.getText(this,"error"));
271
				getIserverPanel().setTextInfo(PluginServices.getText(this,"error"));
257 272
			} else {
258
				serverPanel.getTxtAbstract().setText(e.getMessage());
273
				getIserverPanel().setTextInfo(e.getMessage());
259 274
			}
260 275
			getWizardListenerSupport().callError(e);
261
			nextPrevPanel.getBtnNext().setEnabled(false);
262
			nextPrevPanel.getBtnPrev().setEnabled(true);
276
			getNextPrevPanel().getBtnNext().setEnabled(false);
277
			getNextPrevPanel().getBtnPrev().setEnabled(true);
263 278
		} finally {
264
			serverPanel.getBtnCancel().setEnabled(false);
279
			getIserverPanel().getBtnCancel().setEnabled(false);
265 280
		}
266 281
	}
267 282
	
268 283
	public void actionPerformed(ActionEvent e) {
269
		if(e.getSource() == serverPanel.getBtnConnect()) {
270
			serverPanel.getBtnCancel().setEnabled(true);
271
			serverPanel.getTxtAbstract().setText("Trying to connect...");
284
		if(e.getSource() == getIserverPanel().getBtnConnect()) {
285
			getIserverPanel().getBtnCancel().setEnabled(true);
286
			getIserverPanel().setTextInfo("Trying to connect...");
272 287
			
273
			String host = serverPanel.getTxtHost().getModel().getSelectedItem().toString();
288
			String host = getIserverPanel().getTxtHost().getModel().getSelectedItem().toString();
274 289
			try {
275 290
				DataManager datamanager = DALLocator.getDataManager();
276 291
				WMTSServerExplorerParameters explorerParams = (WMTSServerExplorerParameters) datamanager.createServerExplorerParameters(WMTSServerExplorer.NAME);
277 292
				explorerParams.setHost(host);
278
				explorerParams.setLongitudeFirst(serverPanel.getChkInvertAxisOrder().isSelected());
293
				explorerParams.setLongitudeFirst(getIserverPanel().getChkInvertAxisOrder().isSelected());
279 294
				
280 295
				explorer = (WMTSServerExplorer) datamanager.createServerExplorer(explorerParams);
281 296
				
......
283 298
				new ConnectThread(cancel, explorer, this).start();
284 299
				
285 300
			} catch (InitializeException e1) {
286
				serverPanel.getTxtAbstract().setText("Error creating WMTS layer");
301
				getIserverPanel().setTextInfo("Error creating WMTS layer");
287 302
			} catch (ProviderNotRegisteredException e1) {
288
				serverPanel.getTxtAbstract().setText("Provider not registered. I cannot connect.");
303
				getIserverPanel().setTextInfo("Provider not registered. I cannot connect.");
289 304
			} catch (ValidateDataParametersException e1) {
290
				serverPanel.getTxtAbstract().setText("Parameters not valid. I cannot connect.");
305
				getIserverPanel().setTextInfo("Parameters not valid. I cannot connect.");
291 306
			}
292 307
		}
293 308
		
294
		if(e.getSource() == serverPanel.getBtnCancel()) {
295
			serverPanel.getTxtAbstract().setText("Cancelled...");
309
		if(e.getSource() == getIserverPanel().getBtnCancel()) {
310
			getIserverPanel().setTextInfo("Cancelled...");
296 311
			((CancelTaskImpl)cancel).setCanceled(true);
297
			serverPanel.getBtnCancel().setEnabled(false);
312
			getIserverPanel().getBtnCancel().setEnabled(false);
298 313
		}
299 314
		
300
		if(e.getSource() == nextPrevPanel.getBtnPrev()) {
315
		if(e.getSource() == getNextPrevPanel().getBtnPrev()) {
301 316
			page --;
302 317
			if (page > firstPage) {
303
				wmtsParamsPanel.retrocedeTab();
304
				page = wmtsParamsPanel.currentPage() + 1;
318
				getPanelPage2().setPreviousTab();
319
				page = getPanelPage2().currentPage() + 1;
305 320
				activarVisualizarBotones();
306 321
			} else if (page == firstPage){
307 322
				activarVisualizarBotones();
308 323
				page = firstPage +1;
309
				serverPanel.getJLabelTitle().setText("-");
310
				serverPanel.getTxtAbstract().setText("");
311
				wmtsParamsPanel.retrocedeTab();
324
				getIserverPanel().setTitle("-");
325
				getIserverPanel().setTextInfo("");
326
				getPanelPage2().setPreviousTab();
312 327
				getIserverPanel().setVisible(true);
313 328
				getPanelPage2().setVisible(false);
314
				nextPrevPanel.getBtnNext().setEnabled(false);
329
				getNextPrevPanel().getBtnNext().setEnabled(false);
315 330
				connected = false;
316 331
			}
317
			getWizardListenerSupport().callStateChanged(wmtsParamsPanel.isCorrectlyConfigured());
332
			getWizardListenerSupport().callStateChanged(getPanelPage2().isCorrectlyConfigured());
318 333
		}
319 334
		
320
		if(e.getSource() == nextPrevPanel.getBtnNext()) {
335
		if(e.getSource() == getNextPrevPanel().getBtnNext()) {
321 336
			if (page > firstPage) {
322 337
				// si page es mayor que cero, vamos enfocando las
323 338
				// sucesivas SOLAPAS del WMTSParamsPanel
324
				wmtsParamsPanel.avanzaTab();
325
				page = wmtsParamsPanel.currentPage();
339
				getPanelPage2().setNextTab();
340
				page = getPanelPage2().currentPage();
326 341
			}
327 342
			page++;
328 343
			getIserverPanel().setVisible(false);
......
331 346
		}
332 347
	}
333 348
	
334
	private JPanel getIserverPanel() {
349
	private AddServerPanel getIserverPanel() {
335 350
		if (serverPanel == null) {
336
			serverPanel = new IServerPanel();
351
			serverPanel = WMTSSwingLocator.getSwingManager().createAddServerPanel();
337 352
			serverPanel.getBtnCancel().addActionListener(this);
338 353
			serverPanel.getBtnConnect().addActionListener(this);
339 354
		}
340 355
		return serverPanel;
341 356
	}	
342 357
	
343
	protected JPanel getPanelPage2() {
358
	/**
359
	 * This method initializes jPanel
360
	 *
361
	 * @return javax.swing.JPanel
362
	 */
363
	public NextPrevPanel getNextPrevPanel() {
364
		if (nextPrevPanel == null) {
365
			nextPrevPanel = WMTSSwingLocator.getSwingManager().createNextPrevPanel();
366
			nextPrevPanel.getBtnNext().addActionListener(this);
367
			nextPrevPanel.getBtnPrev().addActionListener(this);
368
		}
369
		return nextPrevPanel;
370
	}
371

  
372
	
373
	protected WmtsGUI getPanelPage2() {
344 374
		if (wmtsParamsPanel == null){
345
			wmtsParamsPanel = new WMTSParamsPanel();
346
			wmtsParamsPanel.setListenerSupport(getWizardListenerSupport());
347
			wmtsParamsPanel.getJTabbedPane().addMouseListener(
348
					new java.awt.event.MouseAdapter() {
349
						public void mouseClicked(java.awt.event.MouseEvent e) {
350
							page = wmtsParamsPanel.currentPage() + 1;
351
							activarVisualizarBotones();
352
						}
353
					});
375
			wmtsParamsPanel = WMTSSwingLocator.getSwingManager().createMainWizard(getWizardListenerSupport());
376
			wmtsParamsPanel.addChangeTabListener(new java.awt.event.MouseAdapter() {
377
				public void mouseClicked(java.awt.event.MouseEvent e) {
378
					page = wmtsParamsPanel.currentPage() + 1;
379
					activarVisualizarBotones();
380
				}
381
			});
354 382
		}
355 383
		return wmtsParamsPanel;
356 384
	}
......
360 388
	 */
361 389
	protected void activarVisualizarBotones() {
362 390
		if (page == firstPage) {
363
			nextPrevPanel.getBtnPrev().setEnabled(false);
364
			nextPrevPanel.getBtnPrev().setVisible(true);
391
			getNextPrevPanel().getBtnPrev().setEnabled(false);
392
			getNextPrevPanel().getBtnPrev().setVisible(true);
365 393

  
366 394
			if (connected) {
367
				nextPrevPanel.getBtnNext().setEnabled(true);
395
				getNextPrevPanel().getBtnNext().setEnabled(true);
368 396
			} else {
369
				nextPrevPanel.getBtnNext().setEnabled(false);
397
				getNextPrevPanel().getBtnNext().setEnabled(false);
370 398
			}
371
		} else if (page < wmtsParamsPanel.getNumTabs()) {
372
			nextPrevPanel.getBtnNext().setEnabled(true);
373
			nextPrevPanel.getBtnNext().setVisible(true);
374
			nextPrevPanel.getBtnPrev().setEnabled(true);
375
			nextPrevPanel.getBtnPrev().setVisible(true);
376
			if (wmtsParamsPanel.nextEnabledPage()==-1) {
377
				nextPrevPanel.getBtnNext().setEnabled(false);
399
		} else if (page < getPanelPage2().getNumTabs()) {
400
			getNextPrevPanel().getBtnNext().setEnabled(true);
401
			getNextPrevPanel().getBtnNext().setVisible(true);
402
			getNextPrevPanel().getBtnPrev().setEnabled(true);
403
			getNextPrevPanel().getBtnPrev().setVisible(true);
404
			if (getPanelPage2().nextEnabledPage()==-1) {
405
				getNextPrevPanel().getBtnNext().setEnabled(false);
378 406
			}
379
			getWizardListenerSupport().callStateChanged(wmtsParamsPanel.isCorrectlyConfigured());
380
		} else if (page == wmtsParamsPanel.getNumTabs()) {
381
			nextPrevPanel.getBtnNext().setVisible(false);
382
			nextPrevPanel.getBtnNext().setEnabled(false);
383
			getWizardListenerSupport().callStateChanged(wmtsParamsPanel.isCorrectlyConfigured());
407
			getWizardListenerSupport().callStateChanged(getPanelPage2().isCorrectlyConfigured());
408
		} else if (page == getPanelPage2().getNumTabs()) {
409
			getNextPrevPanel().getBtnNext().setVisible(false);
410
			getNextPrevPanel().getBtnNext().setEnabled(false);
411
			getWizardListenerSupport().callStateChanged(getPanelPage2().isCorrectlyConfigured());
384 412
		}
385 413
	}
386 414
	
......
442 470
	private void saveServerListFromComboBox() {
443 471
		PersistenceManager persistenceManager = ToolsLocator.getPersistenceManager();
444 472
		ServerDataPersistence persistence = new ServerDataPersistence(ServerData.SERVER_TYPE_WMTS);
445
		String urlSelected = serverPanel.getTxtHost().getModel().getSelectedItem().toString();
473
		String urlSelected = getIserverPanel().getTxtHost().getModel().getSelectedItem().toString();
446 474
		
447 475
		boolean isSelectedInModel = false;
448
		for (int i = 0; i < serverPanel.getTxtHost().getItemCount(); i++) {
449
			String url = serverPanel.getTxtHost().getItemAt(i).toString();
476
		for (int i = 0; i < getIserverPanel().getTxtHost().getItemCount(); i++) {
477
			String url = getIserverPanel().getTxtHost().getItemAt(i).toString();
450 478
			persistence.addServerData(new ServerData(url, ServerData.SERVER_TYPE_WMTS));
451 479
			if(url.equals(urlSelected))
452 480
				isSelectedInModel = true;
......
526 554
	 */
527 555
	public URL getHost() {
528 556
		try {
529
			if ((serverPanel.getTxtHost() == null)|| (serverPanel.getTxtHost().getModel().getSelectedItem() == null)) {
557
			if ((getIserverPanel().getTxtHost() == null)|| (getIserverPanel().getTxtHost().getModel().getSelectedItem() == null)) {
530 558
				return new URL(explorer.getHost());
531 559
			} else {
532
				return new URL(serverPanel.getTxtHost().getModel().getSelectedItem().toString());
560
				return new URL(getIserverPanel().getTxtHost().getModel().getSelectedItem().toString());
533 561
			}
534 562
		} catch (MalformedURLException e) {
535 563
			return null;
......
551 579
	@Override
552 580
	public void execute() {
553 581
		try {
554
			wmtsParamsPanel.setDeleteCache(serverPanel.getChkCaching().isSelected());
555
			FLyrWMTS[] layerList = wmtsParamsPanel.getLayers();
556
			for (int i = 0; i < layerList.length; i++) {
557
				getMapCtrl().getMapContext().getLayers().addLayer(layerList[i]);
582
			getPanelPage2().setDeleteCache(getIserverPanel().getChkCaching().isSelected());
583
			RasterDataParameters[] paramsList = getPanelPage2().getDataParameters();
584
			List<FLyrWMTS> lyrList = getLayerList(paramsList);
585
			for (int i = 0; i < lyrList.size(); i++) {
586
				getMapCtrl().getMapContext().getLayers().addLayer(lyrList.get(i));	
558 587
			}
559 588
		} catch (LoadLayerException e) {
560
			e.printStackTrace();
589
			logger.info("Persistence file not found for WMS plugin", e);
561 590
		}
562 591
	}
563
}  //  @jve:decl-index=0:visual-constraint="10,10"
592
	
593
	public List<FLyrWMTS> getLayerList(RasterDataParameters[] paramsList) throws LoadLayerException {
594
		List<FLyrWMTS> layerList = new ArrayList<FLyrWMTS>();
595
		for (int i = 0; i < paramsList.length; i++) {
596
			FLyrWMTS layer = new FLyrWMTS();
597
			layer.deleteCache(getPanelPage2().getDeleteCache());
598
			try {
599
				layer.setParameters(paramsList[i]);
600
				String title = null;
601
				if(paramsList[i] instanceof WMTSDataParameters) {
602
					title = ((WMTSDataParameters) paramsList[i]).getLayer().getTitle();
603
				} else if(paramsList[i] instanceof TileDataParameters) {
604
					DataParameters p = ((TileDataParameters) paramsList[i]).getDataParameters();
605
					if(p instanceof WMTSDataParameters)
606
						title = ((WMTSDataParameters) p).getLayer().getTitle();
607
				}
608
				
609
				layer.setName(title);
610
				layer.setExplorer(explorer);
611
				//Ojo! Pruebas!
612
				//layer.setTileServer(FileTileServer.class);
613
				layerList.add(layer);
614
			} catch (InitializeException e) {
615
				throw new LoadLayerException("Error initializating layer", e);
616
			}
617
		}
618
		return layerList;
619
	}
620
}  

Also available in: Unified diff