Statistics
| Revision:

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
}