gvsig-raster / org.gvsig.raster.wcs / trunk / org.gvsig.raster.wcs / org.gvsig.raster.wcs.app / org.gvsig.raster.wcs.app.wcsclient / src / main / java / org / gvsig / raster / wcs / app / wcsclient / gui / wizard / WCSWizard.java @ 1356
History | View | Annotate | Download (25.5 KB)
1 | 418 | nbrodin | /* gvSIG. Geographic Information System of the Valencian Government
|
---|---|---|---|
2 | *
|
||
3 | * Copyright (C) 2007-2008 Infrastructures and Transports Department
|
||
4 | * of the Valencian Government (CIT)
|
||
5 | *
|
||
6 | * This program is free software; you can redistribute it and/or
|
||
7 | * modify it under the terms of the GNU General Public License
|
||
8 | * as published by the Free Software Foundation; either version 2
|
||
9 | * of the License, or (at your option) any later version.
|
||
10 | *
|
||
11 | * This program is distributed in the hope that it will be useful,
|
||
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
14 | * GNU General Public License for more details.
|
||
15 | *
|
||
16 | * You should have received a copy of the GNU General Public License
|
||
17 | * along with this program; if not, write to the Free Software
|
||
18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
||
19 | * MA 02110-1301, USA.
|
||
20 | *
|
||
21 | */
|
||
22 | |||
23 | package org.gvsig.raster.wcs.app.wcsclient.gui.wizard; |
||
24 | |||
25 | 1137 | nbrodin | import java.awt.Component; |
26 | 418 | nbrodin | import java.awt.FlowLayout; |
27 | import java.awt.event.ActionEvent; |
||
28 | import java.awt.event.ActionListener; |
||
29 | import java.awt.geom.Rectangle2D; |
||
30 | 1356 | nbrodin | import java.io.IOException; |
31 | 418 | nbrodin | import java.net.MalformedURLException; |
32 | import java.net.URL; |
||
33 | import java.util.prefs.Preferences; |
||
34 | |||
35 | import javax.swing.DefaultComboBoxModel; |
||
36 | import javax.swing.JButton; |
||
37 | import javax.swing.JCheckBox; |
||
38 | import javax.swing.JLabel; |
||
39 | 1137 | nbrodin | import javax.swing.JOptionPane; |
40 | 418 | nbrodin | import javax.swing.JPanel; |
41 | import javax.swing.JScrollPane; |
||
42 | import javax.swing.JTextArea; |
||
43 | |||
44 | import org.cresques.cts.IProjection; |
||
45 | import org.gvsig.andami.PluginServices; |
||
46 | import org.gvsig.andami.persistence.serverData.ServerDataPersistence; |
||
47 | import org.gvsig.andami.ui.mdiManager.IWindow; |
||
48 | import org.gvsig.app.gui.WizardPanel; |
||
49 | import org.gvsig.app.gui.wizards.WizardListener; |
||
50 | import org.gvsig.app.gui.wizards.WizardListenerSupport; |
||
51 | import org.gvsig.app.project.documents.view.gui.AbstractViewPanel; |
||
52 | import org.gvsig.compat.net.ICancellable; |
||
53 | import org.gvsig.fmap.dal.DALLocator; |
||
54 | import org.gvsig.fmap.dal.DataManager; |
||
55 | import org.gvsig.fmap.dal.DataStoreParameters; |
||
56 | import org.gvsig.fmap.dal.coverage.exception.RemoteServiceException; |
||
57 | import org.gvsig.fmap.dal.exception.InitializeException; |
||
58 | import org.gvsig.fmap.dal.exception.ProviderNotRegisteredException; |
||
59 | import org.gvsig.fmap.dal.exception.ValidateDataParametersException; |
||
60 | import org.gvsig.fmap.mapcontext.exceptions.ProjectionLayerException; |
||
61 | import org.gvsig.fmap.mapcontext.layers.FLayer; |
||
62 | 1356 | nbrodin | import org.gvsig.gui.beans.Messages; |
63 | 1137 | nbrodin | import org.gvsig.raster.cache.tile.TileCacheLibrary; |
64 | 418 | nbrodin | import org.gvsig.raster.util.CancelTaskImpl; |
65 | 422 | nbrodin | import org.gvsig.raster.wcs.app.wcsclient.gui.panel.WCSParamsPanel; |
66 | 470 | nbrodin | import org.gvsig.raster.wcs.io.WCSDataParameters; |
67 | import org.gvsig.raster.wcs.io.WCSServerExplorer; |
||
68 | import org.gvsig.raster.wcs.io.WCSServerExplorerParameters; |
||
69 | 418 | nbrodin | import org.gvsig.utils.NotExistInXMLEntity; |
70 | import org.gvsig.utils.XMLEntity; |
||
71 | import org.gvsig.utils.swing.jcomboServer.JComboServer; |
||
72 | import org.gvsig.utils.swing.jcomboServer.ServerData; |
||
73 | 1078 | nbrodin | import org.slf4j.Logger; |
74 | import org.slf4j.LoggerFactory; |
||
75 | 418 | nbrodin | |
76 | |||
77 | |||
78 | /**
|
||
79 | * The WCS properties container panel.
|
||
80 | *
|
||
81 | * @author Jaume Dominguez Faus
|
||
82 | */
|
||
83 | public class WCSWizard extends WizardPanel implements ActionListener { |
||
84 | 1078 | nbrodin | final static private Logger logger = LoggerFactory.getLogger(WCSWizard.class); |
85 | 418 | nbrodin | private static final long serialVersionUID = 1L; |
86 | protected int page = 0; |
||
87 | protected boolean connected = false; |
||
88 | private JComboServer cmbHost = null; |
||
89 | private JButton btnConnect = null; |
||
90 | private JButton btnCancel = null; |
||
91 | private JPanel jPanel = null; |
||
92 | private JLabel jLabel1 = null; |
||
93 | private JLabel lblTitle = null; |
||
94 | private JScrollPane jScrollPane = null; |
||
95 | private JTextArea txtAbstract = null; |
||
96 | private JPanel panelPage1 = null; |
||
97 | private JButton btnSiguiente = null; |
||
98 | private JButton btnAnterior = null; |
||
99 | private JPanel jPanel1 = null; |
||
100 | protected WizardListenerSupport listenerSupport = new WizardListenerSupport(); |
||
101 | protected WCSParamsPanel wcsParamsPanel = null; |
||
102 | protected JLabel lblServerType = null; |
||
103 | protected JLabel lblServerTypeValue = null; |
||
104 | private JCheckBox chkCaching = null; |
||
105 | 485 | nbrodin | private static Preferences fPrefs = Preferences.userRoot().node( "gvsig.wcs-wizard" ); |
106 | 1143 | nbrodin | private boolean usingTileCache = fPrefs.getBoolean("tile_cache", false); |
107 | 658 | nbrodin | private JCheckBox chkTileCache = null; |
108 | 418 | nbrodin | private boolean refreshing = fPrefs.getBoolean("refresh_capabilities", false); |
109 | protected int firstPage = 0; |
||
110 | private JPanel pnlName = null; |
||
111 | private IProjection proj = null; |
||
112 | private ICancellable cancel = null; |
||
113 | private WCSDataParameters storeParams = null; |
||
114 | private WCSServerExplorer explorer = null; |
||
115 | |||
116 | |||
117 | public WCSWizard (WCSParamsPanel params) {
|
||
118 | super();
|
||
119 | firstPage = 1;
|
||
120 | page = firstPage; |
||
121 | this.wcsParamsPanel = params;
|
||
122 | this.explorer = wcsParamsPanel.getExplorer();
|
||
123 | |||
124 | setTabName("WCS");
|
||
125 | lblServerType = new JLabel(); |
||
126 | lblServerType.setBounds(20, 444, 100, 20); |
||
127 | lblServerType.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); |
||
128 | lblServerType.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT); |
||
129 | lblServerType.setFont(new java.awt.Font("Arial", java.awt.Font.PLAIN, 11)); |
||
130 | lblServerType.setText(PluginServices.getText(this, "server_type")+":"); |
||
131 | lblServerTypeValue = new JLabel(); |
||
132 | lblServerTypeValue.setBounds(128, 444, 148, 20); |
||
133 | lblServerTypeValue.setFont(new java.awt.Font("Arial", java.awt.Font.BOLD, 11)); |
||
134 | lblServerTypeValue.setText("-");
|
||
135 | this.setSize(510, 468); |
||
136 | this.setLayout(null); |
||
137 | this.setPreferredSize(new java.awt.Dimension(750, 420)); |
||
138 | this.setVisible(true); |
||
139 | |||
140 | wcsParamsPanel.setListenerSupport(this.listenerSupport);
|
||
141 | wcsParamsPanel.setBounds(0, 5, 510, 428); |
||
142 | wcsParamsPanel.getJTabbedPane().addMouseListener( |
||
143 | new java.awt.event.MouseAdapter() {
|
||
144 | public void mouseClicked(java.awt.event.MouseEvent e) { |
||
145 | page = wcsParamsPanel.currentPage() + 1;
|
||
146 | activarVisualizarBotones(); |
||
147 | } |
||
148 | }); |
||
149 | this.add(wcsParamsPanel, null); |
||
150 | this.add(lblServerType, null); |
||
151 | this.add(lblServerTypeValue, null); |
||
152 | 1356 | nbrodin | getWCSParamsPanel().setVisible(true);
|
153 | 418 | nbrodin | |
154 | connected = true;
|
||
155 | } |
||
156 | |||
157 | /**
|
||
158 | * This is the default constructor
|
||
159 | */
|
||
160 | public WCSWizard() {
|
||
161 | super();
|
||
162 | firstPage = 0;
|
||
163 | page = firstPage; |
||
164 | initialize(); |
||
165 | |||
166 | IWindow[] windows = PluginServices.getMDIManager().getAllWindows();
|
||
167 | for (int i = 0; i < windows.length; i++) { |
||
168 | if(windows[i] instanceof AbstractViewPanel) |
||
169 | proj = ((AbstractViewPanel)windows[i]).getProjection(); |
||
170 | } |
||
171 | cancel = new CancelTaskImpl();
|
||
172 | } |
||
173 | /**
|
||
174 | * This method initializes this
|
||
175 | */
|
||
176 | private void initialize() { |
||
177 | setTabName("WCS");
|
||
178 | |||
179 | lblServerType = new JLabel(); |
||
180 | lblServerType.setBounds(20, 444, 100, 20); |
||
181 | lblServerType.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); |
||
182 | lblServerType.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT); |
||
183 | lblServerType.setFont(new java.awt.Font("Arial", java.awt.Font.PLAIN, 11)); |
||
184 | lblServerType.setText(PluginServices.getText(this, "server_type")+":"); |
||
185 | lblServerTypeValue = new JLabel(); |
||
186 | lblServerTypeValue.setBounds(128, 444, 148, 20); |
||
187 | lblServerTypeValue.setFont(new java.awt.Font("Arial", java.awt.Font.BOLD, 11)); |
||
188 | lblServerTypeValue.setText("-");
|
||
189 | this.setSize(510, 468); |
||
190 | this.setLayout(null); |
||
191 | this.setPreferredSize(new java.awt.Dimension(750, 420)); |
||
192 | this.setVisible(true); |
||
193 | this.add(getPanelPage1(), null); |
||
194 | 1356 | nbrodin | this.add(getWCSParamsPanel(), null); |
195 | 418 | nbrodin | this.add(getBtnAnterior(), null); |
196 | this.add(getBtnSiguiente(), null); |
||
197 | this.add(lblServerType, null); |
||
198 | this.add(lblServerTypeValue, null); |
||
199 | activarVisualizarBotones(); |
||
200 | } |
||
201 | |||
202 | |||
203 | 1356 | nbrodin | protected JPanel getWCSParamsPanel(){ |
204 | 418 | nbrodin | if (wcsParamsPanel == null){ |
205 | wcsParamsPanel = new WCSParamsPanel();
|
||
206 | wcsParamsPanel.setListenerSupport(this.listenerSupport);
|
||
207 | wcsParamsPanel.setBounds(0, 5, 510, 428); |
||
208 | wcsParamsPanel.getJTabbedPane().addMouseListener( |
||
209 | new java.awt.event.MouseAdapter() {
|
||
210 | public void mouseClicked(java.awt.event.MouseEvent e) { |
||
211 | page = wcsParamsPanel.currentPage() + 1;
|
||
212 | activarVisualizarBotones(); |
||
213 | } |
||
214 | }); |
||
215 | } |
||
216 | return wcsParamsPanel;
|
||
217 | } |
||
218 | 1131 | nbrodin | |
219 | 418 | nbrodin | /**
|
220 | 1131 | nbrodin | * This method checks for the options selected within the configuration
|
221 | * dialog are correct.
|
||
222 | *
|
||
223 | * @return true if you're done, false if not.
|
||
224 | */
|
||
225 | 1132 | nbrodin | public boolean areSettingsValid() { |
226 | 1131 | nbrodin | return wcsParamsPanel.isCorrectlyConfigured();
|
227 | } |
||
228 | |||
229 | /**
|
||
230 | 418 | nbrodin | * DOCUMENT ME!
|
231 | *
|
||
232 | * @param host DOCUMENT ME!
|
||
233 | */
|
||
234 | private void addHost(String host) { |
||
235 | host = host.trim(); |
||
236 | |||
237 | 485 | nbrodin | ServerDataPersistence persistence = new ServerDataPersistence(this,ServerData.SERVER_TYPE_WCS); |
238 | persistence.addServerData(new ServerData(host, ServerData.SERVER_TYPE_WCS));
|
||
239 | 418 | nbrodin | persistence.setPersistent(); |
240 | } |
||
241 | |||
242 | /**
|
||
243 | 485 | nbrodin | * Thread to connect to a WCS server
|
244 | 418 | nbrodin | * @author Nacho Brodin (nachobrodin@gmail.com)
|
245 | */
|
||
246 | public class ConnectThread extends Thread { |
||
247 | private ICancellable cancel = null; |
||
248 | private WCSServerExplorer explorer = null; |
||
249 | private WCSWizard wizard = null; |
||
250 | |||
251 | public ConnectThread(ICancellable cancel, WCSServerExplorer explorer, WCSWizard wizard) {
|
||
252 | this.cancel = cancel;
|
||
253 | this.explorer = explorer;
|
||
254 | this.wizard = wizard;
|
||
255 | } |
||
256 | |||
257 | public void run() { |
||
258 | try {
|
||
259 | explorer.connect(cancel); |
||
260 | } catch (RemoteServiceException e) {
|
||
261 | 1356 | nbrodin | String msg = getIOExceptionMessage(e);
|
262 | if(msg != null) { |
||
263 | logger.info(msg, e); |
||
264 | JOptionPane.showMessageDialog(getWCSParamsPanel(), msg, Messages.getText("Error"), JOptionPane.ERROR_MESSAGE); |
||
265 | } else
|
||
266 | logger.info("IOException", e);
|
||
267 | 418 | nbrodin | return;
|
268 | } finally {
|
||
269 | ((CancelTaskImpl)cancel).setCanceled(false);
|
||
270 | } |
||
271 | |||
272 | 664 | nbrodin | storeParams = (WCSDataParameters)explorer.getStoreParameters(); |
273 | 658 | nbrodin | |
274 | 418 | nbrodin | wizard.rellenarControles(); |
275 | } |
||
276 | 1356 | nbrodin | |
277 | /**
|
||
278 | * Gets the <code>IOException</code> message. The message
|
||
279 | * of this exception is returned by the server
|
||
280 | * @param e
|
||
281 | * @return
|
||
282 | */
|
||
283 | private String getIOExceptionMessage(Exception e) { |
||
284 | Throwable ex = e;
|
||
285 | final int MAX_DEEP = 10; |
||
286 | int deep = 0; |
||
287 | while(deep < MAX_DEEP) {
|
||
288 | Throwable t = null; |
||
289 | if(ex instanceof IOException) { |
||
290 | return ex.getMessage();
|
||
291 | } else if(ex instanceof RemoteServiceException) { |
||
292 | t = ex.getCause(); |
||
293 | } |
||
294 | if(t == null) |
||
295 | return null; |
||
296 | else
|
||
297 | ex = t; |
||
298 | deep++; |
||
299 | } |
||
300 | return null; |
||
301 | } |
||
302 | 418 | nbrodin | } |
303 | |||
304 | /**
|
||
305 | * DOCUMENT ME!
|
||
306 | */
|
||
307 | private void rellenarControles() { |
||
308 | try {
|
||
309 | String host = cmbHost.getModel().getSelectedItem().toString();
|
||
310 | |||
311 | lblTitle.setText(explorer.getTitle()); |
||
312 | lblServerTypeValue.setText(explorer.getServerType()); |
||
313 | txtAbstract.setText(explorer.getAbstract()); |
||
314 | |||
315 | addHost(host); |
||
316 | wcsParamsPanel.setWizardData(explorer); |
||
317 | connected = true;
|
||
318 | activarVisualizarBotones(); |
||
319 | } catch (Exception e) { |
||
320 | if (e.getMessage()==null) { |
||
321 | txtAbstract.setText(PluginServices.getText(this,"error")); |
||
322 | } else {
|
||
323 | txtAbstract.setText(e.getMessage()); |
||
324 | } |
||
325 | listenerSupport.callError(e); |
||
326 | getBtnSiguiente().setEnabled(false);
|
||
327 | getBtnAnterior().setEnabled(true);
|
||
328 | } finally {
|
||
329 | getBtnCancel().setEnabled(false);
|
||
330 | } |
||
331 | } |
||
332 | |||
333 | 1356 | nbrodin | @SuppressWarnings("deprecation") |
334 | 418 | nbrodin | public void actionPerformed(ActionEvent e) { |
335 | if(e.getSource() == getBtnConnect()) {
|
||
336 | getBtnCancel().setEnabled(true);
|
||
337 | getTxtAbstract().setText("Trying to connect...");
|
||
338 | String host = cmbHost.getModel().getSelectedItem().toString();
|
||
339 | try {
|
||
340 | DataManager datamanager = DALLocator.getDataManager(); |
||
341 | WCSServerExplorerParameters explorerParams = (WCSServerExplorerParameters) datamanager.createServerExplorerParameters(WCSServerExplorer.NAME); |
||
342 | explorerParams.setHost(host); |
||
343 | |||
344 | explorer = (WCSServerExplorer) datamanager.createServerExplorer(explorerParams); |
||
345 | |||
346 | ((CancelTaskImpl)cancel).setCanceled(false);
|
||
347 | new ConnectThread(cancel, explorer, this).start(); |
||
348 | |||
349 | } catch (InitializeException e1) {
|
||
350 | getTxtAbstract().setText("Error creating WCS layer");
|
||
351 | } catch (ProviderNotRegisteredException e1) {
|
||
352 | getTxtAbstract().setText("Provider not registered. I cannot connect.");
|
||
353 | } catch (ValidateDataParametersException e1) {
|
||
354 | getTxtAbstract().setText("Parameters not valid. I cannot connect.");
|
||
355 | } |
||
356 | } |
||
357 | |||
358 | if(e.getSource() == getBtnCancel()) {
|
||
359 | getTxtAbstract().setText("Cancelled...");
|
||
360 | ((CancelTaskImpl)cancel).setCanceled(true);
|
||
361 | getBtnCancel().setEnabled(false);
|
||
362 | } |
||
363 | } |
||
364 | |||
365 | /**
|
||
366 | * DOCUMENT ME!
|
||
367 | */
|
||
368 | protected void activarVisualizarBotones() { |
||
369 | if (page == firstPage) {
|
||
370 | getBtnAnterior().setEnabled(false);
|
||
371 | getBtnSiguiente().setVisible(true);
|
||
372 | |||
373 | if (connected) {
|
||
374 | getBtnSiguiente().setEnabled(true);
|
||
375 | } else {
|
||
376 | getBtnSiguiente().setEnabled(false);
|
||
377 | } |
||
378 | } else if (page < wcsParamsPanel.getNumTabs()) { |
||
379 | getBtnSiguiente().setEnabled(true);
|
||
380 | getBtnSiguiente().setVisible(true);
|
||
381 | getBtnAnterior().setEnabled(true);
|
||
382 | getBtnAnterior().setVisible(true);
|
||
383 | if (wcsParamsPanel.nextEnabledPage()==-1){ |
||
384 | getBtnSiguiente().setEnabled(false);
|
||
385 | } |
||
386 | listenerSupport.callStateChanged(wcsParamsPanel.isCorrectlyConfigured()); |
||
387 | } else if (page == wcsParamsPanel.getNumTabs()) { |
||
388 | getBtnSiguiente().setVisible(false);
|
||
389 | getBtnSiguiente().setEnabled(false);
|
||
390 | listenerSupport.callStateChanged(wcsParamsPanel.isCorrectlyConfigured()); |
||
391 | } |
||
392 | } |
||
393 | |||
394 | /**
|
||
395 | * This method initializes txtHost
|
||
396 | *
|
||
397 | * @return javax.swing.JTextField
|
||
398 | */
|
||
399 | private javax.swing.JComboBox getTxtHost() {
|
||
400 | if (cmbHost == null) { |
||
401 | cmbHost = new JComboServer();
|
||
402 | cmbHost.setModel(new DefaultComboBoxModel()); |
||
403 | cmbHost.setPreferredSize(new java.awt.Dimension(350, 20)); |
||
404 | cmbHost.setBounds(11, 26, 454, 20); |
||
405 | cmbHost.setEditable(true);
|
||
406 | |||
407 | ServerDataPersistence persistence = new ServerDataPersistence(this,ServerData.SERVER_TYPE_WCS); |
||
408 | ServerData[] servers = persistence.getArrayOfServerData();
|
||
409 | |||
410 | if (servers.length == 0){ |
||
411 | PluginServices ps = PluginServices.getPluginServices(this);
|
||
412 | XMLEntity xml = ps.getPersistentXML(); |
||
413 | try {
|
||
414 | String[] oldServers = xml.getStringArrayProperty("wcs-servers"); |
||
415 | servers = new ServerData[oldServers.length];
|
||
416 | for (int i=0; i<oldServers.length; i++) { |
||
417 | servers[i] = new ServerData(oldServers[i],ServerData.SERVER_TYPE_WCS);
|
||
418 | } |
||
419 | 485 | nbrodin | xml.remove("wcs-servers");
|
420 | 418 | nbrodin | ps.setPersistentXML(xml); |
421 | } catch (NotExistInXMLEntity e) {
|
||
422 | // Old servers doesn't exist
|
||
423 | servers = new ServerData[2]; |
||
424 | servers[0] = new ServerData("http://maps.gdal.org/cgi-bin/mapserv_dem",ServerData.SERVER_TYPE_WCS); |
||
425 | servers[1] = new ServerData("http://inspire.cop.gva.es/mapserver/wcs",ServerData.SERVER_TYPE_WCS); |
||
426 | } |
||
427 | |||
428 | for (int i=0 ; i<servers.length ; i++){ |
||
429 | persistence.addServerData(servers[i]); |
||
430 | } |
||
431 | persistence.setPersistent(); |
||
432 | } |
||
433 | |||
434 | cmbHost.setServerList(servers); |
||
435 | } |
||
436 | |||
437 | return cmbHost;
|
||
438 | } |
||
439 | |||
440 | /**
|
||
441 | * This method initializes btnDetalles
|
||
442 | *
|
||
443 | * @return javax.swing.JButton
|
||
444 | */
|
||
445 | private JButton getBtnConnect() { |
||
446 | if (btnConnect == null) { |
||
447 | btnConnect = new JButton(); |
||
448 | btnConnect.setPreferredSize(new java.awt.Dimension(100, 20)); |
||
449 | btnConnect.setBounds(262, 50, 100, 20); |
||
450 | btnConnect.setText(PluginServices.getText(this, "conectar")); |
||
451 | btnConnect.addActionListener(this);
|
||
452 | } |
||
453 | |||
454 | return btnConnect;
|
||
455 | } |
||
456 | |||
457 | /**
|
||
458 | * This method initializes btnDetalles
|
||
459 | *
|
||
460 | * @return javax.swing.JButton
|
||
461 | */
|
||
462 | private JButton getBtnCancel() { |
||
463 | if (btnCancel == null) { |
||
464 | btnCancel = new JButton(); |
||
465 | btnCancel.setEnabled(false);
|
||
466 | btnCancel.setPreferredSize(new java.awt.Dimension(100, 20)); |
||
467 | btnCancel.setBounds(366, 50, 100, 20); |
||
468 | btnCancel.setText(PluginServices.getText(this, "cancel")); |
||
469 | btnCancel.addActionListener(this);
|
||
470 | } |
||
471 | |||
472 | return btnCancel;
|
||
473 | } |
||
474 | |||
475 | /**
|
||
476 | * This method initializes jPanel
|
||
477 | *
|
||
478 | * @return javax.swing.JPanel
|
||
479 | */
|
||
480 | private javax.swing.JPanel getJPanel() {
|
||
481 | if (jPanel == null) { |
||
482 | jPanel = new javax.swing.JPanel();
|
||
483 | jPanel.setLayout(null);
|
||
484 | jPanel.setPreferredSize(new java.awt.Dimension(470, 130)); |
||
485 | jPanel.setBorder(javax.swing.BorderFactory.createTitledBorder( |
||
486 | null, PluginServices.getText(this, "description"), |
||
487 | javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, |
||
488 | javax.swing.border.TitledBorder.DEFAULT_POSITION, null, null)); |
||
489 | 658 | nbrodin | jPanel.setBounds(2, 116, 477, 304); |
490 | 418 | nbrodin | |
491 | jPanel.add(getJScrollPane(), null);
|
||
492 | jPanel.add(getPnlName(), null);
|
||
493 | } |
||
494 | |||
495 | return jPanel;
|
||
496 | } |
||
497 | |||
498 | /**
|
||
499 | * This method initializes jLabel1
|
||
500 | *
|
||
501 | * @return javax.swing.JLabel
|
||
502 | */
|
||
503 | private javax.swing.JLabel getJLabel1() {
|
||
504 | if (jLabel1 == null) { |
||
505 | jLabel1 = new javax.swing.JLabel();
|
||
506 | jLabel1.setText(PluginServices.getText(this, "name") + ":"); |
||
507 | } |
||
508 | |||
509 | return jLabel1;
|
||
510 | } |
||
511 | |||
512 | /**
|
||
513 | * This method initializes lblTitle
|
||
514 | *
|
||
515 | * @return javax.swing.JLabel
|
||
516 | */
|
||
517 | private javax.swing.JLabel getLblTitle() {
|
||
518 | if (lblTitle == null) { |
||
519 | lblTitle = new javax.swing.JLabel();
|
||
520 | lblTitle.setText("-");
|
||
521 | } |
||
522 | |||
523 | return lblTitle;
|
||
524 | } |
||
525 | |||
526 | /**
|
||
527 | * This method initializes jScrollPane
|
||
528 | *
|
||
529 | * @return javax.swing.JScrollPane
|
||
530 | */
|
||
531 | private javax.swing.JScrollPane getJScrollPane() {
|
||
532 | if (jScrollPane == null) { |
||
533 | jScrollPane = new javax.swing.JScrollPane();
|
||
534 | jScrollPane.setViewportView(getTxtAbstract()); |
||
535 | jScrollPane.setPreferredSize(new java.awt.Dimension(450, 60)); |
||
536 | 658 | nbrodin | jScrollPane.setBounds(10, 47, 457, 247); |
537 | 418 | nbrodin | } |
538 | |||
539 | return jScrollPane;
|
||
540 | } |
||
541 | |||
542 | /**
|
||
543 | * This method initializes txtAbstract
|
||
544 | *
|
||
545 | * @return javax.swing.JTextArea
|
||
546 | */
|
||
547 | private javax.swing.JTextArea getTxtAbstract() {
|
||
548 | if (txtAbstract == null) { |
||
549 | txtAbstract = new javax.swing.JTextArea();
|
||
550 | txtAbstract.setWrapStyleWord(true);
|
||
551 | txtAbstract.setColumns(30);
|
||
552 | txtAbstract.setLineWrap(true);
|
||
553 | } |
||
554 | |||
555 | return txtAbstract;
|
||
556 | } |
||
557 | |||
558 | private javax.swing.JPanel getPanelPage1() {
|
||
559 | if (panelPage1 == null) { |
||
560 | panelPage1 = new JPanel(); |
||
561 | panelPage1.setLayout(null);
|
||
562 | panelPage1.setPreferredSize(new java.awt.Dimension(480, 220)); |
||
563 | panelPage1.setVisible(true);
|
||
564 | panelPage1.setBounds(15, 5, 480, 427); |
||
565 | panelPage1.add(getJPanel1(), null);
|
||
566 | panelPage1.add(getJPanel(), null);
|
||
567 | } |
||
568 | |||
569 | return panelPage1;
|
||
570 | } |
||
571 | |||
572 | |||
573 | /**
|
||
574 | * This method initializes btnSiguiente
|
||
575 | *
|
||
576 | * @return javax.swing.JButton
|
||
577 | */
|
||
578 | private javax.swing.JButton getBtnSiguiente() {
|
||
579 | if (btnSiguiente == null) { |
||
580 | btnSiguiente = new JButton(); |
||
581 | btnSiguiente.setPreferredSize(new java.awt.Dimension(100, 30)); |
||
582 | btnSiguiente.setBounds(395, 444, 100, 20); |
||
583 | btnSiguiente.setText(PluginServices.getText(this, "siguiente")); |
||
584 | btnSiguiente.addActionListener(new java.awt.event.ActionListener() {
|
||
585 | public void actionPerformed(java.awt.event.ActionEvent e) { |
||
586 | 1137 | nbrodin | if(page == firstPage && getChkTileCache().isSelected()) {
|
587 | messageBoxInfo("remote_service_tiled", TileCacheLibrary.ALTERNATIVE_TILESIZE + "", this); |
||
588 | } |
||
589 | 418 | nbrodin | if (page > firstPage) {
|
590 | // si page es mayor que cero, vamos enfocando las
|
||
591 | // sucesivas SOLAPAS del WCSParamsPanel
|
||
592 | wcsParamsPanel.avanzaTab(); |
||
593 | page = wcsParamsPanel.currentPage(); |
||
594 | } |
||
595 | page++; |
||
596 | getPanelPage1().setVisible(false);
|
||
597 | 1356 | nbrodin | getWCSParamsPanel().setVisible(true);
|
598 | 418 | nbrodin | activarVisualizarBotones(); |
599 | } |
||
600 | }); |
||
601 | } |
||
602 | return btnSiguiente;
|
||
603 | } |
||
604 | 1137 | nbrodin | |
605 | /**
|
||
606 | * Shows an information dialog with a text and a accept button
|
||
607 | * @param msg Message to show in the dialog
|
||
608 | * @param parentWindow Parent window
|
||
609 | */
|
||
610 | public static void messageBoxInfo(String msg, String fixedText, Object parentWindow){ |
||
611 | String string = PluginServices.getText(parentWindow, "accept"); |
||
612 | Object[] options = {string}; |
||
613 | JOptionPane.showOptionDialog((Component)PluginServices.getMainFrame(), |
||
614 | "<html>" + PluginServices.getText(parentWindow, msg).replaceAll("\n", "<br>") + " " + fixedText + "</html>", |
||
615 | PluginServices.getText(parentWindow, "confirmacion"),
|
||
616 | JOptionPane.OK_OPTION,
|
||
617 | JOptionPane.INFORMATION_MESSAGE,
|
||
618 | null,
|
||
619 | options, |
||
620 | string); |
||
621 | } |
||
622 | 418 | nbrodin | |
623 | /**
|
||
624 | * This method initializes btnAnterior
|
||
625 | *
|
||
626 | * @return javax.swing.JButton
|
||
627 | */
|
||
628 | private javax.swing.JButton getBtnAnterior() {
|
||
629 | if (btnAnterior == null) { |
||
630 | btnAnterior = new JButton(); |
||
631 | btnAnterior.setBounds(292, 444, 100, 20); |
||
632 | btnAnterior.setPreferredSize(new java.awt.Dimension(100, 30)); |
||
633 | btnAnterior.setText(PluginServices.getText(this, "anterior")); |
||
634 | btnAnterior.addActionListener(new java.awt.event.ActionListener() {
|
||
635 | public void actionPerformed(java.awt.event.ActionEvent e) { |
||
636 | page --; |
||
637 | if (page > firstPage) {
|
||
638 | // Tenemos que retroceder en el wcsParamsPanel
|
||
639 | wcsParamsPanel.retrocedeTab(); |
||
640 | page = wcsParamsPanel.currentPage() + 1;
|
||
641 | activarVisualizarBotones(); |
||
642 | } else if (page==firstPage){ |
||
643 | activarVisualizarBotones(); |
||
644 | page = firstPage +1;
|
||
645 | getLblTitle().setText("-");
|
||
646 | getTxtAbstract().setText("");
|
||
647 | wcsParamsPanel.retrocedeTab(); |
||
648 | getPanelPage1().setVisible(true);
|
||
649 | 1356 | nbrodin | getWCSParamsPanel().setVisible(false);
|
650 | 418 | nbrodin | getBtnSiguiente().setEnabled(false);
|
651 | connected = false;
|
||
652 | } |
||
653 | listenerSupport.callStateChanged(wcsParamsPanel.isCorrectlyConfigured()); |
||
654 | } |
||
655 | }); |
||
656 | } |
||
657 | |||
658 | return btnAnterior;
|
||
659 | } |
||
660 | |||
661 | private javax.swing.JPanel getJPanel1() {
|
||
662 | if (jPanel1 == null) { |
||
663 | jPanel1 = new javax.swing.JPanel();
|
||
664 | jPanel1.setLayout(null);
|
||
665 | jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder( |
||
666 | null, PluginServices.getText(this, "server"), |
||
667 | javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, |
||
668 | javax.swing.border.TitledBorder.DEFAULT_POSITION, null, null)); |
||
669 | 658 | nbrodin | jPanel1.setBounds(2, 5, 477, 105); |
670 | 418 | nbrodin | jPanel1.add(getTxtHost(), null);
|
671 | jPanel1.add(getBtnConnect(), null);
|
||
672 | jPanel1.add(getBtnCancel(), null);
|
||
673 | jPanel1.add(getChkCaching(), null);
|
||
674 | 658 | nbrodin | jPanel1.add(getChkTileCache(), null);
|
675 | 418 | nbrodin | } |
676 | |||
677 | return jPanel1;
|
||
678 | } |
||
679 | |||
680 | /**
|
||
681 | * DOCUMENT ME!
|
||
682 | *
|
||
683 | * @param listener
|
||
684 | */
|
||
685 | public void addWizardListener(WizardListener listener) { |
||
686 | listenerSupport.addWizardListener(listener); |
||
687 | } |
||
688 | |||
689 | /**
|
||
690 | * DOCUMENT ME!
|
||
691 | *
|
||
692 | * @param listener
|
||
693 | */
|
||
694 | public void removeWizardListener(WizardListener listener) { |
||
695 | listenerSupport.removeWizardListener(listener); |
||
696 | } |
||
697 | |||
698 | /**
|
||
699 | * DOCUMENT ME!
|
||
700 | *
|
||
701 | * @return DOCUMENT ME!
|
||
702 | * @throws ProjectionLayerException
|
||
703 | */
|
||
704 | public Rectangle2D getLayersRectangle() throws ProjectionLayerException { |
||
705 | //return wcsParamsPanel.getLayersRectangle();
|
||
706 | return null; |
||
707 | } |
||
708 | |||
709 | |||
710 | |||
711 | /**
|
||
712 | * Devuelve el host que est� escrito en el cuadro de texto del host o null
|
||
713 | * en caso de que no haya nada escrito o est� mal escrito
|
||
714 | *
|
||
715 | * @return URL del host
|
||
716 | */
|
||
717 | public URL getHost() { |
||
718 | try {
|
||
719 | if ((cmbHost == null)|| (cmbHost.getModel().getSelectedItem() == null)) { |
||
720 | return new URL(explorer.getHost()); |
||
721 | } else {
|
||
722 | return new URL(cmbHost.getModel().getSelectedItem().toString()); |
||
723 | } |
||
724 | } catch (MalformedURLException e) { |
||
725 | return null; |
||
726 | } |
||
727 | } |
||
728 | |||
729 | /**
|
||
730 | * DOCUMENT ME!
|
||
731 | *
|
||
732 | * @return Nombre de la capa que aparece en el TOC.
|
||
733 | */
|
||
734 | public String getLayerName() { |
||
735 | return wcsParamsPanel.getLayerName();
|
||
736 | } |
||
737 | |||
738 | |||
739 | public void initWizard() { |
||
740 | } |
||
741 | |||
742 | public void execute() { |
||
743 | try {
|
||
744 | 664 | nbrodin | FLayer layer = wcsParamsPanel.getLayer(getChkTileCache().isSelected()); |
745 | 1355 | nbrodin | if(layer == null) |
746 | return;
|
||
747 | 418 | nbrodin | this.getMapCtrl().getMapContext().getLayers().addLayer(layer);
|
748 | 1356 | nbrodin | } catch (InitializeException e) {
|
749 | 1078 | nbrodin | logger.info("The layer cannot be added", e);
|
750 | 418 | nbrodin | } |
751 | |||
752 | } |
||
753 | |||
754 | /**
|
||
755 | * This method initializes chkCaching
|
||
756 | *
|
||
757 | * @return javax.swing.JCheckBox
|
||
758 | */
|
||
759 | private JCheckBox getChkCaching() { |
||
760 | if (chkCaching == null) { |
||
761 | chkCaching = new JCheckBox(); |
||
762 | chkCaching.setBounds(7, 51, 249, 20); |
||
763 | chkCaching.setText(PluginServices.getText(this, "refresh_capabilities")); |
||
764 | chkCaching.setToolTipText(PluginServices.getText(this, "refresh_capabilities_tooltip")); |
||
765 | chkCaching.setSelected(refreshing); |
||
766 | chkCaching.addItemListener(new java.awt.event.ItemListener() {
|
||
767 | public void itemStateChanged(java.awt.event.ItemEvent e) { |
||
768 | refreshing = chkCaching.isSelected(); |
||
769 | } |
||
770 | }); |
||
771 | chkCaching.addActionListener(new java.awt.event.ActionListener() {
|
||
772 | public void actionPerformed(java.awt.event.ActionEvent e) { |
||
773 | fPrefs.putBoolean("refresh_capabilities", chkCaching.isSelected());
|
||
774 | } |
||
775 | }); |
||
776 | |||
777 | } |
||
778 | return chkCaching;
|
||
779 | } |
||
780 | 658 | nbrodin | |
781 | /**
|
||
782 | * This method initializes chkCaching
|
||
783 | *
|
||
784 | * @return javax.swing.JCheckBox
|
||
785 | */
|
||
786 | private JCheckBox getChkTileCache() { |
||
787 | if (chkTileCache == null) { |
||
788 | chkTileCache = new JCheckBox(); |
||
789 | chkTileCache.setBounds(7, 72, 249, 20); |
||
790 | chkTileCache.setText(PluginServices.getText(this, "tile_cache")); |
||
791 | chkTileCache.setToolTipText(PluginServices.getText(this, "tile_cache_tooltip")); |
||
792 | chkTileCache.setSelected(usingTileCache); |
||
793 | chkTileCache.addItemListener(new java.awt.event.ItemListener() {
|
||
794 | public void itemStateChanged(java.awt.event.ItemEvent e) { |
||
795 | usingTileCache = chkTileCache.isSelected(); |
||
796 | } |
||
797 | }); |
||
798 | chkTileCache.addActionListener(new java.awt.event.ActionListener() {
|
||
799 | public void actionPerformed(java.awt.event.ActionEvent e) { |
||
800 | fPrefs.putBoolean("tile_cache", chkTileCache.isSelected());
|
||
801 | } |
||
802 | }); |
||
803 | 418 | nbrodin | |
804 | 658 | nbrodin | } |
805 | return chkTileCache;
|
||
806 | } |
||
807 | |||
808 | 418 | nbrodin | /**
|
809 | * This method initializes pnlName
|
||
810 | *
|
||
811 | * @return javax.swing.JPanel
|
||
812 | */
|
||
813 | private JPanel getPnlName() { |
||
814 | if (pnlName == null) { |
||
815 | pnlName = new JPanel(new FlowLayout(FlowLayout.LEFT, 10, 0)); |
||
816 | pnlName.setBounds(new java.awt.Rectangle(9,19,452,24)); |
||
817 | pnlName.add(getJLabel1(), null);
|
||
818 | pnlName.add(getLblTitle(), null);
|
||
819 | } |
||
820 | return pnlName;
|
||
821 | } |
||
822 | |||
823 | @Override
|
||
824 | public DataStoreParameters[] getParameters() { |
||
825 | // TODO Auto-generated method stub
|
||
826 | return null; |
||
827 | } |
||
828 | |||
829 | @Override
|
||
830 | public void close() { |
||
831 | // Nothing to do
|
||
832 | } |
||
833 | } // @jve:decl-index=0:visual-constraint="10,10" |