Statistics
| Revision:

svn-gvsig-desktop / trunk / extensions / extArcims / src / es / prodevelop / cit / gvsig / arcims / gui / panels / FeatureServicePanel.java @ 8300

History | View | Annotate | Download (38.7 KB)

1
package es.prodevelop.cit.gvsig.arcims.gui.panels;
2

    
3
import java.awt.BorderLayout;
4
import java.awt.event.ActionEvent;
5
import java.awt.event.ActionListener;
6
import java.awt.event.ItemEvent;
7
import java.awt.event.ItemListener;
8
import java.awt.event.KeyEvent;
9
import java.awt.event.KeyListener;
10
import java.awt.event.MouseEvent;
11
import java.awt.event.MouseListener;
12

    
13
import javax.swing.JButton;
14
import javax.swing.JCheckBox;
15
import javax.swing.JPanel;
16
import javax.swing.DefaultListModel;
17
import javax.swing.JLabel;
18
import javax.swing.JTabbedPane;
19
import javax.swing.JTextField;
20
import javax.swing.JEditorPane;
21
import javax.swing.JList;
22
import javax.swing.JToolTip;
23
import javax.swing.JTree;
24
import javax.swing.ImageIcon;
25
import javax.swing.ToolTipManager;
26
import javax.swing.event.ListDataListener;
27
import javax.swing.event.TreeSelectionListener;
28

    
29
import java.util.Vector;
30

    
31
import com.iver.andami.PluginServices;
32
import com.iver.cit.gvsig.project.documents.gui.FOpenDialog;
33
import com.iver.utiles.swing.JComboBox;
34

    
35
import javax.swing.JScrollPane;
36
import javax.swing.event.ListDataEvent;
37
import javax.swing.event.ChangeListener;
38
import javax.swing.event.ChangeEvent;
39
import javax.swing.event.TreeSelectionEvent;
40
import javax.swing.JOptionPane;
41

    
42
import org.apache.log4j.Logger;
43
import org.gvsig.remoteClient.arcims.utils.ServiceInfoTags;
44
import org.gvsig.remoteClient.arcims.utils.ServiceInformation;
45
import org.gvsig.remoteClient.arcims.utils.ServiceInformationLayer;
46

    
47
import es.prodevelop.cit.gvsig.arcims.gui.panels.utils.AvailableLayersTreeCellRenderer;
48
import es.prodevelop.cit.gvsig.arcims.gui.panels.utils.JMultilineToolTip;
49
import es.prodevelop.cit.gvsig.arcims.gui.panels.utils.LayersListElement;
50
import es.prodevelop.cit.gvsig.arcims.gui.panels.utils.ServicesTableModel;
51
import es.prodevelop.cit.gvsig.arcims.gui.panels.utils.SelectedLayersListCellRenderer;
52
import es.prodevelop.cit.gvsig.arcims.gui.panels.utils.ServiceNamesObject;
53
import es.prodevelop.cit.gvsig.arcims.gui.wizards.ArcImsWizard;
54

    
55
import javax.swing.tree.*;
56

    
57
/**
58
 * This class implements the ArcIMS wizard's panel which enables the user to
59
 * select which layers must be retrieved from a Image Service (selected on the
60
 * ServiceNamesPanel).
61
 * 
62
 * @see es.prodevelop.cit.gvsig.arcims.gui.panels.ServiceNamesPanel
63
 * 
64
 * 
65
 * @author jldominguez
66
 */
67
public class FeatureServicePanel extends JPanel implements ActionListener,
68
                ItemListener, ListDataListener, KeyListener, ChangeListener,
69
                TreeSelectionListener, MouseListener {
70
        
71
        protected static Logger logger = Logger.getLogger(FeatureServicePanel.class.getName());
72

    
73
        protected ArcImsWizard parentWizard = null;
74
        protected JPanel detailsPanel = null;
75
        protected JPanel layersPanel = null;
76
        protected JPanel selectedLayersPanel = null;
77
        protected JPanel finalPanel = null;
78
        protected JLabel newLayerNameLabel = null;
79
        protected JTextField newLayerNameTextField = null;
80
        protected JButton selectedLayersUpButton = null;
81
        protected JButton selectedLayersDownButton = null;
82
        protected JList orderedLayersList = null;
83
        protected JTree availableLayersTree = null;
84
        protected DefaultTreeModel availableLayersTreeModel = null;
85
        protected DefaultMutableTreeNode layersTreeRootNode = null;
86
        protected ServiceNamesObject layersTreeRootObject = null;
87
        protected DefaultListModel orderedLayersListModel = null;
88
        protected JButton addLayerButton = null;
89
        protected JButton removeLayerButton = null;
90
        protected JScrollPane availableLayersScrollPane = null;
91
        protected JScrollPane selectedLayersScrollPane = null;
92
        protected JButton addAllButton = null;
93
        protected JButton removeAllButton = null;
94
        protected JScrollPane serviceDetailsScrollPane = null;
95
        protected JEditorPane serviceDetailsTable = null;
96
        protected Vector serviceDetailsTableDataVector = null;
97
        protected Vector serviceDetailsTableColumnNamesVector = null;
98
        protected JTabbedPane imgServiceTabbedPane = null;
99
        protected JPanel tabPanel = null;
100
        protected JPanel imgServiceTab_1 = null;
101
        protected JPanel imgServiceTab_2 = null;
102
        protected JPanel changeServerPanel = null;
103
        protected JButton serviceInfoNextButton = null;
104
        protected JButton serviceInfoPreviousButton = null;
105
        protected JButton changeServerButton = null;
106
        protected JCheckBox showIdCheckBox = null;
107
        protected final String bgColor0 = "\"#FEEDD6\""; // light -
108
        protected final String bgColor3 = "\"#FBFFE1\""; // light yellow
109
        protected final String font = "Arial";
110
        
111
        private JPanel groupCheckPanel;
112
        private JCheckBox groupCheckBox;
113
        
114
        private JLabel versionTitleLabel = null;
115
        private JLabel versionLabel = null;
116

    
117
        private static final long serialVersionUID = 0;
118
        
119
        protected boolean isProperties = false;
120
        
121

    
122
        /**
123
         * The owning wizard is useds as a parameter to allow easy <i>upwards</i>
124
         * references.
125
         * 
126
         * @param parent
127
         *            the wizard that owns this panel
128
         */
129
        public FeatureServicePanel(ArcImsWizard parent, boolean editionallowed, boolean properties) {
130
                super();
131
                isProperties = properties;
132
                parentWizard = parent;
133
                initialize(editionallowed);
134
        }
135

    
136
        protected void initialize(boolean editionallowed) {
137
                setLayout(null);
138
                this.setSize(new java.awt.Dimension(511, 470));
139
                this.initInfoVectors();
140

    
141
                imgServiceTab_1 = new JPanel();
142
                imgServiceTab_1.setLayout(null);
143
                imgServiceTab_2 = new JPanel();
144
                imgServiceTab_2.setLayout(null);
145

    
146
                imgServiceTab_1.add(getDetailsPanel(), null);
147
                imgServiceTab_2.add(getFinalPanel(), null);
148
                imgServiceTab_2.add(getLayersPanel(), null);
149
                imgServiceTab_2.add(getShowIdCheckBox(), null);
150
                imgServiceTab_2.add(getSelectedLayersPanel(), null);
151
                
152
                addImageFormatPanel();
153

    
154
                tabPanel = new JPanel();
155
                tabPanel.setBounds(18, 8, 490 - 15, 415);
156
                tabPanel.setLayout(new BorderLayout());
157
                
158
                imgServiceTabbedPane = new JTabbedPane();
159
                // imgServiceTabbedPane.setBounds(0, 0, 510, 432);
160
                imgServiceTabbedPane.addTab(PluginServices
161
                                .getText(this, "info"), imgServiceTab_1);
162
                
163
                if (editionallowed) {
164
                        imgServiceTabbedPane.addTab(PluginServices.getText(this, "layers"), imgServiceTab_2);
165
                }
166
                
167
                imgServiceTabbedPane.addChangeListener(this);
168

    
169
                changeServerButton = new JButton(PluginServices.getText(this,
170
                                "change_service"));
171
                changeServerButton.addActionListener(this);
172
                changeServerButton.setBounds(95, 8, 120, 25);
173
                serviceInfoPreviousButton = new JButton(PluginServices.getText(this,
174
                                "previous"));
175
                serviceInfoPreviousButton.addActionListener(this);
176
                serviceInfoPreviousButton.setBounds(395 - 103, 4, 100, 20);
177
                serviceInfoNextButton = new JButton(PluginServices
178
                                .getText(this, "next"));
179
                serviceInfoNextButton.addActionListener(this);
180
                serviceInfoNextButton.setBounds(395, 4, 100, 20);
181

    
182
                changeServerPanel = new JPanel();
183
                changeServerPanel.setLayout(null);
184
                changeServerPanel.setBounds(0, 440, 525, 42);
185
                // changeServerPanel.add(changeServerButton);
186
                changeServerPanel.add(serviceInfoPreviousButton);
187
                changeServerPanel.add(serviceInfoNextButton);
188
                
189
                versionTitleLabel = new JLabel(PluginServices.getText(this, "server_version") + ":");
190
                versionTitleLabel.setBounds(new java.awt.Rectangle(39, 443, 125, 21));
191
                add(versionTitleLabel, null);
192
                versionLabel = new JLabel("-");
193
                versionLabel.setBounds(new java.awt.Rectangle(170 - 15, 443, 160, 21));
194
                add(versionLabel, null);
195

    
196
                tabPanel.add(imgServiceTabbedPane, BorderLayout.CENTER);
197
                add(tabPanel);
198
                add(changeServerPanel);
199
        }
200
        // previous (395 - 103, 444, 100, 20));
201
        
202
        
203
        protected void addImageFormatPanel() {
204
                groupCheckPanel = new JPanel();
205
                groupCheckPanel.setBounds(180 - 6, 210 - 8, 501 - 180 - 34, 54); // hasta y = 264 
206
                groupCheckPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(
207
                                                null, PluginServices.getText(this, "group_layers_option"),
208
                                                javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
209
                                                javax.swing.border.TitledBorder.DEFAULT_POSITION,
210
                                                null, null));
211
                
212
                groupCheckBox = new JCheckBox(
213
                                PluginServices.getText(this, "group_layers"),
214
                                false);
215
                groupCheckBox.setBounds(14, 20, 155, 21);
216
                
217
                groupCheckPanel.setLayout(null);
218
                groupCheckPanel.add(groupCheckBox);
219
                imgServiceTab_2.add(groupCheckPanel);
220
        }
221
        
222
        // private J
223
        
224

    
225
        protected void initInfoVectors() {
226
                serviceDetailsTableDataVector = new Vector();
227

    
228
                orderedLayersListModel = new DefaultListModel();
229
                orderedLayersListModel.addListDataListener(this);
230
        }
231

    
232
        /**
233
         * Gets a list model that contains the layers that have been selected by the
234
         * user (among those offered by the server)
235
         * 
236
         * @return the selected layers' list model
237
         */
238
        public DefaultListModel getOrderedLayersListModel() {
239
                return this.orderedLayersListModel;
240
        }
241

    
242
        /**
243
         * This method initializes detailsPanel
244
         * 
245
         * @return javax.swing.JPanel
246
         */
247
        public JPanel getDetailsPanel() {
248
                if (detailsPanel == null) {
249
                        detailsPanel = new JPanel();
250
                        detailsPanel.setLayout(null);
251
                        detailsPanel.setBounds(new java.awt.Rectangle(5, 5, 470 - 15, 345 + 30));
252
                        serviceDetailsScrollPane = new JScrollPane();
253
                        detailsPanel.add(serviceDetailsScrollPane, null);
254
                }
255
                return detailsPanel;
256
        }
257

    
258
        public void setDetailsPanelServiceNameInBorder(String name) {
259
                this.detailsPanel.setBorder(javax.swing.BorderFactory
260
                                .createTitledBorder(null, PluginServices.getText(this,
261
                                                "service_info")
262
                                                + ": " + name,
263
                                                javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
264
                                                javax.swing.border.TitledBorder.DEFAULT_POSITION, null,
265
                                                null));
266

    
267
        }
268

    
269
        /**
270
         * This method initializes layersPanel
271
         * 
272
         * @return javax.swing.JPanel
273
         */
274
        protected JPanel getLayersPanel() {
275
                if (layersPanel == null) {
276
                        layersPanel = new JPanel();
277
                        layersPanel.setLayout(null);
278
                        layersPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(
279
                                        null, PluginServices.getText(this, "available_layers"),
280
                                        javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
281
                                        javax.swing.border.TitledBorder.DEFAULT_POSITION, null,
282
                                        null));
283
                        layersPanel.setBounds(new java.awt.Rectangle(4, 58, 491 - 34, 151 - 8)); // hasta y = 209
284
                        layersPanel.add(getAvailableLayersScrollPane(), null);
285
                }
286
                return layersPanel;
287
        }
288

    
289
        protected JCheckBox getShowIdCheckBox() {
290
                if (showIdCheckBox == null) {
291
                        showIdCheckBox = new JCheckBox(PluginServices.getText(this,
292
                                        "show_layer_ids"), false);
293
                        showIdCheckBox.setBounds(4, 230 - 8, 168, 15);
294
                        showIdCheckBox.addItemListener(this);
295
                }
296
                return showIdCheckBox;
297
        }
298

    
299
        /**
300
         * This method initializes jPanel
301
         * 
302
         * @return javax.swing.JPanel
303
         */
304
        protected JPanel getSelectedLayersPanel() {
305
                if (selectedLayersPanel == null) {
306
                        selectedLayersPanel = new JPanel();
307
                        selectedLayersPanel.setLayout(null);
308
                        selectedLayersPanel
309
                                        .setBorder(javax.swing.BorderFactory
310
                                                        .createTitledBorder(
311
                                                                        null,
312
                                                                        PluginServices.getText(this,
313
                                                                                        "selected_layers"),
314
                                                                        javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
315
                                                                        javax.swing.border.TitledBorder.DEFAULT_POSITION,
316
                                                                        null, null));
317
                        selectedLayersPanel.setBounds(new java.awt.Rectangle(4, 265 - 8, 491 - 34,
318
                                        130));
319
                        selectedLayersPanel.add(getSelectedLayersUpButton(), null);
320
                        selectedLayersPanel.add(getSelectedLayersDownButton(), null);
321
                        selectedLayersPanel.add(getAddLayerButton(), null);
322
                        selectedLayersPanel.add(getRemoveLayerButton(), null);
323
                        selectedLayersPanel.add(getSelectedLayersScrollPane(), null);
324
                        selectedLayersPanel.add(getAddAllButton(), null);
325
                        selectedLayersPanel.add(getRemoveAllButton(), null);
326
                }
327
                return selectedLayersPanel;
328
        }
329

    
330
        /**
331
         * This method initializes finalPanel
332
         * 
333
         * @return javax.swing.JPanel
334
         */
335
        protected JPanel getFinalPanel() {
336
                if (finalPanel == null) {
337
                        newLayerNameLabel = new JLabel();
338
                        newLayerNameLabel
339
                                        .setBounds(new java.awt.Rectangle(60, 18, 195, 21));
340
                        newLayerNameLabel.setText(PluginServices.getText(this,
341
                                        "enter_new_layer_name"));
342
                        finalPanel = new JPanel();
343
                        finalPanel.setLayout(null);
344
                        finalPanel.setBounds(new java.awt.Rectangle(4, 8, 491 - 34, 49)); // hasta y = 58
345
                        finalPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(
346
                                        null, PluginServices.getText(this, "new_layer_name"),
347
                                        javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
348
                                        javax.swing.border.TitledBorder.DEFAULT_POSITION, null,
349
                                        null));
350

    
351
                        // finalPanel.add(newLayerNameLabel, null);
352
                        finalPanel.add(getNewLayerNameTextField(), null);
353
                }
354
                return finalPanel;
355
        }
356

    
357
        /**
358
         * This method initializes newLayerNameTextField
359
         * 
360
         * @return javax.swing.JTextField
361
         */
362
        public JTextField getNewLayerNameTextField() {
363
                if (newLayerNameTextField == null) {
364
                        newLayerNameTextField = new JTextField();
365
                        newLayerNameTextField.addKeyListener(this);
366
                        newLayerNameTextField.addActionListener(this);
367
                        newLayerNameTextField.setBounds(new java.awt.Rectangle(10, 19,
368
                                        437, 20));
369
                }
370
                return newLayerNameTextField;
371
        }
372

    
373
        /**
374
         * This method initializes availableLayersTree
375
         * 
376
         * @return javax.swing.JTree
377
         */
378
        public void setAvailableLayersTree(JTree t) {
379
                availableLayersTree = t;
380
        }
381

    
382
        public JTree getAvailableLayersTree() {
383
                if (availableLayersTree == null) {
384
                        availableLayersTreeModel = new DefaultTreeModel(layersTreeRootNode);
385
                        availableLayersTree = new JTree(availableLayersTreeModel) {
386
                                public JToolTip createToolTip() {
387
                                        JMultilineToolTip jmtt = new JMultilineToolTip();
388
                                        return jmtt;
389
                                }
390
                                private static final long serialVersionUID = 0;
391
                        };
392

    
393
                        ToolTipManager.sharedInstance().registerComponent(
394
                                        availableLayersTree);
395
                        availableLayersTree
396
                                        .setCellRenderer(new AvailableLayersTreeCellRenderer());
397

    
398
                        availableLayersTree.addTreeSelectionListener(this);
399
                        availableLayersTree.addMouseListener(this);
400
                }
401
                return availableLayersTree;
402
        }
403

    
404
        /**
405
         * This method initializes selectedLayersUpButton
406
         * 
407
         * @return javax.swing.JButton
408
         */
409
        protected JButton getSelectedLayersUpButton() {
410
                if (selectedLayersUpButton == null) {
411
                        selectedLayersUpButton = new JButton();
412
                        ImageIcon ii = createImageIcon("images/up-arrow.png");
413
                        selectedLayersUpButton.setIcon(ii);
414
                        selectedLayersUpButton.setBounds(new java.awt.Rectangle(10, 35, 36,
415
                                        36));
416
                        selectedLayersUpButton.addActionListener(this);
417
                }
418
                return selectedLayersUpButton;
419
        }
420

    
421
        /**
422
         * This method initializes selectedLayersDownButton
423
         * 
424
         * @return javax.swing.JButton
425
         */
426
        protected JButton getSelectedLayersDownButton() {
427
                if (selectedLayersDownButton == null) {
428
                        selectedLayersDownButton = new JButton();
429
                        ImageIcon ii = createImageIcon("images/down-arrow.png");
430
                        selectedLayersDownButton.setIcon(ii);
431
                        selectedLayersDownButton.setBounds(new java.awt.Rectangle(10, 75,
432
                                        36, 36));
433
                        selectedLayersDownButton.addActionListener(this);
434
                }
435
                return selectedLayersDownButton;
436
        }
437

    
438
        /**
439
         * This method initializes orderedLayersList
440
         * 
441
         * @return javax.swing.JList
442
         */
443
        public void setOrderedLayersList(JList l) {
444
                orderedLayersList = l;
445
        }
446

    
447
        public JList getOrderedLayersList() {
448
                if (orderedLayersList == null) {
449
                        if (orderedLayersListModel == null) {
450
                                orderedLayersListModel = new DefaultListModel();
451
                                orderedLayersListModel.addListDataListener(this);
452
                        }
453

    
454
                        orderedLayersList = new JList(orderedLayersListModel) {
455
                                public JToolTip createToolTip() {
456
                                        JMultilineToolTip jmltt = new JMultilineToolTip();
457
                                        return jmltt;
458
                                }
459
                                private static final long serialVersionUID = 0;
460
                        };
461
                        ToolTipManager.sharedInstance()
462
                                        .registerComponent(orderedLayersList);
463
                        orderedLayersList
464
                                        .setCellRenderer(new SelectedLayersListCellRenderer());
465
                }
466
                return orderedLayersList;
467
        }
468

    
469
        /**
470
         * This method initializes addLayerButton
471
         * 
472
         * @return javax.swing.JButton
473
         */
474
        protected JButton getAddLayerButton() {
475
                if (addLayerButton == null) {
476
                        addLayerButton = new JButton();
477
                        addLayerButton.setText(PluginServices.getText(this, "add"));
478
                        addLayerButton.addActionListener(this);
479
                        addLayerButton.setBounds(new java.awt.Rectangle(365 - 34, 25, 111, 21));
480
                }
481
                return addLayerButton;
482
        }
483

    
484
        /**
485
         * This method initializes removeLayerButton
486
         * 
487
         * @return javax.swing.JButton
488
         */
489
        protected JButton getRemoveLayerButton() {
490
                if (removeLayerButton == null) {
491
                        removeLayerButton = new JButton();
492
                        removeLayerButton.setText(PluginServices.getText(this, "remove"));
493
                        removeLayerButton.addActionListener(this);
494
                        removeLayerButton
495
                                        .setBounds(new java.awt.Rectangle(365 - 34, 75, 111, 21));
496
                }
497
                return removeLayerButton;
498
        }
499

    
500
        public void setSelectedLayersScrollPaneViewPort() {
501
                this.selectedLayersScrollPane.setViewportView(orderedLayersList);
502
        }
503

    
504
        /**
505
         * Adds a layer to the list of available lists. This is done while parsing
506
         * the server's reponse after a <tt>getCapabilities()</tt> request.
507
         * 
508
         * @param e
509
         *            the element to be added
510
         */
511
        public void addLayerToAvailableList(LayersListElement e) {
512
                DefaultMutableTreeNode node = new DefaultMutableTreeNode(e);
513
                this.layersTreeRootNode.add(node);
514
        }
515

    
516
        /**
517
         * Adds a layer to the list of selected layers after the user has clicked on
518
         * the <i>Add</i> button or double-clicked on an item on the available
519
         * layers list.
520
         * 
521
         * @param e
522
         *            the element to be added
523
         */
524
        public void addLayerToSelectedList(LayersListElement e) {
525
                if (orderedLayersListModel.contains(e)) {
526
                        int r;
527
                        String the_message = PluginServices.getText(this,
528
                                        "this_layer_was_already_added")
529
                                        + ". "
530
                                        + PluginServices.getText(this, "add_again_question")
531
                                        + "\n"
532
                                        + PluginServices.getText(this, "layer")
533
                                        + ": "
534
                                        + e.getName();
535
                        String the_title = PluginServices.getText(this,
536
                                        "this_layer_was_already_added");
537

    
538
                        r = JOptionPane.showOptionDialog(this, the_message, the_title,
539
                                        JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE,
540
                                        null, null, null);
541
                        if (r == JOptionPane.NO_OPTION)
542
                                return;
543
                }
544
                e.setAdded(true);
545
                this.orderedLayersListModel.add(0, e);
546
        }
547

    
548
        /**
549
         * Adds a layer to the list of selected layers without confirmation.
550
         * 
551
         * @param e
552
         *            the element to be added
553
         */
554
        public void addLayerToSelectedListNoConfirm(LayersListElement e) {
555
                e.setAdded(true);
556
                this.orderedLayersListModel.add(0, e);
557
        }
558

    
559
        /**
560
         * This method initializes availableLayersScrollPane
561
         * 
562
         * @return javax.swing.JScrollPane
563
         */
564
        public JScrollPane getAvailableLayersScrollPane() {
565
                if (availableLayersScrollPane == null) {
566
                        availableLayersScrollPane = new JScrollPane();
567
                        availableLayersScrollPane.setBounds(new java.awt.Rectangle(10, 20,
568
                                        471 - 34, 123 - 8));
569
                }
570
                return availableLayersScrollPane;
571
        }
572

    
573
        /**
574
         * This method initializes selectedLayersScrollPane
575
         * 
576
         * @return javax.swing.JScrollPane
577
         */
578
        public JScrollPane getSelectedLayersScrollPane() {
579
                if (selectedLayersScrollPane == null) {
580
                        selectedLayersScrollPane = new JScrollPane();
581
                        selectedLayersScrollPane.setBounds(new java.awt.Rectangle(55, 20,
582
                                        301 - 34, 101));
583
                }
584
                return selectedLayersScrollPane;
585
        }
586

    
587
        /**
588
         * This method initializes addAllButton
589
         * 
590
         * @return javax.swing.JButton
591
         */
592
        protected JButton getAddAllButton() {
593
                if (addAllButton == null) {
594
                        addAllButton = new JButton();
595
                        addAllButton.setText(PluginServices.getText(this, "add_all"));
596
                        addAllButton.addActionListener(this);
597
                        addAllButton.setBounds(new java.awt.Rectangle(365 - 34, 50, 111, 21));
598
                }
599
                return addAllButton;
600
        }
601

    
602
        /**
603
         * This method initializes removeAllButton
604
         * 
605
         * @return javax.swing.JButton
606
         */
607
        protected JButton getRemoveAllButton() {
608
                if (removeAllButton == null) {
609
                        removeAllButton = new JButton();
610
                        removeAllButton.setText(PluginServices.getText(this, "remove_all"));
611
                        removeAllButton.addActionListener(this);
612
                        removeAllButton
613
                                        .setBounds(new java.awt.Rectangle(365 - 34, 100, 111, 21));
614
                }
615
                return removeAllButton;
616
        }
617

    
618
        public void contentsChanged(ListDataEvent e) {
619
        }
620

    
621
        /**
622
         * Automatically invoqued when new layers are added to the selected layers
623
         * list. It checks whether the wizard is ready to finish and send gvSIG the
624
         * user's selection.
625
         */
626
        public void intervalAdded(ListDataEvent e) {
627
                logger.info("Added. Now selected: " + orderedLayersListModel.size());
628
                updateWizardLayerQuery();
629
                parentWizard.fireWizardComplete(this.isCorrectlyConfigured());
630
        }
631

    
632
        /**
633
         * Automatically invoqued when new layers are removed from the selected
634
         * layers list. It checks whether the wizard is ready to finish and send
635
         * gvSIG the user's selection.
636
         */
637
        public void intervalRemoved(ListDataEvent e) {
638
                logger.info("Removed. Now selected: " + orderedLayersListModel.size());
639
                updateWizardLayerQuery();
640
                this.parentWizard.fireWizardComplete(this.isCorrectlyConfigured());
641
        }
642

    
643
        /**
644
         * Checks whether the wizard is ready to finish and send gvSIG the user's
645
         * selection.
646
         * 
647
         * @return <b>true</b> if the wizard is ready to finish, <b>false</b>
648
         *         otherwise
649
         */
650
        public boolean isCorrectlyConfigured() {
651
                if (this.orderedLayersListModel.size() == 0)
652
                        return false;
653
                if (this.newLayerNameTextField.getText().length() == 0)
654
                        return false;
655
                return true;
656
        }
657

    
658
        /**
659
         * Updates panel's local variables: <tt>setLayerQuery(String)</tt> sets a
660
         * comma-separated list of layers (the selected ones) and
661
         * <tt>setNewLayerName(String)</tt> sets the name of the new layer to be
662
         * created and sent to gvSIG.
663
         */
664
        protected void updateWizardLayerQuery() {
665
                if (orderedLayersListModel.size() == 0)
666
                        return;
667

    
668
                String idAcum = "";
669
                for (int i = orderedLayersListModel.size() - 1; i >= 0; i--) {
670
                        idAcum = idAcum
671
                                        + ","
672
                                        + ((LayersListElement) orderedLayersListModel.get(i))
673
                                                        .getID();
674
                }
675
                idAcum = idAcum.substring(1); // elimina la coma inicial
676

    
677
                parentWizard.setLayerQuery(idAcum);
678
                parentWizard.setNewLayerName(this.newLayerNameTextField.getText());
679
        }
680

    
681
        /**
682
         * Empties both lists: available layers list and selected layers list.
683
         */
684
        public void emptyTables() {
685
                // re-start available layers' tree node:
686
                layersTreeRootObject = new ServiceNamesObject(parentWizard
687
                                .getServiceName(), "ImageServer", "Enabled");
688
                layersTreeRootNode = new DefaultMutableTreeNode(layersTreeRootObject);
689

    
690
                // empty the service dateails table:
691
                loadServiceDetailsTable(null);
692

    
693
                if (availableLayersTree != null) {
694
                        availableLayersTree.removeAll();
695
                }
696
                refreshAvailableLayersTree();
697

    
698
                if (orderedLayersListModel != null) {
699
                        orderedLayersListModel.removeAllElements();
700
                }
701
                refreshSelectedLayersList();
702

    
703
                newLayerNameTextField.setText(parentWizard.getServiceName());
704
                
705
        }
706

    
707
        /**
708
         * Listens to button events: Add (all) layer, Remove (all) layer, Move up,
709
         * Move down.
710
         */
711
        public void actionPerformed(ActionEvent e) {
712
                LayersListElement sel;
713
                DefaultMutableTreeNode node;
714
                int ind;
715
                int noofremoved;
716
                int[] selInds;
717

    
718
                if (e.getSource() == addLayerButton) {
719
                        // JTable.getSelectionRows() is 0-based but root is displayed so
720
                        // item 0 is the root itself
721
                        selInds = availableLayersTree.getSelectionRows();
722
                        if (selInds == null)
723
                                return;
724
                        if (selInds.length == 0)
725
                                return;
726

    
727
                        Object root = availableLayersTree.getModel().getRoot();
728
                        int noofchildren = availableLayersTree.getModel().getChildCount(
729
                                        root);
730
                        for (int i = 0; i < noofchildren; i++) {
731
                                // JTable.getSelectionRows() is 0-based but root is displayed so
732
                                // item 0 is the root itself, and we ignore it here of course:
733
                                ind = LayersListElement.getFirstIndexInIntArray(selInds, i + 1);
734
                                if (ind != -1) {
735
                                        node = (DefaultMutableTreeNode) availableLayersTree
736
                                                        .getModel().getChild(root, i);
737
                                        sel = (LayersListElement) node.getUserObject();
738
                                        addLayerToSelectedList(sel);
739
                                }
740
                        }
741
                        refreshAvailableLayersTree();
742
                        refreshSelectedLayersList();
743
                }
744

    
745
                if (e.getSource() == removeLayerButton) {
746
                        selInds = orderedLayersList.getSelectedIndices();
747
                        if (selInds.length == 0)
748
                                return;
749
                        noofremoved = 0;
750
                        for (int i = 0; i < selInds.length; i++) {
751
                                sel = (LayersListElement) orderedLayersListModel
752
                                                .remove(selInds[i] - noofremoved);
753
                                noofremoved++;
754
                                sel.setAdded(orderedLayersListModel.contains(sel));
755
                        }
756
                        refreshAvailableLayersTree();
757
                        refreshSelectedLayersList();
758
                }
759

    
760
                if (e.getSource() == addAllButton) {
761
                        Object root = availableLayersTree.getModel().getRoot();
762
                        int nofchildren = this.availableLayersTree.getModel()
763
                                        .getChildCount(root);
764
                        for (int i = 0; i < nofchildren; i++) {
765
                                node = (DefaultMutableTreeNode) availableLayersTree.getModel()
766
                                                .getChild(root, i);
767
                                sel = (LayersListElement) node.getUserObject();
768
                                logger.info("Adding element: " + sel.toString());
769
                                addLayerToSelectedList(sel);
770
                        }
771
                        refreshAvailableLayersTree();
772
                        refreshSelectedLayersList();
773
                }
774

    
775
                if (e.getSource() == removeAllButton) {
776
                        while (orderedLayersListModel.size() > 0) {
777
                                sel = (LayersListElement) this.orderedLayersListModel.remove(0);
778
                                sel.setAdded(false);
779
                        }
780
                        refreshAvailableLayersTree();
781
                        refreshSelectedLayersList();
782
                }
783

    
784
                if (e.getSource() == selectedLayersDownButton) {
785
                        int l = orderedLayersListModel.size();
786
                        if (l == 0)
787
                                return;
788
                        selInds = orderedLayersList.getSelectedIndices();
789
                        if (selInds.length != 1)
790
                                return;
791
                        if (l == (selInds[0] + 1))
792
                                return; // last item cannot be moved down
793

    
794
                        sel = (LayersListElement) orderedLayersListModel.remove(selInds[0]);
795
                        orderedLayersListModel.add(selInds[0] + 1, sel);
796
                        refreshSelectedLayersList();
797
                        orderedLayersList.setSelectedIndex(selInds[0] + 1);
798
                        refreshAvailableLayersTree();
799
                }
800

    
801
                if (e.getSource() == selectedLayersUpButton) {
802
                        int l = orderedLayersListModel.size();
803
                        if (l == 0)
804
                                return;
805
                        selInds = orderedLayersList.getSelectedIndices();
806
                        if (selInds.length != 1)
807
                                return;
808
                        if (selInds[0] == 0)
809
                                return; // first item cannot be moved up
810

    
811
                        sel = (LayersListElement) orderedLayersListModel.remove(selInds[0]);
812
                        orderedLayersListModel.add(selInds[0] - 1, sel);
813
                        refreshSelectedLayersList();
814
                        orderedLayersList.setSelectedIndex(selInds[0] - 1);
815
                        refreshAvailableLayersTree();
816
                }
817

    
818
                if (e.getSource() == newLayerNameTextField) {
819
                        try {
820
                                JTabbedPane jtp = ((JTabbedPane) parentWizard.getParent());
821
                                FOpenDialog fod = (FOpenDialog) jtp.getParent();
822
                                JPanel jp = (JPanel) fod.getComponent(1);
823
                                JButton acceptButton = (JButton) jp.getComponent(0);
824
                                ActionListener[] clickListeners = acceptButton
825
                                                .getActionListeners();
826
                                ActionEvent artificialEvent = new ActionEvent(acceptButton,
827
                                                ActionEvent.ACTION_PERFORMED, "");
828
                                if (!acceptButton.isEnabled())
829
                                        return;
830
                                for (int i = 0; i < clickListeners.length; i++)
831
                                        clickListeners[i].actionPerformed(artificialEvent);
832
                        } catch (RuntimeException e1) {
833
                                logger.error("Unable to send the click event to the FOpenDialog 'Accept' button. ", e1);
834
                        }
835
                }
836

    
837
                if (e.getSource() == changeServerButton) {
838
                        this.parentWizard.setEnabledPanels("main");
839
                }
840

    
841
                if (e.getSource() == serviceInfoNextButton) {
842
                        int currentTab = this.imgServiceTabbedPane.getSelectedIndex();
843
                        int maxTab = this.imgServiceTabbedPane.getTabCount() - 1;
844
                        if (currentTab < maxTab)
845
                                imgServiceTabbedPane.setSelectedIndex(currentTab + 1);
846
                }
847

    
848
                if (e.getSource() == serviceInfoPreviousButton) {
849
                        int currentTab = this.imgServiceTabbedPane.getSelectedIndex();
850
                        if (currentTab > 0) {
851
                                imgServiceTabbedPane.setSelectedIndex(currentTab - 1);
852
                        } else {
853
                                if (currentTab == 0) {
854
                                        parentWizard.setEnabledPanels("main");
855
                                }
856
                        }
857
                }
858
        }
859

    
860
        public void keyTyped(KeyEvent e) {
861
        }
862

    
863
        public void keyPressed(KeyEvent e) {
864
        }
865

    
866
        /**
867
         * Listens to changes in the text field where the new layer's name is typed.
868
         * The decision whether the wizard is ready to finish or not depends on this
869
         * event too.
870
         */
871
        public void keyReleased(KeyEvent e) {
872
                if (e.getSource() == newLayerNameTextField) {
873
                        this.parentWizard.setNewLayerName(this.newLayerNameTextField
874
                                        .getText());
875
                        this.parentWizard.fireWizardComplete(this.isCorrectlyConfigured());
876
                }
877
        }
878

    
879
        /**
880
         * This method initializes serviceDetailsTable
881
         * 
882
         * @return JEditorPane
883
         */
884
        protected JEditorPane getServiceDetailsTable() {
885
                if (serviceDetailsTable == null) {
886
                        serviceDetailsTable = new JEditorPane();
887
                        serviceDetailsTable.setContentType("text/html");
888
                        serviceDetailsTable.setEditable(false);
889
                        String htmlInfo = this.getFormattedHtmlInfo(
890
                                        serviceDetailsTableDataVector,
891
                                        serviceDetailsTableColumnNamesVector);
892
                        serviceDetailsTable.setText(htmlInfo);
893
                }
894
                return serviceDetailsTable;
895
        }
896

    
897
        public void loadServiceDetailsTable(ServiceInformation si) {
898

    
899
                Vector data = new Vector();
900
                Vector item = new Vector();
901
                Vector cols = new Vector();
902

    
903
                if (si != null) {
904
                        // A valid ArcImsProtocolHandler.ServiceInformation parameter
905
                        cols.add(PluginServices.getText(this, "property"));
906
                        cols.add(PluginServices.getText(this, "value"));
907

    
908
                        if (si.getEnvelope() != null) {
909
                                item.add(PluginServices.getText(this, "xrange"));
910
                                item.add("[ "
911
                                                + ServicesTableModel.leaveNDigits(si.getEnvelope().getXmin(), 10)
912
                                                + ", "
913
                                                + ServicesTableModel.leaveNDigits(si.getEnvelope().getXmax(), 10)
914
                                                + " ]");
915
                                data.add(item.clone());
916
                                item.removeAllElements();
917
                                item.add(PluginServices.getText(this, "yrange"));
918
                                item.add("[ "
919
                                                + ServicesTableModel.leaveNDigits(si.getEnvelope().getYmin(), 10)
920
                                                + ", "
921
                                                + ServicesTableModel.leaveNDigits(si.getEnvelope().getYmax(), 10)
922
                                                + " ]");
923
                                data.add(item.clone());
924
                                item.removeAllElements();
925
                        } else {
926
                                item.add(PluginServices.getText(this, "xrange"));
927
                                item.add(PluginServices.getText(this, "not_available"));
928
                                data.add(item.clone());
929
                                item.removeAllElements();
930
                                item.add(PluginServices.getText(this, "yrange"));
931
                                item.add(PluginServices.getText(this, "not_available"));
932
                                data.add(item.clone());
933
                                item.removeAllElements();
934
                        }
935
                        if (si.getLocale().getLanguage().length() > 0) {
936
                                item.add(PluginServices.getText(this, "language"));
937
                                item.add(lowerPS(si.getLocale().getLanguage() + "_language"));
938
                                data.add(item.clone());
939
                                item.removeAllElements();
940
                        } else {
941
                                item.add(PluginServices.getText(this, "language"));
942
                                item.add(PluginServices.getText(this, "not_available"));
943
                                data.add(item.clone());
944
                                item.removeAllElements();
945
                        }
946
                        if (si.getMapunits().length() > 0) {
947
                                item.add(PluginServices.getText(this, "units"));
948
                                item.add(lowerPS(si.getMapunits()));
949
                                data.add(item.clone());
950
                                item.removeAllElements();
951
                        } else {
952
                                item.add(PluginServices.getText(this, "units"));
953
                                item.add(PluginServices.getText(this, "not_available"));
954
                                data.add(item.clone());
955
                                item.removeAllElements();
956
                        }
957
                        if (si.getLocale().getCountry().length() > 0) {
958
                                item.add(PluginServices.getText(this, "country"));
959
                                item.add(lowerPS(si.getLocale().getCountry() + "_country"));
960
                                data.add(item.clone());
961
                                item.removeAllElements();
962
                        } else {
963
                                item.add(PluginServices.getText(this, "country"));
964
                                item.add(PluginServices.getText(this, "not_available"));
965
                                data.add(item.clone());
966
                                item.removeAllElements();
967
                        }
968
                        if (si.getFeaturecoordsys().length() > 0) {
969
                                item.add(PluginServices.getText(this, "coord_system"));
970
                                item.add(si.getFeaturecoordsys());
971
                                data.add(item.clone());
972
                                item.removeAllElements();
973
                        } else {
974
                                item.add(PluginServices.getText(this, "coord_system"));
975
                                item.add(PluginServices.getText(this, "not_available"));
976
                                data.add(item.clone());
977
                                item.removeAllElements();
978
                        }
979
                        if (si.getScreen_dpi() != -1) {
980
                                item.add("DPI");
981
                                item.add(Integer.toString(si.getScreen_dpi()));
982
                                data.add(item.clone());
983
                                item.removeAllElements();
984
                        } else {
985
                                item.add("DPI");
986
                                item.add(PluginServices.getText(this, "default") + ", 96");
987
                                data.add(item.clone());
988
                                item.removeAllElements();
989
                        }
990
                        
991
                        if (this instanceof ImageServicePanel) {
992
                                if (si.getImagelimit_pixelcount().length() > 0) {
993
                                        item.add(PluginServices.getText(this, "max_no_of_pixels"));
994
                                        item.add(si.getImagelimit_pixelcount());
995
                                        data.add(item.clone());
996
                                        item.removeAllElements();
997
                                } else {
998
                                        item.add(PluginServices.getText(this, "max_no_of_pixels"));
999
                                        item.add(PluginServices.getText(this, "not_available"));
1000
                                        data.add(item.clone());
1001
                                        item.removeAllElements();
1002
                                }
1003
                        }
1004
                } else {
1005
                        // A null ServiceInformation parameter (we must empty the
1006
                        // table). do nothing, because 'data' and 'cols' vectors are empty
1007
                }
1008

    
1009
                serviceDetailsTableDataVector = (Vector) data.clone();
1010
                serviceDetailsTableColumnNamesVector = (Vector) cols.clone();
1011
                serviceDetailsTable = null;
1012
                serviceDetailsTable = getServiceDetailsTable();
1013
                serviceDetailsScrollPane.setBounds(new java.awt.Rectangle(0, 0, 470 - 14, 345 + 31));
1014
                serviceDetailsScrollPane.setViewportView(serviceDetailsTable);
1015
        }
1016

    
1017
        protected ImageIcon createImageIcon(String path) {
1018
                java.net.URL imgURL = createResourceUrl(path);
1019
                if (imgURL != null) {
1020
                        return new ImageIcon(imgURL);
1021
                } else {
1022
                        logger.error("File not found: " + path);
1023
                        return null;
1024
                }
1025
        }
1026

    
1027
        protected void setNextPreviousEnabled(int selectedTab) {
1028
                int lastTabIndex = imgServiceTabbedPane.getTabCount() - 1;
1029
                serviceInfoNextButton.setEnabled(selectedTab < lastTabIndex);
1030
                serviceInfoPreviousButton.setEnabled(
1031
                                (selectedTab > 0) || (!isProperties)
1032
                                 );
1033
        }
1034

    
1035
        public void stateChanged(ChangeEvent e) {
1036
                if (e.getSource() == imgServiceTabbedPane) {
1037
                        setNextPreviousEnabled(imgServiceTabbedPane.getSelectedIndex());
1038
                }
1039
        }
1040

    
1041
        public void setServiceInfoTabNumber(int i) {
1042
                imgServiceTabbedPane.setSelectedIndex(i);
1043
        }
1044

    
1045
        protected String getFormattedHtmlInfo(Vector data, Vector colnames) {
1046
                String location_title_text = PluginServices
1047
                                .getText(this, "data_origin");
1048
                String properties_title_text = PluginServices.getText(this,
1049
                                "properties");
1050

    
1051
                String server_title = PluginServices.getText(this, "server");
1052
                String service_name_title = PluginServices.getText(this, "service");
1053
                String service_type_title = PluginServices
1054
                                .getText(this, "service_type");
1055

    
1056
                String serverURL = parentWizard.getHostName();
1057
                String serviceName = parentWizard.getServiceName();
1058
                String serviceType = lowerPS(parentWizard.getServiceType());
1059

    
1060
                String html = "<html><body>\n"
1061
                                + "<table align=\"center\" width=\"425\" border=\"0\" cellpadding=\"4\" cellspacing=\"4\">\n"
1062
                                + "<tr valign=\"top\" bgcolor=\"#FFFFFF\">\n"
1063
                                + "<td height=\"18\" bgcolor=" + bgColor3
1064
                                + " colspan=\"2\"><font face=\"" + font + "\" size=\"4\"><b>"
1065
                                + location_title_text + "</font></b></td>\n</tr>\n";
1066
                html = html
1067
                                + "<tr valign=\"top\" bgcolor="
1068
                                + bgColor0
1069
                                + ">\n"
1070
                                + "<td width=\"110\" height=\"18\" bgcolor=\"#D6D6D6\" align=\"right\"><font face=\""
1071
                                + font + "\" size=\"3\"><b>" + server_title
1072
                                + "</b></font></td>" + "<td><font face=\"" + font
1073
                                + "\" size=\"3\">" + serverURL + "</font></td>\n</tr>\n";
1074
                html = html
1075
                                + "<tr valign=\"top\" bgcolor="
1076
                                + bgColor0
1077
                                + ">\n"
1078
                                + "<td height=\"18\" bgcolor=\"#D6D6D6\" align=\"right\"><font face=\""
1079
                                + font + "\" size=\"3\"><b>" + service_name_title
1080
                                + "</b></font></td>" + "<td bgcolor=\"#eaeaea\"><font face=\"" + font
1081
                                + "\" size=\"3\">" + serviceName
1082
                                + "</font></td>\n</tr>\n";
1083
                html = html
1084
                                + "<tr valign=\"top\" bgcolor="
1085
                                + bgColor0
1086
                                + ">\n"
1087
                                + "<td height=\"18\" bgcolor=\"#D6D6D6\" align=\"right\"><font face=\""
1088
                                + font + "\" size=\"3\"><b>" + service_type_title
1089
                                + "</b></font></td>" + "<td><font face=\"" + font
1090
                                + "\" size=\"3\">" + serviceType
1091
                                + "</font></td>\n</tr>\n</table>\n\n";
1092
                html = html
1093
                                + "<table align=\"center\" width=\"425\" border=\"0\" cellpadding=\"4\" cellspacing=\"4\">\n"
1094
                                + "<tr valign=\"top\" bgcolor=\"#FFFFFF\">\n"
1095
                                + "<td height=\"18\" bgcolor=" + bgColor3
1096
                                + " colspan=\"2\"><font face=\"" + font + "\" size=\"4\"><b>"
1097
                                + properties_title_text + "</font></b></td>\n</tr>\n";
1098
                for (int i = 0; i < data.size(); i++) {
1099
                        html = html + getTwoStringsOfNthItemIntoHtmlCode(data, i);
1100
                }
1101
                html = html + "</table>\n</body></html>";
1102
                return html;
1103
        }
1104

    
1105
        protected String getTwoStringsOfNthItemIntoHtmlCode(Vector d, int i) {
1106
                String string_1 = (String) ((Vector) d.get(i)).get(0);
1107
                String string_2 = (String) ((Vector) d.get(i)).get(1);
1108
                String bgrColor[] = new String[2];
1109
                bgrColor[0] = "\"#feedd6\""; 
1110
                bgrColor[1] = "\"#eaeaea\"";
1111
                
1112
                String response = "<tr valign=\"top\">\n"
1113
                                + "    <td width=\"110\" height=\"18\" bgcolor=\"#d6d6d6\" align=\"right\"><font face=\""
1114
                                + font + "\" size=\"3\"><b>" + string_1 + "</b></font></td>"
1115
                                + "    <td bgcolor=" + bgrColor[i % 2] + "><font face=\"" + font + "\" size=\"3\">" + string_2
1116
                                + "</font></td>" + "\n</tr>\n";
1117
                return response;
1118
        }
1119

    
1120
        public void valueChanged(TreeSelectionEvent e) {
1121
                if (e.getSource() == availableLayersTree) {
1122
                        availableLayersTree.removeSelectionRow(0);
1123
                }
1124
        }
1125

    
1126
        public void itemStateChanged(ItemEvent e) {
1127
                if (e.getSource() == showIdCheckBox) {
1128
                        setShowIdsToTwoLists(showIdCheckBox.isSelected());
1129
                        refreshAvailableLayersTree();
1130
                        refreshSelectedLayersList();
1131
                }
1132
        }
1133

    
1134
        protected void setShowIdsToTwoLists(boolean show) {
1135
                // available layers tree:
1136
                DefaultMutableTreeNode dmtn;
1137
                LayersListElement lle;
1138
                Object root = availableLayersTreeModel.getRoot();
1139
                int nofchildren = availableLayersTreeModel.getChildCount(root);
1140
                for (int i = 0; i < nofchildren; i++) {
1141
                        dmtn = (DefaultMutableTreeNode) availableLayersTreeModel.getChild(
1142
                                        root, i);
1143
                        lle = (LayersListElement) dmtn.getUserObject();
1144
                        lle.setShowIds(show);
1145
                }
1146
                availableLayersTree.repaint();
1147

    
1148
                // selected layers list:
1149
                for (int i = 0; i < orderedLayersListModel.size(); i++) {
1150
                        lle = (LayersListElement) orderedLayersListModel.get(i);
1151
                        lle.setShowIds(show);
1152
                }
1153
                orderedLayersList.repaint();
1154
        }
1155

    
1156
        public void refreshAvailableLayersTree() {
1157
                setAvailableLayersTree(null);
1158
                availableLayersTree = getAvailableLayersTree();
1159
                availableLayersScrollPane.setViewportView(availableLayersTree);
1160
        }
1161

    
1162
        public void refreshSelectedLayersList() {
1163
                setOrderedLayersList(null);
1164
                orderedLayersList = getOrderedLayersList();
1165
                selectedLayersScrollPane.setViewportView(orderedLayersList);
1166
        }
1167

    
1168
        public JButton getChangeServerButton() {
1169
                return changeServerButton;
1170
        }
1171

    
1172
        public void mouseClicked(MouseEvent e) {
1173
                if ((e.getSource() == this.availableLayersTree) && (e.getClickCount() == 2)) {
1174
                        ActionEvent artificialEvent =
1175
                                new ActionEvent(this.addLayerButton, ActionEvent.ACTION_PERFORMED, "");
1176
                        this.actionPerformed(artificialEvent);
1177
                }
1178
        }
1179

    
1180
        public void mouseEntered(MouseEvent e) { }
1181
        public void mouseExited(MouseEvent e) {        }
1182
        public void mousePressed(MouseEvent e) { }
1183
        public void mouseReleased(MouseEvent e) { }
1184

    
1185
        public JPanel getImgServiceTab_2() {
1186
                return imgServiceTab_2;
1187
        }
1188

    
1189
        public JButton getServiceInfoNextButton() {
1190
                return serviceInfoNextButton;
1191
        }
1192

    
1193
        public JPanel getChangeServerPanel() {
1194
                return changeServerPanel;
1195
        }
1196
        
1197
        private String lowerPS(String str) {
1198
                return PluginServices.getText(this, str.toLowerCase());
1199
                
1200
        }
1201
        
1202
        protected java.net.URL createResourceUrl(String path) {
1203
                return getClass().getClassLoader().getResource(path);
1204
        }
1205
        
1206
        public boolean isGroupOptionSelected() {
1207
                return groupCheckBox.isSelected();
1208
        }
1209

    
1210
        public void setTextInVersionLabel(String vers) {
1211
                versionLabel.setText(vers);
1212
        }
1213
        
1214
        private boolean isVisibleByDefault(ServiceInformation _si, String layerid) {
1215
                int layercount = _si.getLayers().size();
1216
                for (int i=0; i<layercount; i++) {
1217
                        ServiceInformationLayer sil =
1218
                                (ServiceInformationLayer) _si.getLayerById(layerid);
1219
                        if (isTrueString(sil.getVisible())) {
1220
                                return true;
1221
                        }
1222
                }
1223
                return false;
1224
        }
1225
        
1226
        private boolean isTrueString(String visible) {
1227
                if (visible.compareToIgnoreCase("true") == 0) {
1228
                        return true;
1229
                }
1230
                return false;
1231
        }        
1232
        
1233

    
1234
        
1235
} // @jve:decl-index=0:visual-constraint="10,10"