svn-gvsig-desktop / branches / v2_0_0_prep / extensions / org.gvsig.image.extension / src / main / java / org / gvsig / arcims / image / gui / panels / FeatureServicePanel.java @ 32321
History | View | Annotate | Download (47.1 KB)
1 |
/* 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 |
/*
|
24 |
* AUTHORS (In addition to CIT):
|
25 |
* 2010 Prodevelop S.L. main development
|
26 |
* http://www.prodevelop.es
|
27 |
*/
|
28 |
|
29 |
package org.gvsig.arcims.image.gui.panels; |
30 |
|
31 |
import java.awt.BorderLayout; |
32 |
import java.awt.event.ActionEvent; |
33 |
import java.awt.event.ActionListener; |
34 |
import java.awt.event.ItemEvent; |
35 |
import java.awt.event.ItemListener; |
36 |
import java.awt.event.KeyEvent; |
37 |
import java.awt.event.KeyListener; |
38 |
import java.awt.event.MouseEvent; |
39 |
import java.awt.event.MouseListener; |
40 |
import java.util.Vector; |
41 |
|
42 |
import javax.swing.DefaultListModel; |
43 |
import javax.swing.ImageIcon; |
44 |
import javax.swing.JButton; |
45 |
import javax.swing.JCheckBox; |
46 |
import javax.swing.JEditorPane; |
47 |
import javax.swing.JLabel; |
48 |
import javax.swing.JList; |
49 |
import javax.swing.JOptionPane; |
50 |
import javax.swing.JPanel; |
51 |
import javax.swing.JScrollPane; |
52 |
import javax.swing.JTabbedPane; |
53 |
import javax.swing.JTextField; |
54 |
import javax.swing.JToolTip; |
55 |
import javax.swing.JTree; |
56 |
import javax.swing.ToolTipManager; |
57 |
import javax.swing.event.ChangeEvent; |
58 |
import javax.swing.event.ChangeListener; |
59 |
import javax.swing.event.ListDataEvent; |
60 |
import javax.swing.event.ListDataListener; |
61 |
import javax.swing.event.TreeSelectionEvent; |
62 |
import javax.swing.event.TreeSelectionListener; |
63 |
import javax.swing.tree.DefaultMutableTreeNode; |
64 |
import javax.swing.tree.DefaultTreeModel; |
65 |
|
66 |
import org.slf4j.Logger; |
67 |
import org.slf4j.LoggerFactory; |
68 |
import org.gvsig.andami.PluginServices; |
69 |
import org.gvsig.app.addlayer.AddLayerDialog; |
70 |
import org.gvsig.arcims.image.gui.panels.utils.AvailableLayersTreeCellRenderer; |
71 |
import org.gvsig.arcims.image.gui.panels.utils.JMultilineToolTip; |
72 |
import org.gvsig.arcims.image.gui.panels.utils.LayersListElement; |
73 |
import org.gvsig.arcims.image.gui.panels.utils.SelectedLayersListCellRenderer; |
74 |
import org.gvsig.arcims.image.gui.panels.utils.ServiceNamesObject; |
75 |
import org.gvsig.arcims.image.gui.panels.utils.ServicesTableModel; |
76 |
import org.gvsig.arcims.image.gui.wizards.ArcImsImageWizard; |
77 |
import org.gvsig.remoteclient.arcims.utils.ServiceInformation; |
78 |
import org.gvsig.remoteclient.arcims.utils.ServiceInformationLayer; |
79 |
|
80 |
|
81 |
|
82 |
/**
|
83 |
* This class implements the ArcIMS wizard's panel which enables the user to
|
84 |
* select which layers must be retrieved from a Image Service (selected on the
|
85 |
* ServiceNamesPanel).
|
86 |
*
|
87 |
* @see org.gvsig.arcims.image.gui.panels.ServiceNamesPanel
|
88 |
*
|
89 |
*
|
90 |
* @author jldominguez
|
91 |
*/
|
92 |
public class FeatureServicePanel extends JPanel implements ActionListener, |
93 |
ItemListener, ListDataListener, KeyListener, ChangeListener, |
94 |
TreeSelectionListener, MouseListener { |
95 |
protected static Logger logger = LoggerFactory.getLogger(FeatureServicePanel.class.getName()); |
96 |
private static final long serialVersionUID = 0; |
97 |
protected ArcImsImageWizard parentWizard = null; |
98 |
protected JPanel detailsPanel = null; |
99 |
protected JPanel layersPanel = null; |
100 |
protected JPanel selectedLayersPanel = null; |
101 |
protected JPanel finalPanel = null; |
102 |
protected JLabel newLayerNameLabel = null; |
103 |
protected JTextField newLayerNameTextField = null; |
104 |
protected JButton selectedLayersUpButton = null; |
105 |
protected JButton selectedLayersDownButton = null; |
106 |
protected JList orderedLayersList = null; |
107 |
protected JTree availableLayersTree = null; |
108 |
protected DefaultTreeModel availableLayersTreeModel = null; |
109 |
protected DefaultMutableTreeNode layersTreeRootNode = null; |
110 |
protected ServiceNamesObject layersTreeRootObject = null; |
111 |
protected DefaultListModel orderedLayersListModel = null; |
112 |
protected JButton addLayerButton = null; |
113 |
protected JButton removeLayerButton = null; |
114 |
protected JScrollPane availableLayersScrollPane = null; |
115 |
protected JScrollPane selectedLayersScrollPane = null; |
116 |
protected JButton addAllButton = null; |
117 |
protected JButton removeAllButton = null; |
118 |
protected JScrollPane serviceDetailsScrollPane = null; |
119 |
protected JEditorPane serviceDetailsTable = null; |
120 |
protected Vector serviceDetailsTableDataVector = null; |
121 |
protected Vector serviceDetailsTableColumnNamesVector = null; |
122 |
protected JTabbedPane imgServiceTabbedPane = null; |
123 |
protected JPanel tabPanel = null; |
124 |
protected JPanel imgServiceTab_1 = null; |
125 |
protected JPanel imgServiceTab_2 = null; |
126 |
protected JPanel changeServerPanel = null; |
127 |
protected JButton serviceInfoNextButton = null; |
128 |
protected JButton serviceInfoPreviousButton = null; |
129 |
protected JButton changeServerButton = null; |
130 |
protected JCheckBox showIdCheckBox = null; |
131 |
protected final String bgColor0 = "\"#FEEDD6\""; // light - |
132 |
protected final String bgColor3 = "\"#FBFFE1\""; // light yellow |
133 |
protected final String font = "Arial"; |
134 |
private JPanel groupCheckPanel; |
135 |
private JCheckBox groupCheckBox; |
136 |
private JLabel versionTitleLabel = null; |
137 |
private JLabel versionLabel = null; |
138 |
protected boolean isProperties = false; |
139 |
|
140 |
/**
|
141 |
* The owning wizard is useds as a parameter to allow easy <i>upwards</i>
|
142 |
* references.
|
143 |
*
|
144 |
* @param parent
|
145 |
* the wizard that owns this panel
|
146 |
*/
|
147 |
public FeatureServicePanel(ArcImsImageWizard parent, boolean editionallowed, |
148 |
boolean properties) {
|
149 |
super();
|
150 |
isProperties = properties; |
151 |
parentWizard = parent; |
152 |
initialize(editionallowed); |
153 |
} |
154 |
|
155 |
/**
|
156 |
*
|
157 |
* @param editionallowed
|
158 |
*/
|
159 |
protected void initialize(boolean editionallowed) { |
160 |
setLayout(null);
|
161 |
this.setSize(new java.awt.Dimension(511, 470)); |
162 |
this.initInfoVectors();
|
163 |
|
164 |
imgServiceTab_1 = new JPanel(); |
165 |
imgServiceTab_1.setLayout(null);
|
166 |
imgServiceTab_2 = new JPanel(); |
167 |
imgServiceTab_2.setLayout(null);
|
168 |
|
169 |
imgServiceTab_1.add(getDetailsPanel(), null);
|
170 |
imgServiceTab_2.add(getFinalPanel(), null);
|
171 |
imgServiceTab_2.add(getLayersPanel(), null);
|
172 |
imgServiceTab_2.add(getShowIdCheckBox(), null);
|
173 |
imgServiceTab_2.add(getSelectedLayersPanel(), null);
|
174 |
|
175 |
addImageFormatPanel(); |
176 |
|
177 |
tabPanel = new JPanel(); |
178 |
tabPanel.setBounds(18, 8, 490 - 15, 415); |
179 |
tabPanel.setLayout(new BorderLayout()); |
180 |
|
181 |
imgServiceTabbedPane = new JTabbedPane(); |
182 |
|
183 |
// imgServiceTabbedPane.setBounds(0, 0, 510, 432);
|
184 |
imgServiceTabbedPane.addTab(PluginServices.getText(this, "info"), |
185 |
imgServiceTab_1); |
186 |
|
187 |
if (editionallowed) {
|
188 |
imgServiceTabbedPane.addTab(PluginServices.getText(this, "layers"), |
189 |
imgServiceTab_2); |
190 |
} |
191 |
|
192 |
imgServiceTabbedPane.addChangeListener(this);
|
193 |
|
194 |
changeServerButton = new JButton(PluginServices.getText(this, |
195 |
"change_service"));
|
196 |
changeServerButton.addActionListener(this);
|
197 |
changeServerButton.setBounds(95, 8, 120, 25); |
198 |
serviceInfoPreviousButton = new JButton(PluginServices.getText(this, |
199 |
"previous"));
|
200 |
serviceInfoPreviousButton.addActionListener(this);
|
201 |
serviceInfoPreviousButton.setBounds(395 - 103, 4, 100, 20); |
202 |
serviceInfoNextButton = new JButton(PluginServices.getText(this, "next")); |
203 |
serviceInfoNextButton.addActionListener(this);
|
204 |
serviceInfoNextButton.setBounds(395, 4, 100, 20); |
205 |
|
206 |
changeServerPanel = new JPanel(); |
207 |
changeServerPanel.setLayout(null);
|
208 |
changeServerPanel.setBounds(0, 440, 525, 42); |
209 |
|
210 |
// changeServerPanel.add(changeServerButton);
|
211 |
changeServerPanel.add(serviceInfoPreviousButton); |
212 |
changeServerPanel.add(serviceInfoNextButton); |
213 |
|
214 |
versionTitleLabel = new JLabel(PluginServices.getText(this, |
215 |
"server_version") + ":"); |
216 |
versionTitleLabel.setBounds(new java.awt.Rectangle(39, 443, 125, 21)); |
217 |
add(versionTitleLabel, null);
|
218 |
versionLabel = new JLabel("-"); |
219 |
versionLabel.setBounds(new java.awt.Rectangle(170 - 15, 443, 160, 21)); |
220 |
add(versionLabel, null);
|
221 |
|
222 |
tabPanel.add(imgServiceTabbedPane, BorderLayout.CENTER);
|
223 |
add(tabPanel); |
224 |
add(changeServerPanel); |
225 |
} |
226 |
|
227 |
// previous (395 - 103, 444, 100, 20));
|
228 |
protected void addImageFormatPanel() { |
229 |
groupCheckPanel = new JPanel(); |
230 |
groupCheckPanel.setBounds(180 - 6, 210 - 8, 501 - 180 - 34, 54); // hasta y = 264 |
231 |
groupCheckPanel.setBorder(javax.swing.BorderFactory.createTitledBorder( |
232 |
null, PluginServices.getText(this, "group_layers_option"), |
233 |
javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, |
234 |
javax.swing.border.TitledBorder.DEFAULT_POSITION, null, null)); |
235 |
|
236 |
groupCheckBox = new JCheckBox(PluginServices.getText(this, |
237 |
"group_layers"), false); |
238 |
groupCheckBox.setBounds(14, 20, 155, 21); |
239 |
|
240 |
groupCheckPanel.setLayout(null);
|
241 |
groupCheckPanel.add(groupCheckBox); |
242 |
imgServiceTab_2.add(groupCheckPanel); |
243 |
} |
244 |
|
245 |
// private J
|
246 |
protected void initInfoVectors() { |
247 |
serviceDetailsTableDataVector = new Vector(); |
248 |
|
249 |
orderedLayersListModel = new DefaultListModel(); |
250 |
orderedLayersListModel.addListDataListener(this);
|
251 |
} |
252 |
|
253 |
/**
|
254 |
* Gets a list model that contains the layers that have been selected by the
|
255 |
* user (among those offered by the server)
|
256 |
*
|
257 |
* @return the selected layers' list model
|
258 |
*/
|
259 |
public DefaultListModel getOrderedLayersListModel() { |
260 |
return this.orderedLayersListModel; |
261 |
} |
262 |
|
263 |
/**
|
264 |
* This method initializes detailsPanel
|
265 |
*
|
266 |
* @return javax.swing.JPanel
|
267 |
*/
|
268 |
public JPanel getDetailsPanel() { |
269 |
if (detailsPanel == null) { |
270 |
detailsPanel = new JPanel(); |
271 |
detailsPanel.setLayout(null);
|
272 |
detailsPanel.setBounds(new java.awt.Rectangle(5, 5, 470 - 15, |
273 |
345 + 30)); |
274 |
serviceDetailsScrollPane = new JScrollPane(); |
275 |
detailsPanel.add(serviceDetailsScrollPane, null);
|
276 |
} |
277 |
|
278 |
return detailsPanel;
|
279 |
} |
280 |
|
281 |
public void setDetailsPanelServiceNameInBorder(String name) { |
282 |
this.detailsPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(
|
283 |
null,
|
284 |
PluginServices.getText(this, "service_info") + ": " + name, |
285 |
javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, |
286 |
javax.swing.border.TitledBorder.DEFAULT_POSITION, null, null)); |
287 |
} |
288 |
|
289 |
/**
|
290 |
* This method initializes layersPanel
|
291 |
*
|
292 |
* @return javax.swing.JPanel
|
293 |
*/
|
294 |
protected JPanel getLayersPanel() { |
295 |
if (layersPanel == null) { |
296 |
layersPanel = new JPanel(); |
297 |
layersPanel.setLayout(null);
|
298 |
layersPanel.setBorder(javax.swing.BorderFactory.createTitledBorder( |
299 |
null, PluginServices.getText(this, "available_layers"), |
300 |
javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, |
301 |
javax.swing.border.TitledBorder.DEFAULT_POSITION, null, null)); |
302 |
layersPanel.setBounds(new java.awt.Rectangle(4, 58, 491 - 34, |
303 |
151 - 8)); // hasta y = 209 |
304 |
layersPanel.add(getAvailableLayersScrollPane(), null);
|
305 |
} |
306 |
|
307 |
return layersPanel;
|
308 |
} |
309 |
|
310 |
protected JCheckBox getShowIdCheckBox() { |
311 |
if (showIdCheckBox == null) { |
312 |
showIdCheckBox = new JCheckBox(PluginServices.getText(this, |
313 |
"show_layer_ids"), false); |
314 |
|
315 |
// showIdCheckBox.setFont(new Font("SimSun", Font.PLAIN, 12));
|
316 |
showIdCheckBox.setBounds(4, 230 - 8, 168, 15); |
317 |
showIdCheckBox.addItemListener(this);
|
318 |
} |
319 |
|
320 |
return showIdCheckBox;
|
321 |
} |
322 |
|
323 |
/**
|
324 |
* This method initializes jPanel
|
325 |
*
|
326 |
* @return javax.swing.JPanel
|
327 |
*/
|
328 |
protected JPanel getSelectedLayersPanel() { |
329 |
if (selectedLayersPanel == null) { |
330 |
selectedLayersPanel = new JPanel(); |
331 |
selectedLayersPanel.setLayout(null);
|
332 |
selectedLayersPanel.setBorder(javax.swing.BorderFactory.createTitledBorder( |
333 |
null, PluginServices.getText(this, "selected_layers"), |
334 |
javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, |
335 |
javax.swing.border.TitledBorder.DEFAULT_POSITION, null, null)); |
336 |
selectedLayersPanel.setBounds(new java.awt.Rectangle(4, 265 - 8, |
337 |
491 - 34, 130)); |
338 |
selectedLayersPanel.add(getSelectedLayersUpButton(), null);
|
339 |
selectedLayersPanel.add(getSelectedLayersDownButton(), null);
|
340 |
selectedLayersPanel.add(getAddLayerButton(), null);
|
341 |
selectedLayersPanel.add(getRemoveLayerButton(), null);
|
342 |
selectedLayersPanel.add(getSelectedLayersScrollPane(), null);
|
343 |
selectedLayersPanel.add(getAddAllButton(), null);
|
344 |
selectedLayersPanel.add(getRemoveAllButton(), null);
|
345 |
} |
346 |
|
347 |
return selectedLayersPanel;
|
348 |
} |
349 |
|
350 |
/**
|
351 |
* This method initializes finalPanel
|
352 |
*
|
353 |
* @return javax.swing.JPanel
|
354 |
*/
|
355 |
protected JPanel getFinalPanel() { |
356 |
if (finalPanel == null) { |
357 |
newLayerNameLabel = new JLabel(); |
358 |
newLayerNameLabel.setBounds(new java.awt.Rectangle(60, 18, 195, 21)); |
359 |
newLayerNameLabel.setText(PluginServices.getText(this,
|
360 |
"enter_new_layer_name"));
|
361 |
finalPanel = new JPanel(); |
362 |
finalPanel.setLayout(null);
|
363 |
finalPanel.setBounds(new java.awt.Rectangle(4, 8, 491 - 34, 49)); // hasta y = 58 |
364 |
finalPanel.setBorder(javax.swing.BorderFactory.createTitledBorder( |
365 |
null, PluginServices.getText(this, "new_layer_name"), |
366 |
javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, |
367 |
javax.swing.border.TitledBorder.DEFAULT_POSITION, null, null)); |
368 |
|
369 |
// finalPanel.add(newLayerNameLabel, null);
|
370 |
finalPanel.add(getNewLayerNameTextField(), null);
|
371 |
} |
372 |
|
373 |
return finalPanel;
|
374 |
} |
375 |
|
376 |
/**
|
377 |
* This method initializes newLayerNameTextField
|
378 |
*
|
379 |
* @return javax.swing.JTextField
|
380 |
*/
|
381 |
public JTextField getNewLayerNameTextField() { |
382 |
if (newLayerNameTextField == null) { |
383 |
newLayerNameTextField = new JTextField(); |
384 |
newLayerNameTextField.addKeyListener(this);
|
385 |
newLayerNameTextField.addActionListener(this);
|
386 |
newLayerNameTextField.setBounds(new java.awt.Rectangle(10, 19, 437, |
387 |
20));
|
388 |
} |
389 |
|
390 |
return newLayerNameTextField;
|
391 |
} |
392 |
|
393 |
/**
|
394 |
* This method initializes availableLayersTree
|
395 |
*
|
396 |
* @return javax.swing.JTree
|
397 |
*/
|
398 |
public void setAvailableLayersTree(JTree t) { |
399 |
availableLayersTree = t; |
400 |
} |
401 |
|
402 |
public JTree getAvailableLayersTree() { |
403 |
if (availableLayersTree == null) { |
404 |
availableLayersTreeModel = new DefaultTreeModel(layersTreeRootNode); |
405 |
availableLayersTree = new JTree(availableLayersTreeModel) { |
406 |
public JToolTip createToolTip() { |
407 |
JMultilineToolTip jmtt = new JMultilineToolTip();
|
408 |
|
409 |
return jmtt;
|
410 |
} |
411 |
|
412 |
private static final long serialVersionUID = 0; |
413 |
}; |
414 |
|
415 |
ToolTipManager.sharedInstance()
|
416 |
.registerComponent(availableLayersTree); |
417 |
availableLayersTree.setCellRenderer(new AvailableLayersTreeCellRenderer());
|
418 |
|
419 |
availableLayersTree.addTreeSelectionListener(this);
|
420 |
availableLayersTree.addMouseListener(this);
|
421 |
} |
422 |
|
423 |
return availableLayersTree;
|
424 |
} |
425 |
|
426 |
/**
|
427 |
* This method initializes selectedLayersUpButton
|
428 |
*
|
429 |
* @return javax.swing.JButton
|
430 |
*/
|
431 |
protected JButton getSelectedLayersUpButton() { |
432 |
if (selectedLayersUpButton == null) { |
433 |
selectedLayersUpButton = new JButton(); |
434 |
|
435 |
ImageIcon ii = createImageIcon("images/up-arrow.png"); |
436 |
selectedLayersUpButton.setIcon(ii); |
437 |
selectedLayersUpButton.setBounds(new java.awt.Rectangle(10, 35, 36, |
438 |
36));
|
439 |
selectedLayersUpButton.addActionListener(this);
|
440 |
} |
441 |
|
442 |
return selectedLayersUpButton;
|
443 |
} |
444 |
|
445 |
/**
|
446 |
* This method initializes selectedLayersDownButton
|
447 |
*
|
448 |
* @return javax.swing.JButton
|
449 |
*/
|
450 |
protected JButton getSelectedLayersDownButton() { |
451 |
if (selectedLayersDownButton == null) { |
452 |
selectedLayersDownButton = new JButton(); |
453 |
|
454 |
ImageIcon ii = createImageIcon("images/down-arrow.png"); |
455 |
selectedLayersDownButton.setIcon(ii); |
456 |
selectedLayersDownButton.setBounds(new java.awt.Rectangle(10, 75, |
457 |
36, 36)); |
458 |
selectedLayersDownButton.addActionListener(this);
|
459 |
} |
460 |
|
461 |
return selectedLayersDownButton;
|
462 |
} |
463 |
|
464 |
/**
|
465 |
* This method initializes orderedLayersList
|
466 |
*
|
467 |
* @return javax.swing.JList
|
468 |
*/
|
469 |
public void setOrderedLayersList(JList l) { |
470 |
orderedLayersList = l; |
471 |
} |
472 |
|
473 |
public JList getOrderedLayersList() { |
474 |
if (orderedLayersList == null) { |
475 |
if (orderedLayersListModel == null) { |
476 |
orderedLayersListModel = new DefaultListModel(); |
477 |
orderedLayersListModel.addListDataListener(this);
|
478 |
} |
479 |
|
480 |
orderedLayersList = new JList(orderedLayersListModel) { |
481 |
public JToolTip createToolTip() { |
482 |
JMultilineToolTip jmltt = new JMultilineToolTip();
|
483 |
|
484 |
return jmltt;
|
485 |
} |
486 |
|
487 |
private static final long serialVersionUID = 0; |
488 |
}; |
489 |
ToolTipManager.sharedInstance().registerComponent(orderedLayersList);
|
490 |
orderedLayersList.setCellRenderer(new SelectedLayersListCellRenderer());
|
491 |
} |
492 |
|
493 |
return orderedLayersList;
|
494 |
} |
495 |
|
496 |
/**
|
497 |
* This method initializes addLayerButton
|
498 |
*
|
499 |
* @return javax.swing.JButton
|
500 |
*/
|
501 |
protected JButton getAddLayerButton() { |
502 |
if (addLayerButton == null) { |
503 |
addLayerButton = new JButton(); |
504 |
addLayerButton.setText(PluginServices.getText(this, "add")); |
505 |
addLayerButton.addActionListener(this);
|
506 |
addLayerButton.setBounds(new java.awt.Rectangle(365 - 34, 25, 111, |
507 |
21));
|
508 |
} |
509 |
|
510 |
return addLayerButton;
|
511 |
} |
512 |
|
513 |
/**
|
514 |
* This method initializes removeLayerButton
|
515 |
*
|
516 |
* @return javax.swing.JButton
|
517 |
*/
|
518 |
protected JButton getRemoveLayerButton() { |
519 |
if (removeLayerButton == null) { |
520 |
removeLayerButton = new JButton(); |
521 |
removeLayerButton.setText(PluginServices.getText(this, "remove")); |
522 |
removeLayerButton.addActionListener(this);
|
523 |
removeLayerButton.setBounds(new java.awt.Rectangle(365 - 34, 75, |
524 |
111, 21)); |
525 |
} |
526 |
|
527 |
return removeLayerButton;
|
528 |
} |
529 |
|
530 |
public void setSelectedLayersScrollPaneViewPort() { |
531 |
this.selectedLayersScrollPane.setViewportView(orderedLayersList);
|
532 |
} |
533 |
|
534 |
/**
|
535 |
* Adds a layer to the list of available lists. This is done while parsing
|
536 |
* the server's reponse after a <tt>getCapabilities()</tt> request.
|
537 |
*
|
538 |
* @param e
|
539 |
* the element to be added
|
540 |
*/
|
541 |
public void addLayerToAvailableList(LayersListElement e) { |
542 |
DefaultMutableTreeNode node = new DefaultMutableTreeNode(e); |
543 |
this.layersTreeRootNode.add(node);
|
544 |
} |
545 |
|
546 |
/**
|
547 |
* Adds a layer to the list of selected layers after the user has clicked on
|
548 |
* the <i>Add</i> button or double-clicked on an item on the available
|
549 |
* layers list.
|
550 |
*
|
551 |
* @param e
|
552 |
* the element to be added
|
553 |
*/
|
554 |
public void addLayerToSelectedList(LayersListElement e) { |
555 |
if (orderedLayersListModel.contains(e)) {
|
556 |
int r;
|
557 |
String the_message = PluginServices.getText(this, |
558 |
"this_layer_was_already_added") + ". " + |
559 |
PluginServices.getText(this, "add_again_question") + "\n" + |
560 |
PluginServices.getText(this, "layer") + ": " + e.getName(); |
561 |
String the_title = PluginServices.getText(this, |
562 |
"this_layer_was_already_added");
|
563 |
|
564 |
r = JOptionPane.showOptionDialog(this, the_message, the_title, |
565 |
JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, |
566 |
null, null, null); |
567 |
|
568 |
if (r == JOptionPane.NO_OPTION) { |
569 |
return;
|
570 |
} |
571 |
} |
572 |
|
573 |
e.setAdded(true);
|
574 |
this.orderedLayersListModel.add(0, e); |
575 |
} |
576 |
|
577 |
/**
|
578 |
* Adds a layer to the list of selected layers without confirmation.
|
579 |
*
|
580 |
* @param e
|
581 |
* the element to be added
|
582 |
*/
|
583 |
public void addLayerToSelectedListNoConfirm(LayersListElement e) { |
584 |
e.setAdded(true);
|
585 |
this.orderedLayersListModel.add(0, e); |
586 |
} |
587 |
|
588 |
/**
|
589 |
* This method initializes availableLayersScrollPane
|
590 |
*
|
591 |
* @return javax.swing.JScrollPane
|
592 |
*/
|
593 |
public JScrollPane getAvailableLayersScrollPane() { |
594 |
if (availableLayersScrollPane == null) { |
595 |
availableLayersScrollPane = new JScrollPane(); |
596 |
availableLayersScrollPane.setBounds(new java.awt.Rectangle(10, 20, |
597 |
471 - 34, 123 - 8)); |
598 |
} |
599 |
|
600 |
return availableLayersScrollPane;
|
601 |
} |
602 |
|
603 |
/**
|
604 |
* This method initializes selectedLayersScrollPane
|
605 |
*
|
606 |
* @return javax.swing.JScrollPane
|
607 |
*/
|
608 |
public JScrollPane getSelectedLayersScrollPane() { |
609 |
if (selectedLayersScrollPane == null) { |
610 |
selectedLayersScrollPane = new JScrollPane(); |
611 |
selectedLayersScrollPane.setBounds(new java.awt.Rectangle(55, 20, |
612 |
301 - 34, 101)); |
613 |
} |
614 |
|
615 |
return selectedLayersScrollPane;
|
616 |
} |
617 |
|
618 |
/**
|
619 |
* This method initializes addAllButton
|
620 |
*
|
621 |
* @return javax.swing.JButton
|
622 |
*/
|
623 |
protected JButton getAddAllButton() { |
624 |
if (addAllButton == null) { |
625 |
addAllButton = new JButton(); |
626 |
addAllButton.setText(PluginServices.getText(this, "add_all")); |
627 |
addAllButton.addActionListener(this);
|
628 |
addAllButton.setBounds(new java.awt.Rectangle(365 - 34, 50, 111, 21)); |
629 |
} |
630 |
|
631 |
return addAllButton;
|
632 |
} |
633 |
|
634 |
/**
|
635 |
* This method initializes removeAllButton
|
636 |
*
|
637 |
* @return javax.swing.JButton
|
638 |
*/
|
639 |
protected JButton getRemoveAllButton() { |
640 |
if (removeAllButton == null) { |
641 |
removeAllButton = new JButton(); |
642 |
removeAllButton.setText(PluginServices.getText(this, "remove_all")); |
643 |
removeAllButton.addActionListener(this);
|
644 |
removeAllButton.setBounds(new java.awt.Rectangle(365 - 34, 100, |
645 |
111, 21)); |
646 |
} |
647 |
|
648 |
return removeAllButton;
|
649 |
} |
650 |
|
651 |
public void contentsChanged(ListDataEvent e) { |
652 |
} |
653 |
|
654 |
/**
|
655 |
* Automatically invoqued when new layers are added to the selected layers
|
656 |
* list. It checks whether the wizard is ready to finish and send gvSIG the
|
657 |
* user's selection.
|
658 |
*/
|
659 |
public void intervalAdded(ListDataEvent e) { |
660 |
logger.info("Added. Now selected: " + orderedLayersListModel.size());
|
661 |
updateWizardLayerQuery(); |
662 |
parentWizard.fireWizardComplete(this.isCorrectlyConfigured());
|
663 |
} |
664 |
|
665 |
/**
|
666 |
* Automatically invoqued when new layers are removed from the selected
|
667 |
* layers list. It checks whether the wizard is ready to finish and send
|
668 |
* gvSIG the user's selection.
|
669 |
*/
|
670 |
public void intervalRemoved(ListDataEvent e) { |
671 |
logger.info("Removed. Now selected: " + orderedLayersListModel.size());
|
672 |
updateWizardLayerQuery(); |
673 |
this.parentWizard.fireWizardComplete(this.isCorrectlyConfigured()); |
674 |
} |
675 |
|
676 |
/**
|
677 |
* Checks whether the wizard is ready to finish and send gvSIG the user's
|
678 |
* selection.
|
679 |
*
|
680 |
* @return <b>true</b> if the wizard is ready to finish, <b>false</b>
|
681 |
* otherwise
|
682 |
*/
|
683 |
public boolean isCorrectlyConfigured() { |
684 |
if (this.orderedLayersListModel.size() == 0) { |
685 |
return false; |
686 |
} |
687 |
|
688 |
if (this.newLayerNameTextField.getText().length() == 0) { |
689 |
return false; |
690 |
} |
691 |
|
692 |
return true; |
693 |
} |
694 |
|
695 |
/**
|
696 |
* Updates panel's local variables: <tt>setLayerQuery(String)</tt> sets a
|
697 |
* comma-separated list of layers (the selected ones) and
|
698 |
* <tt>setNewLayerName(String)</tt> sets the name of the new layer to be
|
699 |
* created and sent to gvSIG.
|
700 |
*/
|
701 |
protected void updateWizardLayerQuery() { |
702 |
if (orderedLayersListModel.size() == 0) { |
703 |
return;
|
704 |
} |
705 |
|
706 |
String idAcum = ""; |
707 |
|
708 |
for (int i = orderedLayersListModel.size() - 1; i >= 0; i--) { |
709 |
idAcum = idAcum + "," +
|
710 |
((LayersListElement) orderedLayersListModel.get(i)).getID(); |
711 |
} |
712 |
|
713 |
idAcum = idAcum.substring(1); // elimina la coma inicial |
714 |
|
715 |
parentWizard.setLayerQuery(idAcum); |
716 |
parentWizard.setNewLayerName(this.newLayerNameTextField.getText());
|
717 |
} |
718 |
|
719 |
/**
|
720 |
* Empties both lists: available layers list and selected layers list.
|
721 |
*/
|
722 |
public void emptyTables() { |
723 |
// re-start available layers' tree node:
|
724 |
layersTreeRootObject = new ServiceNamesObject(parentWizard.getServiceName(),
|
725 |
"ImageServer", "Enabled"); |
726 |
layersTreeRootNode = new DefaultMutableTreeNode(layersTreeRootObject); |
727 |
|
728 |
// empty the service dateails table:
|
729 |
loadServiceDetailsTable(null);
|
730 |
|
731 |
if (availableLayersTree != null) { |
732 |
availableLayersTree.removeAll(); |
733 |
} |
734 |
|
735 |
refreshAvailableLayersTree(); |
736 |
|
737 |
if (orderedLayersListModel != null) { |
738 |
orderedLayersListModel.removeAllElements(); |
739 |
} |
740 |
|
741 |
refreshSelectedLayersList(); |
742 |
|
743 |
newLayerNameTextField.setText(parentWizard.getServiceName()); |
744 |
} |
745 |
|
746 |
/**
|
747 |
* Listens to button events: Add (all) layer, Remove (all) layer, Move up,
|
748 |
* Move down.
|
749 |
*/
|
750 |
public void actionPerformed(ActionEvent e) { |
751 |
LayersListElement sel; |
752 |
DefaultMutableTreeNode node;
|
753 |
int ind;
|
754 |
int noofremoved;
|
755 |
int[] selInds; |
756 |
|
757 |
if (e.getSource() == addLayerButton) {
|
758 |
// JTable.getSelectionRows() is 0-based but root is displayed so
|
759 |
// item 0 is the root itself
|
760 |
selInds = availableLayersTree.getSelectionRows(); |
761 |
|
762 |
if (selInds == null) { |
763 |
return;
|
764 |
} |
765 |
|
766 |
if (selInds.length == 0) { |
767 |
return;
|
768 |
} |
769 |
|
770 |
Object root = availableLayersTree.getModel().getRoot();
|
771 |
int noofchildren = availableLayersTree.getModel().getChildCount(root);
|
772 |
|
773 |
for (int i = 0; i < noofchildren; i++) { |
774 |
// JTable.getSelectionRows() is 0-based but root is displayed so
|
775 |
// item 0 is the root itself, and we ignore it here of course:
|
776 |
ind = LayersListElement.getFirstIndexInIntArray(selInds, i + 1);
|
777 |
|
778 |
if (ind != -1) { |
779 |
node = (DefaultMutableTreeNode) availableLayersTree.getModel()
|
780 |
.getChild(root, |
781 |
i); |
782 |
sel = (LayersListElement) node.getUserObject(); |
783 |
addLayerToSelectedList(sel); |
784 |
} |
785 |
} |
786 |
|
787 |
refreshAvailableLayersTree(); |
788 |
refreshSelectedLayersList(); |
789 |
} |
790 |
|
791 |
if (e.getSource() == removeLayerButton) {
|
792 |
selInds = orderedLayersList.getSelectedIndices(); |
793 |
|
794 |
if (selInds.length == 0) { |
795 |
return;
|
796 |
} |
797 |
|
798 |
noofremoved = 0;
|
799 |
|
800 |
for (int i = 0; i < selInds.length; i++) { |
801 |
sel = (LayersListElement) orderedLayersListModel.remove(selInds[i] - |
802 |
noofremoved); |
803 |
noofremoved++; |
804 |
sel.setAdded(orderedLayersListModel.contains(sel)); |
805 |
} |
806 |
|
807 |
refreshAvailableLayersTree(); |
808 |
refreshSelectedLayersList(); |
809 |
} |
810 |
|
811 |
if (e.getSource() == addAllButton) {
|
812 |
Object root = availableLayersTree.getModel().getRoot();
|
813 |
int nofchildren = this.availableLayersTree.getModel() |
814 |
.getChildCount(root); |
815 |
|
816 |
for (int i = 0; i < nofchildren; i++) { |
817 |
node = (DefaultMutableTreeNode) availableLayersTree.getModel()
|
818 |
.getChild(root, |
819 |
i); |
820 |
sel = (LayersListElement) node.getUserObject(); |
821 |
logger.info("Adding element: " + sel.toString());
|
822 |
addLayerToSelectedList(sel); |
823 |
} |
824 |
|
825 |
refreshAvailableLayersTree(); |
826 |
refreshSelectedLayersList(); |
827 |
} |
828 |
|
829 |
if (e.getSource() == removeAllButton) {
|
830 |
while (orderedLayersListModel.size() > 0) { |
831 |
sel = (LayersListElement) this.orderedLayersListModel.remove(0); |
832 |
sel.setAdded(false);
|
833 |
} |
834 |
|
835 |
refreshAvailableLayersTree(); |
836 |
refreshSelectedLayersList(); |
837 |
} |
838 |
|
839 |
if (e.getSource() == selectedLayersDownButton) {
|
840 |
int l = orderedLayersListModel.size();
|
841 |
|
842 |
if (l == 0) { |
843 |
return;
|
844 |
} |
845 |
|
846 |
selInds = orderedLayersList.getSelectedIndices(); |
847 |
|
848 |
if (selInds.length != 1) { |
849 |
return;
|
850 |
} |
851 |
|
852 |
if (l == (selInds[0] + 1)) { |
853 |
return; // last item cannot be moved down |
854 |
} |
855 |
|
856 |
sel = (LayersListElement) orderedLayersListModel.remove(selInds[0]);
|
857 |
orderedLayersListModel.add(selInds[0] + 1, sel); |
858 |
refreshSelectedLayersList(); |
859 |
orderedLayersList.setSelectedIndex(selInds[0] + 1); |
860 |
refreshAvailableLayersTree(); |
861 |
} |
862 |
|
863 |
if (e.getSource() == selectedLayersUpButton) {
|
864 |
int l = orderedLayersListModel.size();
|
865 |
|
866 |
if (l == 0) { |
867 |
return;
|
868 |
} |
869 |
|
870 |
selInds = orderedLayersList.getSelectedIndices(); |
871 |
|
872 |
if (selInds.length != 1) { |
873 |
return;
|
874 |
} |
875 |
|
876 |
if (selInds[0] == 0) { |
877 |
return; // first item cannot be moved up |
878 |
} |
879 |
|
880 |
sel = (LayersListElement) orderedLayersListModel.remove(selInds[0]);
|
881 |
orderedLayersListModel.add(selInds[0] - 1, sel); |
882 |
refreshSelectedLayersList(); |
883 |
orderedLayersList.setSelectedIndex(selInds[0] - 1); |
884 |
refreshAvailableLayersTree(); |
885 |
} |
886 |
|
887 |
if (e.getSource() == newLayerNameTextField) {
|
888 |
try {
|
889 |
JTabbedPane jtp = ((JTabbedPane) parentWizard.getParent()); |
890 |
AddLayerDialog fod = (AddLayerDialog) jtp.getParent(); |
891 |
JPanel jp = (JPanel) fod.getComponent(1); |
892 |
JButton acceptButton = (JButton) jp.getComponent(0); |
893 |
ActionListener[] clickListeners = acceptButton.getActionListeners(); |
894 |
ActionEvent artificialEvent = new ActionEvent(acceptButton, |
895 |
ActionEvent.ACTION_PERFORMED, ""); |
896 |
|
897 |
if (!acceptButton.isEnabled()) {
|
898 |
return;
|
899 |
} |
900 |
|
901 |
for (int i = 0; i < clickListeners.length; i++) |
902 |
clickListeners[i].actionPerformed(artificialEvent); |
903 |
} |
904 |
catch (RuntimeException e1) { |
905 |
logger.error("Unable to send the click event to the FOpenDialog 'Accept' button. ",
|
906 |
e1); |
907 |
} |
908 |
} |
909 |
|
910 |
if (e.getSource() == changeServerButton) {
|
911 |
this.parentWizard.setEnabledPanels("main"); |
912 |
} |
913 |
|
914 |
if (e.getSource() == serviceInfoNextButton) {
|
915 |
int currentTab = this.imgServiceTabbedPane.getSelectedIndex(); |
916 |
int maxTab = this.imgServiceTabbedPane.getTabCount() - 1; |
917 |
|
918 |
if (currentTab < maxTab) {
|
919 |
imgServiceTabbedPane.setSelectedIndex(currentTab + 1);
|
920 |
} |
921 |
} |
922 |
|
923 |
if (e.getSource() == serviceInfoPreviousButton) {
|
924 |
int currentTab = this.imgServiceTabbedPane.getSelectedIndex(); |
925 |
|
926 |
if (currentTab > 0) { |
927 |
imgServiceTabbedPane.setSelectedIndex(currentTab - 1);
|
928 |
} |
929 |
else {
|
930 |
if (currentTab == 0) { |
931 |
parentWizard.setEnabledPanels("main");
|
932 |
} |
933 |
} |
934 |
} |
935 |
} |
936 |
|
937 |
public void keyTyped(KeyEvent e) { |
938 |
} |
939 |
|
940 |
public void keyPressed(KeyEvent e) { |
941 |
} |
942 |
|
943 |
/**
|
944 |
* Listens to changes in the text field where the new layer's name is typed.
|
945 |
* The decision whether the wizard is ready to finish or not depends on this
|
946 |
* event too.
|
947 |
*/
|
948 |
public void keyReleased(KeyEvent e) { |
949 |
if (e.getSource() == newLayerNameTextField) {
|
950 |
this.parentWizard.setNewLayerName(this.newLayerNameTextField.getText()); |
951 |
this.parentWizard.fireWizardComplete(this.isCorrectlyConfigured()); |
952 |
} |
953 |
} |
954 |
|
955 |
/**
|
956 |
* This method initializes serviceDetailsTable
|
957 |
*
|
958 |
* @return JEditorPane
|
959 |
*/
|
960 |
protected JEditorPane getServiceDetailsTable() { |
961 |
if (serviceDetailsTable == null) { |
962 |
serviceDetailsTable = new JEditorPane(); |
963 |
serviceDetailsTable.setContentType("text/html");
|
964 |
serviceDetailsTable.setEditable(false);
|
965 |
|
966 |
String htmlInfo = this.getFormattedHtmlInfo(serviceDetailsTableDataVector, |
967 |
serviceDetailsTableColumnNamesVector); |
968 |
serviceDetailsTable.setText(htmlInfo); |
969 |
} |
970 |
|
971 |
return serviceDetailsTable;
|
972 |
} |
973 |
|
974 |
public void loadServiceDetailsTable(ServiceInformation si) { |
975 |
Vector data = new Vector(); |
976 |
Vector item = new Vector(); |
977 |
Vector cols = new Vector(); |
978 |
|
979 |
if (si != null) { |
980 |
// A valid ArcImsProtocolHandler.ServiceInformation parameter
|
981 |
cols.add(PluginServices.getText(this, "property")); |
982 |
cols.add(PluginServices.getText(this, "value")); |
983 |
|
984 |
if (si.getEnvelope() != null) { |
985 |
item.add(PluginServices.getText(this, "xrange")); |
986 |
item.add("[ " +
|
987 |
ServicesTableModel.leaveNDigits(si.getEnvelope().getXmin(), |
988 |
10) + ", " + |
989 |
ServicesTableModel.leaveNDigits(si.getEnvelope().getXmax(), |
990 |
10) + " ]"); |
991 |
data.add(item.clone()); |
992 |
item.removeAllElements(); |
993 |
item.add(PluginServices.getText(this, "yrange")); |
994 |
item.add("[ " +
|
995 |
ServicesTableModel.leaveNDigits(si.getEnvelope().getYmin(), |
996 |
10) + ", " + |
997 |
ServicesTableModel.leaveNDigits(si.getEnvelope().getYmax(), |
998 |
10) + " ]"); |
999 |
data.add(item.clone()); |
1000 |
item.removeAllElements(); |
1001 |
} |
1002 |
else {
|
1003 |
item.add(PluginServices.getText(this, "xrange")); |
1004 |
item.add(PluginServices.getText(this, "not_available")); |
1005 |
data.add(item.clone()); |
1006 |
item.removeAllElements(); |
1007 |
item.add(PluginServices.getText(this, "yrange")); |
1008 |
item.add(PluginServices.getText(this, "not_available")); |
1009 |
data.add(item.clone()); |
1010 |
item.removeAllElements(); |
1011 |
} |
1012 |
|
1013 |
if (si.getLocale().getLanguage().length() > 0) { |
1014 |
item.add(PluginServices.getText(this, "language")); |
1015 |
item.add(lowerPS(si.getLocale().getLanguage() + "_language"));
|
1016 |
data.add(item.clone()); |
1017 |
item.removeAllElements(); |
1018 |
} |
1019 |
else {
|
1020 |
item.add(PluginServices.getText(this, "language")); |
1021 |
item.add(PluginServices.getText(this, "not_available")); |
1022 |
data.add(item.clone()); |
1023 |
item.removeAllElements(); |
1024 |
} |
1025 |
|
1026 |
if (si.getMapunits().length() > 0) { |
1027 |
item.add(PluginServices.getText(this, "units")); |
1028 |
item.add(lowerPS(si.getMapunits())); |
1029 |
data.add(item.clone()); |
1030 |
item.removeAllElements(); |
1031 |
} |
1032 |
else {
|
1033 |
item.add(PluginServices.getText(this, "units")); |
1034 |
item.add(PluginServices.getText(this, "not_available")); |
1035 |
data.add(item.clone()); |
1036 |
item.removeAllElements(); |
1037 |
} |
1038 |
|
1039 |
if (si.getLocale().getCountry().length() > 0) { |
1040 |
item.add(PluginServices.getText(this, "country")); |
1041 |
item.add(lowerPS(si.getLocale().getCountry() + "_country"));
|
1042 |
data.add(item.clone()); |
1043 |
item.removeAllElements(); |
1044 |
} |
1045 |
else {
|
1046 |
item.add(PluginServices.getText(this, "country")); |
1047 |
item.add(PluginServices.getText(this, "not_available")); |
1048 |
data.add(item.clone()); |
1049 |
item.removeAllElements(); |
1050 |
} |
1051 |
|
1052 |
if (si.getFeaturecoordsys().length() > 0) { |
1053 |
item.add(PluginServices.getText(this, "coord_system")); |
1054 |
item.add(si.getFeaturecoordsys()); |
1055 |
data.add(item.clone()); |
1056 |
item.removeAllElements(); |
1057 |
} |
1058 |
else {
|
1059 |
item.add(PluginServices.getText(this, "coord_system")); |
1060 |
item.add(PluginServices.getText(this, "not_available")); |
1061 |
data.add(item.clone()); |
1062 |
item.removeAllElements(); |
1063 |
} |
1064 |
|
1065 |
if (si.getScreen_dpi() != -1) { |
1066 |
item.add("DPI");
|
1067 |
item.add(Integer.toString(si.getScreen_dpi()));
|
1068 |
data.add(item.clone()); |
1069 |
item.removeAllElements(); |
1070 |
} |
1071 |
else {
|
1072 |
item.add("DPI");
|
1073 |
item.add(PluginServices.getText(this, "default") + ", 96"); |
1074 |
data.add(item.clone()); |
1075 |
item.removeAllElements(); |
1076 |
} |
1077 |
|
1078 |
if (this instanceof ImageServicePanel) { |
1079 |
if (si.getImagelimit_pixelcount().length() > 0) { |
1080 |
item.add(PluginServices.getText(this, "max_no_of_pixels")); |
1081 |
item.add(si.getImagelimit_pixelcount()); |
1082 |
data.add(item.clone()); |
1083 |
item.removeAllElements(); |
1084 |
} |
1085 |
else {
|
1086 |
item.add(PluginServices.getText(this, "max_no_of_pixels")); |
1087 |
item.add(PluginServices.getText(this, "not_available")); |
1088 |
data.add(item.clone()); |
1089 |
item.removeAllElements(); |
1090 |
} |
1091 |
} |
1092 |
} |
1093 |
else {
|
1094 |
// A null ServiceInformation parameter (we must empty the
|
1095 |
// table). do nothing, because 'data' and 'cols' vectors are empty
|
1096 |
} |
1097 |
|
1098 |
serviceDetailsTableDataVector = (Vector) data.clone();
|
1099 |
serviceDetailsTableColumnNamesVector = (Vector) cols.clone();
|
1100 |
serviceDetailsTable = null;
|
1101 |
serviceDetailsTable = getServiceDetailsTable(); |
1102 |
serviceDetailsScrollPane.setBounds(new java.awt.Rectangle(0, 0, |
1103 |
470 - 14, 345 + 31)); |
1104 |
serviceDetailsScrollPane.setViewportView(serviceDetailsTable); |
1105 |
} |
1106 |
|
1107 |
protected ImageIcon createImageIcon(String path) { |
1108 |
java.net.URL imgURL = createResourceUrl(path); |
1109 |
|
1110 |
if (imgURL != null) { |
1111 |
return new ImageIcon(imgURL); |
1112 |
} |
1113 |
else {
|
1114 |
logger.error("File not found: " + path);
|
1115 |
|
1116 |
return null; |
1117 |
} |
1118 |
} |
1119 |
|
1120 |
protected void setNextPreviousEnabled(int selectedTab) { |
1121 |
int lastTabIndex = imgServiceTabbedPane.getTabCount() - 1; |
1122 |
serviceInfoNextButton.setEnabled(selectedTab < lastTabIndex); |
1123 |
serviceInfoPreviousButton.setEnabled((selectedTab > 0) ||
|
1124 |
(!isProperties)); |
1125 |
} |
1126 |
|
1127 |
public void stateChanged(ChangeEvent e) { |
1128 |
if (e.getSource() == imgServiceTabbedPane) {
|
1129 |
setNextPreviousEnabled(imgServiceTabbedPane.getSelectedIndex()); |
1130 |
} |
1131 |
} |
1132 |
|
1133 |
public void setServiceInfoTabNumber(int i) { |
1134 |
imgServiceTabbedPane.setSelectedIndex(i); |
1135 |
} |
1136 |
|
1137 |
protected String getFormattedHtmlInfo(Vector data, Vector colnames) { |
1138 |
String location_title_text = PluginServices.getText(this, "data_origin"); |
1139 |
String properties_title_text = PluginServices.getText(this, "properties"); |
1140 |
|
1141 |
String server_title = PluginServices.getText(this, "server"); |
1142 |
String service_name_title = PluginServices.getText(this, "service"); |
1143 |
String service_type_title = PluginServices.getText(this, "service_type"); |
1144 |
|
1145 |
String serverURL = parentWizard.getHostName();
|
1146 |
String serviceName = parentWizard.getServiceName();
|
1147 |
String serviceType = lowerPS(parentWizard.getServiceType());
|
1148 |
|
1149 |
String html = "<html><body>\n" + |
1150 |
"<table align=\"center\" width=\"425\" border=\"0\" cellpadding=\"4\" cellspacing=\"4\">\n" +
|
1151 |
"<tr valign=\"top\" bgcolor=\"#FFFFFF\">\n" +
|
1152 |
"<td height=\"18\" bgcolor=" + bgColor3 +
|
1153 |
" colspan=\"2\"><font face=\"" + font + "\" size=\"4\"><b>" + |
1154 |
location_title_text + "</font></b></td>\n</tr>\n";
|
1155 |
html = html + "<tr valign=\"top\" bgcolor=" + bgColor0 + ">\n" + |
1156 |
"<td width=\"110\" height=\"18\" bgcolor=\"#D6D6D6\" align=\"right\"><font face=\"" +
|
1157 |
font + "\" size=\"3\"><b>" + server_title + "</b></font></td>" + |
1158 |
"<td><font face=\"" + font + "\" size=\"3\">" + serverURL + |
1159 |
"</font></td>\n</tr>\n";
|
1160 |
html = html + "<tr valign=\"top\" bgcolor=" + bgColor0 + ">\n" + |
1161 |
"<td height=\"18\" bgcolor=\"#D6D6D6\" align=\"right\"><font face=\"" +
|
1162 |
font + "\" size=\"3\"><b>" + service_name_title +
|
1163 |
"</b></font></td>" + "<td bgcolor=\"#eaeaea\"><font face=\"" + |
1164 |
font + "\" size=\"3\">" + serviceName + "</font></td>\n</tr>\n"; |
1165 |
html = html + "<tr valign=\"top\" bgcolor=" + bgColor0 + ">\n" + |
1166 |
"<td height=\"18\" bgcolor=\"#D6D6D6\" align=\"right\"><font face=\"" +
|
1167 |
font + "\" size=\"3\"><b>" + service_type_title +
|
1168 |
"</b></font></td>" + "<td><font face=\"" + font + "\" size=\"3\">" + |
1169 |
serviceType + "</font></td>\n</tr>\n</table>\n\n";
|
1170 |
html = html + |
1171 |
"<table align=\"center\" width=\"425\" border=\"0\" cellpadding=\"4\" cellspacing=\"4\">\n" +
|
1172 |
"<tr valign=\"top\" bgcolor=\"#FFFFFF\">\n" +
|
1173 |
"<td height=\"18\" bgcolor=" + bgColor3 +
|
1174 |
" colspan=\"2\"><font face=\"" + font + "\" size=\"4\"><b>" + |
1175 |
properties_title_text + "</font></b></td>\n</tr>\n";
|
1176 |
|
1177 |
for (int i = 0; i < data.size(); i++) { |
1178 |
html = html + getTwoStringsOfNthItemIntoHtmlCode(data, i); |
1179 |
} |
1180 |
|
1181 |
html = html + "</table>\n</body></html>";
|
1182 |
|
1183 |
return html;
|
1184 |
} |
1185 |
|
1186 |
protected String getTwoStringsOfNthItemIntoHtmlCode(Vector d, int i) { |
1187 |
String string_1 = (String) ((Vector) d.get(i)).get(0); |
1188 |
String string_2 = (String) ((Vector) d.get(i)).get(1); |
1189 |
String[] bgrColor = new String[2]; |
1190 |
bgrColor[0] = "\"#feedd6\""; |
1191 |
bgrColor[1] = "\"#eaeaea\""; |
1192 |
|
1193 |
String response = "<tr valign=\"top\">\n" + |
1194 |
" <td width=\"110\" height=\"18\" bgcolor=\"#d6d6d6\" align=\"right\"><font face=\"" +
|
1195 |
font + "\" size=\"3\"><b>" + string_1 + "</b></font></td>" + |
1196 |
" <td bgcolor=" + bgrColor[i % 2] + "><font face=\"" + font + |
1197 |
"\" size=\"3\">" + string_2 + "</font></td>" + "\n</tr>\n"; |
1198 |
|
1199 |
return response;
|
1200 |
} |
1201 |
|
1202 |
public void valueChanged(TreeSelectionEvent e) { |
1203 |
if (e.getSource() == availableLayersTree) {
|
1204 |
availableLayersTree.removeSelectionRow(0);
|
1205 |
} |
1206 |
} |
1207 |
|
1208 |
public void itemStateChanged(ItemEvent e) { |
1209 |
if (e.getSource() == showIdCheckBox) {
|
1210 |
setShowIdsToTwoLists(showIdCheckBox.isSelected()); |
1211 |
refreshAvailableLayersTree(); |
1212 |
refreshSelectedLayersList(); |
1213 |
} |
1214 |
} |
1215 |
|
1216 |
protected void setShowIdsToTwoLists(boolean show) { |
1217 |
// available layers tree:
|
1218 |
DefaultMutableTreeNode dmtn;
|
1219 |
LayersListElement lle; |
1220 |
Object root = availableLayersTreeModel.getRoot();
|
1221 |
int nofchildren = availableLayersTreeModel.getChildCount(root);
|
1222 |
|
1223 |
for (int i = 0; i < nofchildren; i++) { |
1224 |
dmtn = (DefaultMutableTreeNode) availableLayersTreeModel.getChild(root,
|
1225 |
i); |
1226 |
lle = (LayersListElement) dmtn.getUserObject(); |
1227 |
lle.setShowIds(show); |
1228 |
} |
1229 |
|
1230 |
availableLayersTree.repaint(); |
1231 |
|
1232 |
// selected layers list:
|
1233 |
for (int i = 0; i < orderedLayersListModel.size(); i++) { |
1234 |
lle = (LayersListElement) orderedLayersListModel.get(i); |
1235 |
lle.setShowIds(show); |
1236 |
} |
1237 |
|
1238 |
orderedLayersList.repaint(); |
1239 |
} |
1240 |
|
1241 |
public void refreshAvailableLayersTree() { |
1242 |
setAvailableLayersTree(null);
|
1243 |
availableLayersTree = getAvailableLayersTree(); |
1244 |
availableLayersScrollPane.setViewportView(availableLayersTree); |
1245 |
} |
1246 |
|
1247 |
public void refreshSelectedLayersList() { |
1248 |
setOrderedLayersList(null);
|
1249 |
orderedLayersList = getOrderedLayersList(); |
1250 |
selectedLayersScrollPane.setViewportView(orderedLayersList); |
1251 |
} |
1252 |
|
1253 |
public JButton getChangeServerButton() { |
1254 |
return changeServerButton;
|
1255 |
} |
1256 |
|
1257 |
public void mouseClicked(MouseEvent e) { |
1258 |
if ((e.getSource() == this.availableLayersTree) && |
1259 |
(e.getClickCount() == 2)) {
|
1260 |
ActionEvent artificialEvent = new ActionEvent(this.addLayerButton, |
1261 |
ActionEvent.ACTION_PERFORMED, ""); |
1262 |
this.actionPerformed(artificialEvent);
|
1263 |
} |
1264 |
} |
1265 |
|
1266 |
public void mouseEntered(MouseEvent e) { |
1267 |
} |
1268 |
|
1269 |
public void mouseExited(MouseEvent e) { |
1270 |
} |
1271 |
|
1272 |
public void mousePressed(MouseEvent e) { |
1273 |
} |
1274 |
|
1275 |
public void mouseReleased(MouseEvent e) { |
1276 |
} |
1277 |
|
1278 |
public JPanel getImgServiceTab_2() { |
1279 |
return imgServiceTab_2;
|
1280 |
} |
1281 |
|
1282 |
public JButton getServiceInfoNextButton() { |
1283 |
return serviceInfoNextButton;
|
1284 |
} |
1285 |
|
1286 |
public JPanel getChangeServerPanel() { |
1287 |
return changeServerPanel;
|
1288 |
} |
1289 |
|
1290 |
private String lowerPS(String str) { |
1291 |
return PluginServices.getText(this, str.toLowerCase()); |
1292 |
} |
1293 |
|
1294 |
protected java.net.URL createResourceUrl(String path) { |
1295 |
return getClass().getClassLoader().getResource(path);
|
1296 |
} |
1297 |
|
1298 |
public boolean isGroupOptionSelected() { |
1299 |
return groupCheckBox.isSelected();
|
1300 |
} |
1301 |
|
1302 |
public void setTextInVersionLabel(String vers) { |
1303 |
versionLabel.setText(vers); |
1304 |
} |
1305 |
|
1306 |
private boolean isVisibleByDefault(ServiceInformation _si, String layerid) { |
1307 |
int layercount = _si.getLayers().size();
|
1308 |
|
1309 |
for (int i = 0; i < layercount; i++) { |
1310 |
ServiceInformationLayer sil = (ServiceInformationLayer) _si.getLayerById(layerid); |
1311 |
|
1312 |
if (isTrueString(sil.getVisible())) {
|
1313 |
return true; |
1314 |
} |
1315 |
} |
1316 |
|
1317 |
return false; |
1318 |
} |
1319 |
|
1320 |
/**
|
1321 |
*
|
1322 |
* @param visible
|
1323 |
* @return
|
1324 |
*/
|
1325 |
private boolean isTrueString(String visible) { |
1326 |
if (visible.compareToIgnoreCase("true") == 0) { |
1327 |
return true; |
1328 |
} |
1329 |
|
1330 |
return false; |
1331 |
} |
1332 |
} |