Statistics
| Revision:

svn-gvsig-desktop / tags / v1_11_0_Build_1306 / extensions / extArcims / src / es / prodevelop / cit / gvsig / arcims / gui / panels / FeatureServicePanel.java @ 35731

History | View | Annotate | Download (47.4 KB)

1
/* gvSIG. Sistema de Informaci?n Geogr?fica de la Generalitat Valenciana
2
 *
3
 * Copyright (C) 2006 Prodevelop and Generalitat Valenciana.
4
 *
5
 * This program is free software; you can redistribute it and/or
6
 * modify it under the terms of the GNU General Public License
7
 * as published by the Free Software Foundation; either version 2
8
 * of the License, or (at your option) any later version.
9
 *
10
 * This program is distributed in the hope that it will be useful,
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
 * GNU General Public License for more details.
14
 *
15
 * You should have received a copy of the GNU General Public License
16
 * along with this program; if not, write to the Free Software
17
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
18
 *
19
 * For more information, contact:
20
 *
21
 *   Generalitat Valenciana
22
 *   Conselleria d'Infraestructures i Transport
23
 *   Av. Blasco Ib??ez, 50
24
 *   46010 VALENCIA
25
 *   SPAIN
26
 *
27
 *   +34 963862235
28
 *   gvsig@gva.es
29
 *   www.gvsig.gva.es
30
 *
31
 *    or
32
 *
33
 *   Prodevelop Integraci?n de Tecnolog?as SL
34
 *   Conde Salvatierra de ?lava , 34-10
35
 *   46004 Valencia
36
 *   Spain
37
 *
38
 *   +34 963 510 612
39
 *   +34 963 510 968
40
 *   gis@prodevelop.es
41
 *   http://www.prodevelop.es
42
 */
43
package es.prodevelop.cit.gvsig.arcims.gui.panels;
44

    
45
import java.awt.BorderLayout;
46
import java.awt.event.ActionEvent;
47
import java.awt.event.ActionListener;
48
import java.awt.event.ItemEvent;
49
import java.awt.event.ItemListener;
50
import java.awt.event.KeyEvent;
51
import java.awt.event.KeyListener;
52
import java.awt.event.MouseEvent;
53
import java.awt.event.MouseListener;
54
import java.util.Vector;
55

    
56
import javax.swing.DefaultListModel;
57
import javax.swing.ImageIcon;
58
import javax.swing.JButton;
59
import javax.swing.JCheckBox;
60
import javax.swing.JEditorPane;
61
import javax.swing.JLabel;
62
import javax.swing.JList;
63
import javax.swing.JOptionPane;
64
import javax.swing.JPanel;
65
import javax.swing.JScrollPane;
66
import javax.swing.JTabbedPane;
67
import javax.swing.JTextField;
68
import javax.swing.JToolTip;
69
import javax.swing.JTree;
70
import javax.swing.ToolTipManager;
71
import javax.swing.event.ChangeEvent;
72
import javax.swing.event.ChangeListener;
73
import javax.swing.event.ListDataEvent;
74
import javax.swing.event.ListDataListener;
75
import javax.swing.event.TreeSelectionEvent;
76
import javax.swing.event.TreeSelectionListener;
77
import javax.swing.tree.DefaultMutableTreeNode;
78
import javax.swing.tree.DefaultTreeModel;
79

    
80
import org.apache.log4j.Logger;
81
import org.gvsig.remoteClient.arcims.utils.ServiceInformation;
82
import org.gvsig.remoteClient.arcims.utils.ServiceInformationLayer;
83

    
84
import com.iver.andami.PluginServices;
85
import com.iver.cit.gvsig.addlayer.AddLayerDialog;
86

    
87
import es.prodevelop.cit.gvsig.arcims.gui.panels.utils.AvailableLayersTreeCellRenderer;
88
import es.prodevelop.cit.gvsig.arcims.gui.panels.utils.JMultilineToolTip;
89
import es.prodevelop.cit.gvsig.arcims.gui.panels.utils.LayersListElement;
90
import es.prodevelop.cit.gvsig.arcims.gui.panels.utils.SelectedLayersListCellRenderer;
91
import es.prodevelop.cit.gvsig.arcims.gui.panels.utils.ServiceNamesObject;
92
import es.prodevelop.cit.gvsig.arcims.gui.panels.utils.ServicesTableModel;
93
import es.prodevelop.cit.gvsig.arcims.gui.wizards.ArcImsWizard;
94

    
95

    
96
/**
97
 * This class implements the ArcIMS wizard's panel which enables the user to
98
 * select which layers must be retrieved from a Image Service (selected on the
99
 * ServiceNamesPanel).
100
 *
101
 * @see es.prodevelop.cit.gvsig.arcims.gui.panels.ServiceNamesPanel
102
 *
103
 *
104
 * @author jldominguez
105
 */
106
public class FeatureServicePanel extends JPanel implements ActionListener,
107
    ItemListener, ListDataListener, KeyListener, ChangeListener,
108
    TreeSelectionListener, MouseListener {
109
    protected static Logger logger = Logger.getLogger(FeatureServicePanel.class.getName());
110
    private static final long serialVersionUID = 0;
111
    protected ArcImsWizard parentWizard = null;
112
    protected JPanel detailsPanel = null;
113
    protected JPanel layersPanel = null;
114
    protected JPanel selectedLayersPanel = null;
115
    protected JPanel finalPanel = null;
116
    protected JLabel newLayerNameLabel = null;
117
    protected JTextField newLayerNameTextField = null;
118
    protected JButton selectedLayersUpButton = null;
119
    protected JButton selectedLayersDownButton = null;
120
    protected JList orderedLayersList = null;
121
    protected JTree availableLayersTree = null;
122
    protected DefaultTreeModel availableLayersTreeModel = null;
123
    protected DefaultMutableTreeNode layersTreeRootNode = null;
124
    protected ServiceNamesObject layersTreeRootObject = null;
125
    protected DefaultListModel orderedLayersListModel = null;
126
    protected JButton addLayerButton = null;
127
    protected JButton removeLayerButton = null;
128
    protected JScrollPane availableLayersScrollPane = null;
129
    protected JScrollPane selectedLayersScrollPane = null;
130
    protected JButton addAllButton = null;
131
    protected JButton removeAllButton = null;
132
    protected JScrollPane serviceDetailsScrollPane = null;
133
    protected JEditorPane serviceDetailsTable = null;
134
    protected Vector serviceDetailsTableDataVector = null;
135
    protected Vector serviceDetailsTableColumnNamesVector = null;
136
    protected JTabbedPane imgServiceTabbedPane = null;
137
    protected JPanel tabPanel = null;
138
    protected JPanel imgServiceTab_1 = null;
139
    protected JPanel imgServiceTab_2 = null;
140
    protected JPanel changeServerPanel = null;
141
    protected JButton serviceInfoNextButton = null;
142
    protected JButton serviceInfoPreviousButton = null;
143
    protected JButton changeServerButton = null;
144
    protected JCheckBox showIdCheckBox = null;
145
    protected final String bgColor0 = "\"#FEEDD6\""; // light -
146
    protected final String bgColor3 = "\"#FBFFE1\""; // light yellow
147
    protected final String font = "Arial";
148
    private JPanel groupCheckPanel;
149
    private JCheckBox groupCheckBox;
150
    private JLabel versionTitleLabel = null;
151
    private JLabel versionLabel = null;
152
    protected boolean isProperties = false;
153

    
154
    /**
155
     * The owning wizard is useds as a parameter to allow easy <i>upwards</i>
156
     * references.
157
     *
158
     * @param parent
159
     *            the wizard that owns this panel
160
     */
161
    public FeatureServicePanel(ArcImsWizard parent, boolean editionallowed,
162
        boolean properties) {
163
        super();
164
        isProperties = properties;
165
        parentWizard = parent;
166
        initialize(editionallowed);
167
    }
168

    
169
    protected void initialize(boolean editionallowed) {
170
        setLayout(null);
171
        this.setSize(new java.awt.Dimension(511, 470));
172
        this.initInfoVectors();
173

    
174
        imgServiceTab_1 = new JPanel();
175
        imgServiceTab_1.setLayout(null);
176
        imgServiceTab_2 = new JPanel();
177
        imgServiceTab_2.setLayout(null);
178

    
179
        imgServiceTab_1.add(getDetailsPanel(), null);
180
        imgServiceTab_2.add(getFinalPanel(), null);
181
        imgServiceTab_2.add(getLayersPanel(), null);
182
        imgServiceTab_2.add(getShowIdCheckBox(), null);
183
        imgServiceTab_2.add(getSelectedLayersPanel(), null);
184

    
185
        addImageFormatPanel();
186

    
187
        tabPanel = new JPanel();
188
        tabPanel.setBounds(18, 8, 490 - 15, 415);
189
        tabPanel.setLayout(new BorderLayout());
190

    
191
        imgServiceTabbedPane = new JTabbedPane();
192

    
193
        // imgServiceTabbedPane.setBounds(0, 0, 510, 432);
194
        imgServiceTabbedPane.addTab(PluginServices.getText(this, "info"),
195
            imgServiceTab_1);
196

    
197
        if (editionallowed) {
198
            imgServiceTabbedPane.addTab(PluginServices.getText(this, "layers"),
199
                imgServiceTab_2);
200
        }
201

    
202
        imgServiceTabbedPane.addChangeListener(this);
203

    
204
        changeServerButton = new JButton(PluginServices.getText(this,
205
                    "change_service"));
206
        changeServerButton.addActionListener(this);
207
        changeServerButton.setBounds(95, 8, 120, 25);
208
        serviceInfoPreviousButton = new JButton(PluginServices.getText(this,
209
                    "previous"));
210
        serviceInfoPreviousButton.addActionListener(this);
211
        serviceInfoPreviousButton.setBounds(395 - 103, 4, 100, 20);
212
        serviceInfoNextButton = new JButton(PluginServices.getText(this, "next"));
213
        serviceInfoNextButton.addActionListener(this);
214
        serviceInfoNextButton.setBounds(395, 4, 100, 20);
215

    
216
        changeServerPanel = new JPanel();
217
        changeServerPanel.setLayout(null);
218
        changeServerPanel.setBounds(0, 440, 525, 42);
219

    
220
        // changeServerPanel.add(changeServerButton);
221
        changeServerPanel.add(serviceInfoPreviousButton);
222
        changeServerPanel.add(serviceInfoNextButton);
223

    
224
        versionTitleLabel = new JLabel(PluginServices.getText(this,
225
                    "server_version") + ":");
226
        versionTitleLabel.setBounds(new java.awt.Rectangle(39, 443, 125, 21));
227
        add(versionTitleLabel, null);
228
        versionLabel = new JLabel("-");
229
        versionLabel.setBounds(new java.awt.Rectangle(170 - 15, 443, 160, 21));
230
        add(versionLabel, null);
231

    
232
        tabPanel.add(imgServiceTabbedPane, BorderLayout.CENTER);
233
        add(tabPanel);
234
        add(changeServerPanel);
235
    }
236

    
237
    // previous (395 - 103, 444, 100, 20));
238
    protected void addImageFormatPanel() {
239
        groupCheckPanel = new JPanel();
240
        groupCheckPanel.setBounds(180 - 6, 210 - 8, 501 - 180 - 34, 54); // hasta y = 264 
241
        groupCheckPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(
242
                null, PluginServices.getText(this, "group_layers_option"),
243
                javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
244
                javax.swing.border.TitledBorder.DEFAULT_POSITION, null, null));
245

    
246
        groupCheckBox = new JCheckBox(PluginServices.getText(this,
247
                    "group_layers"), false);
248
        groupCheckBox.setBounds(14, 20, 155, 21);
249

    
250
        groupCheckPanel.setLayout(null);
251
        groupCheckPanel.add(groupCheckBox);
252
        imgServiceTab_2.add(groupCheckPanel);
253
    }
254

    
255
    // private J
256
    protected void initInfoVectors() {
257
        serviceDetailsTableDataVector = new Vector();
258

    
259
        orderedLayersListModel = new DefaultListModel();
260
        orderedLayersListModel.addListDataListener(this);
261
    }
262

    
263
    /**
264
     * Gets a list model that contains the layers that have been selected by the
265
     * user (among those offered by the server)
266
     *
267
     * @return the selected layers' list model
268
     */
269
    public DefaultListModel getOrderedLayersListModel() {
270
        return this.orderedLayersListModel;
271
    }
272

    
273
    /**
274
     * This method initializes detailsPanel
275
     *
276
     * @return javax.swing.JPanel
277
     */
278
    public JPanel getDetailsPanel() {
279
        if (detailsPanel == null) {
280
            detailsPanel = new JPanel();
281
            detailsPanel.setLayout(null);
282
            detailsPanel.setBounds(new java.awt.Rectangle(5, 5, 470 - 15,
283
                    345 + 30));
284
            serviceDetailsScrollPane = new JScrollPane();
285
            detailsPanel.add(serviceDetailsScrollPane, null);
286
        }
287

    
288
        return detailsPanel;
289
    }
290

    
291
    public void setDetailsPanelServiceNameInBorder(String name) {
292
        this.detailsPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(
293
                null,
294
                PluginServices.getText(this, "service_info") + ": " + name,
295
                javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
296
                javax.swing.border.TitledBorder.DEFAULT_POSITION, null, null));
297
    }
298

    
299
    /**
300
     * This method initializes layersPanel
301
     *
302
     * @return javax.swing.JPanel
303
     */
304
    protected JPanel getLayersPanel() {
305
        if (layersPanel == null) {
306
            layersPanel = new JPanel();
307
            layersPanel.setLayout(null);
308
            layersPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(
309
                    null, PluginServices.getText(this, "available_layers"),
310
                    javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
311
                    javax.swing.border.TitledBorder.DEFAULT_POSITION, null, null));
312
            layersPanel.setBounds(new java.awt.Rectangle(4, 58, 491 - 34,
313
                    151 - 8)); // hasta y = 209
314
            layersPanel.add(getAvailableLayersScrollPane(), null);
315
        }
316

    
317
        return layersPanel;
318
    }
319

    
320
    protected JCheckBox getShowIdCheckBox() {
321
        if (showIdCheckBox == null) {
322
            showIdCheckBox = new JCheckBox(PluginServices.getText(this,
323
                        "show_layer_ids"), false);
324

    
325
            // showIdCheckBox.setFont(new Font("SimSun", Font.PLAIN, 12));
326
            showIdCheckBox.setBounds(4, 230 - 8, 168, 15);
327
            showIdCheckBox.addItemListener(this);
328
        }
329

    
330
        return showIdCheckBox;
331
    }
332

    
333
    /**
334
     * This method initializes jPanel
335
     *
336
     * @return javax.swing.JPanel
337
     */
338
    protected JPanel getSelectedLayersPanel() {
339
        if (selectedLayersPanel == null) {
340
            selectedLayersPanel = new JPanel();
341
            selectedLayersPanel.setLayout(null);
342
            selectedLayersPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(
343
                    null, PluginServices.getText(this, "selected_layers"),
344
                    javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
345
                    javax.swing.border.TitledBorder.DEFAULT_POSITION, null, null));
346
            selectedLayersPanel.setBounds(new java.awt.Rectangle(4, 265 - 8,
347
                    491 - 34, 130));
348
            selectedLayersPanel.add(getSelectedLayersUpButton(), null);
349
            selectedLayersPanel.add(getSelectedLayersDownButton(), null);
350
            selectedLayersPanel.add(getAddLayerButton(), null);
351
            selectedLayersPanel.add(getRemoveLayerButton(), null);
352
            selectedLayersPanel.add(getSelectedLayersScrollPane(), null);
353
            selectedLayersPanel.add(getAddAllButton(), null);
354
            selectedLayersPanel.add(getRemoveAllButton(), null);
355
        }
356

    
357
        return selectedLayersPanel;
358
    }
359

    
360
    /**
361
     * This method initializes finalPanel
362
     *
363
     * @return javax.swing.JPanel
364
     */
365
    protected JPanel getFinalPanel() {
366
        if (finalPanel == null) {
367
            newLayerNameLabel = new JLabel();
368
            newLayerNameLabel.setBounds(new java.awt.Rectangle(60, 18, 195, 21));
369
            newLayerNameLabel.setText(PluginServices.getText(this,
370
                    "enter_new_layer_name"));
371
            finalPanel = new JPanel();
372
            finalPanel.setLayout(null);
373
            finalPanel.setBounds(new java.awt.Rectangle(4, 8, 491 - 34, 49)); // hasta y = 58
374
            finalPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(
375
                    null, PluginServices.getText(this, "new_layer_name"),
376
                    javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
377
                    javax.swing.border.TitledBorder.DEFAULT_POSITION, null, null));
378

    
379
            // finalPanel.add(newLayerNameLabel, null);
380
            finalPanel.add(getNewLayerNameTextField(), null);
381
        }
382

    
383
        return finalPanel;
384
    }
385

    
386
    /**
387
     * This method initializes newLayerNameTextField
388
     *
389
     * @return javax.swing.JTextField
390
     */
391
    public JTextField getNewLayerNameTextField() {
392
        if (newLayerNameTextField == null) {
393
            newLayerNameTextField = new JTextField();
394
            newLayerNameTextField.addKeyListener(this);
395
            newLayerNameTextField.addActionListener(this);
396
            newLayerNameTextField.setBounds(new java.awt.Rectangle(10, 19, 437,
397
                    20));
398
        }
399

    
400
        return newLayerNameTextField;
401
    }
402

    
403
    /**
404
     * This method initializes availableLayersTree
405
     *
406
     * @return javax.swing.JTree
407
     */
408
    public void setAvailableLayersTree(JTree t) {
409
        availableLayersTree = t;
410
    }
411

    
412
    public JTree getAvailableLayersTree() {
413
        if (availableLayersTree == null) {
414
            availableLayersTreeModel = new DefaultTreeModel(layersTreeRootNode);
415
            availableLayersTree = new JTree(availableLayersTreeModel) {
416
                        public JToolTip createToolTip() {
417
                            JMultilineToolTip jmtt = new JMultilineToolTip();
418

    
419
                            return jmtt;
420
                        }
421

    
422
                        private static final long serialVersionUID = 0;
423
                    };
424

    
425
            ToolTipManager.sharedInstance()
426
                          .registerComponent(availableLayersTree);
427
            availableLayersTree.setCellRenderer(new AvailableLayersTreeCellRenderer());
428

    
429
            availableLayersTree.addTreeSelectionListener(this);
430
            availableLayersTree.addMouseListener(this);
431
        }
432

    
433
        return availableLayersTree;
434
    }
435

    
436
    /**
437
     * This method initializes selectedLayersUpButton
438
     *
439
     * @return javax.swing.JButton
440
     */
441
    protected JButton getSelectedLayersUpButton() {
442
        if (selectedLayersUpButton == null) {
443
            selectedLayersUpButton = new JButton();
444

    
445
            ImageIcon ii = createImageIcon("images/up-arrow.png");
446
            selectedLayersUpButton.setIcon(ii);
447
            selectedLayersUpButton.setBounds(new java.awt.Rectangle(10, 35, 36,
448
                    36));
449
            selectedLayersUpButton.addActionListener(this);
450
        }
451

    
452
        return selectedLayersUpButton;
453
    }
454

    
455
    /**
456
     * This method initializes selectedLayersDownButton
457
     *
458
     * @return javax.swing.JButton
459
     */
460
    protected JButton getSelectedLayersDownButton() {
461
        if (selectedLayersDownButton == null) {
462
            selectedLayersDownButton = new JButton();
463

    
464
            ImageIcon ii = createImageIcon("images/down-arrow.png");
465
            selectedLayersDownButton.setIcon(ii);
466
            selectedLayersDownButton.setBounds(new java.awt.Rectangle(10, 75,
467
                    36, 36));
468
            selectedLayersDownButton.addActionListener(this);
469
        }
470

    
471
        return selectedLayersDownButton;
472
    }
473

    
474
    /**
475
     * This method initializes orderedLayersList
476
     *
477
     * @return javax.swing.JList
478
     */
479
    public void setOrderedLayersList(JList l) {
480
        orderedLayersList = l;
481
    }
482

    
483
    public JList getOrderedLayersList() {
484
        if (orderedLayersList == null) {
485
            if (orderedLayersListModel == null) {
486
                orderedLayersListModel = new DefaultListModel();
487
                orderedLayersListModel.addListDataListener(this);
488
            }
489

    
490
            orderedLayersList = new JList(orderedLayersListModel) {
491
                        public JToolTip createToolTip() {
492
                            JMultilineToolTip jmltt = new JMultilineToolTip();
493

    
494
                            return jmltt;
495
                        }
496

    
497
                        private static final long serialVersionUID = 0;
498
                    };
499
            ToolTipManager.sharedInstance().registerComponent(orderedLayersList);
500
            orderedLayersList.setCellRenderer(new SelectedLayersListCellRenderer());
501
        }
502

    
503
        return orderedLayersList;
504
    }
505

    
506
    /**
507
     * This method initializes addLayerButton
508
     *
509
     * @return javax.swing.JButton
510
     */
511
    protected JButton getAddLayerButton() {
512
        if (addLayerButton == null) {
513
            addLayerButton = new JButton();
514
            addLayerButton.setText(PluginServices.getText(this, "add"));
515
            addLayerButton.addActionListener(this);
516
            addLayerButton.setBounds(new java.awt.Rectangle(365 - 34, 25, 111,
517
                    21));
518
        }
519

    
520
        return addLayerButton;
521
    }
522

    
523
    /**
524
     * This method initializes removeLayerButton
525
     *
526
     * @return javax.swing.JButton
527
     */
528
    protected JButton getRemoveLayerButton() {
529
        if (removeLayerButton == null) {
530
            removeLayerButton = new JButton();
531
            removeLayerButton.setText(PluginServices.getText(this, "remove"));
532
            removeLayerButton.addActionListener(this);
533
            removeLayerButton.setBounds(new java.awt.Rectangle(365 - 34, 75,
534
                    111, 21));
535
        }
536

    
537
        return removeLayerButton;
538
    }
539

    
540
    public void setSelectedLayersScrollPaneViewPort() {
541
        this.selectedLayersScrollPane.setViewportView(orderedLayersList);
542
    }
543

    
544
    /**
545
     * Adds a layer to the list of available lists. This is done while parsing
546
     * the server's reponse after a <tt>getCapabilities()</tt> request.
547
     *
548
     * @param e
549
     *            the element to be added
550
     */
551
    public void addLayerToAvailableList(LayersListElement e) {
552
        DefaultMutableTreeNode node = new DefaultMutableTreeNode(e);
553
        this.layersTreeRootNode.add(node);
554
    }
555

    
556
    /**
557
     * Adds a layer to the list of selected layers after the user has clicked on
558
     * the <i>Add</i> button or double-clicked on an item on the available
559
     * layers list.
560
     *
561
     * @param e
562
     *            the element to be added
563
     */
564
    public void addLayerToSelectedList(LayersListElement e) {
565
        if (orderedLayersListModel.contains(e)) {
566
            int r;
567
            String the_message = PluginServices.getText(this,
568
                    "this_layer_was_already_added") + ". " +
569
                PluginServices.getText(this, "add_again_question") + "\n" +
570
                PluginServices.getText(this, "layer") + ": " + e.getName();
571
            String the_title = PluginServices.getText(this,
572
                    "this_layer_was_already_added");
573

    
574
            r = JOptionPane.showOptionDialog(this, the_message, the_title,
575
                    JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE,
576
                    null, null, null);
577

    
578
            if (r == JOptionPane.NO_OPTION) {
579
                return;
580
            }
581
        }
582

    
583
        e.setAdded(true);
584
        this.orderedLayersListModel.add(0, e);
585
    }
586

    
587
    /**
588
     * Adds a layer to the list of selected layers without confirmation.
589
     *
590
     * @param e
591
     *            the element to be added
592
     */
593
    public void addLayerToSelectedListNoConfirm(LayersListElement e) {
594
        e.setAdded(true);
595
        this.orderedLayersListModel.add(0, e);
596
    }
597

    
598
    /**
599
     * This method initializes availableLayersScrollPane
600
     *
601
     * @return javax.swing.JScrollPane
602
     */
603
    public JScrollPane getAvailableLayersScrollPane() {
604
        if (availableLayersScrollPane == null) {
605
            availableLayersScrollPane = new JScrollPane();
606
            availableLayersScrollPane.setBounds(new java.awt.Rectangle(10, 20,
607
                    471 - 34, 123 - 8));
608
        }
609

    
610
        return availableLayersScrollPane;
611
    }
612

    
613
    /**
614
     * This method initializes selectedLayersScrollPane
615
     *
616
     * @return javax.swing.JScrollPane
617
     */
618
    public JScrollPane getSelectedLayersScrollPane() {
619
        if (selectedLayersScrollPane == null) {
620
            selectedLayersScrollPane = new JScrollPane();
621
            selectedLayersScrollPane.setBounds(new java.awt.Rectangle(55, 20,
622
                    301 - 34, 101));
623
        }
624

    
625
        return selectedLayersScrollPane;
626
    }
627

    
628
    /**
629
     * This method initializes addAllButton
630
     *
631
     * @return javax.swing.JButton
632
     */
633
    protected JButton getAddAllButton() {
634
        if (addAllButton == null) {
635
            addAllButton = new JButton();
636
            addAllButton.setText(PluginServices.getText(this, "add_all"));
637
            addAllButton.addActionListener(this);
638
            addAllButton.setBounds(new java.awt.Rectangle(365 - 34, 50, 111, 21));
639
        }
640

    
641
        return addAllButton;
642
    }
643

    
644
    /**
645
     * This method initializes removeAllButton
646
     *
647
     * @return javax.swing.JButton
648
     */
649
    protected JButton getRemoveAllButton() {
650
        if (removeAllButton == null) {
651
            removeAllButton = new JButton();
652
            removeAllButton.setText(PluginServices.getText(this, "remove_all"));
653
            removeAllButton.addActionListener(this);
654
            removeAllButton.setBounds(new java.awt.Rectangle(365 - 34, 100,
655
                    111, 21));
656
        }
657

    
658
        return removeAllButton;
659
    }
660

    
661
    public void contentsChanged(ListDataEvent e) {
662
    }
663

    
664
    /**
665
     * Automatically invoqued when new layers are added to the selected layers
666
     * list. It checks whether the wizard is ready to finish and send gvSIG the
667
     * user's selection.
668
     */
669
    public void intervalAdded(ListDataEvent e) {
670
        logger.info("Added. Now selected: " + orderedLayersListModel.size());
671
        updateWizardLayerQuery();
672
        parentWizard.fireWizardComplete(this.isCorrectlyConfigured());
673
    }
674

    
675
    /**
676
     * Automatically invoqued when new layers are removed from the selected
677
     * layers list. It checks whether the wizard is ready to finish and send
678
     * gvSIG the user's selection.
679
     */
680
    public void intervalRemoved(ListDataEvent e) {
681
        logger.info("Removed. Now selected: " + orderedLayersListModel.size());
682
        updateWizardLayerQuery();
683
        this.parentWizard.fireWizardComplete(this.isCorrectlyConfigured());
684
    }
685

    
686
    /**
687
     * Checks whether the wizard is ready to finish and send gvSIG the user's
688
     * selection.
689
     *
690
     * @return <b>true</b> if the wizard is ready to finish, <b>false</b>
691
     *         otherwise
692
     */
693
    public boolean isCorrectlyConfigured() {
694
        if (this.orderedLayersListModel.size() == 0) {
695
            return false;
696
        }
697

    
698
        if (this.newLayerNameTextField.getText().length() == 0) {
699
            return false;
700
        }
701

    
702
        return true;
703
    }
704

    
705
    /**
706
     * Updates panel's local variables: <tt>setLayerQuery(String)</tt> sets a
707
     * comma-separated list of layers (the selected ones) and
708
     * <tt>setNewLayerName(String)</tt> sets the name of the new layer to be
709
     * created and sent to gvSIG.
710
     */
711
    protected void updateWizardLayerQuery() {
712
        if (orderedLayersListModel.size() == 0) {
713
            return;
714
        }
715

    
716
        String idAcum = "";
717

    
718
        for (int i = orderedLayersListModel.size() - 1; i >= 0; i--) {
719
            idAcum = idAcum + "," +
720
                ((LayersListElement) orderedLayersListModel.get(i)).getID();
721
        }
722

    
723
        idAcum = idAcum.substring(1); // elimina la coma inicial
724

    
725
        parentWizard.setLayerQuery(idAcum);
726
        parentWizard.setNewLayerName(this.newLayerNameTextField.getText());
727
    }
728

    
729
    /**
730
     * Empties both lists: available layers list and selected layers list.
731
     */
732
    public void emptyTables() {
733
        // re-start available layers' tree node:
734
        layersTreeRootObject = new ServiceNamesObject(parentWizard.getServiceName(),
735
                "ImageServer", "Enabled");
736
        layersTreeRootNode = new DefaultMutableTreeNode(layersTreeRootObject);
737

    
738
        // empty the service dateails table:
739
        loadServiceDetailsTable(null);
740

    
741
        if (availableLayersTree != null) {
742
            availableLayersTree.removeAll();
743
        }
744

    
745
        refreshAvailableLayersTree();
746

    
747
        if (orderedLayersListModel != null) {
748
            orderedLayersListModel.removeAllElements();
749
        }
750

    
751
        refreshSelectedLayersList();
752

    
753
        newLayerNameTextField.setText(parentWizard.getServiceName());
754
    }
755

    
756
    /**
757
     * Listens to button events: Add (all) layer, Remove (all) layer, Move up,
758
     * Move down.
759
     */
760
    public void actionPerformed(ActionEvent e) {
761
        LayersListElement sel;
762
        DefaultMutableTreeNode node;
763
        int ind;
764
        int noofremoved;
765
        int[] selInds;
766

    
767
        if (e.getSource() == addLayerButton) {
768
            // JTable.getSelectionRows() is 0-based but root is displayed so
769
            // item 0 is the root itself
770
            selInds = availableLayersTree.getSelectionRows();
771

    
772
            if (selInds == null) {
773
                return;
774
            }
775

    
776
            if (selInds.length == 0) {
777
                return;
778
            }
779

    
780
            Object root = availableLayersTree.getModel().getRoot();
781
            int noofchildren = availableLayersTree.getModel().getChildCount(root);
782

    
783
            for (int i = 0; i < noofchildren; i++) {
784
                // JTable.getSelectionRows() is 0-based but root is displayed so
785
                // item 0 is the root itself, and we ignore it here of course:
786
                ind = LayersListElement.getFirstIndexInIntArray(selInds, i + 1);
787

    
788
                if (ind != -1) {
789
                    node = (DefaultMutableTreeNode) availableLayersTree.getModel()
790
                                                                       .getChild(root,
791
                            i);
792
                    sel = (LayersListElement) node.getUserObject();
793
                    addLayerToSelectedList(sel);
794
                }
795
            }
796

    
797
            refreshAvailableLayersTree();
798
            refreshSelectedLayersList();
799
        }
800

    
801
        if (e.getSource() == removeLayerButton) {
802
            selInds = orderedLayersList.getSelectedIndices();
803

    
804
            if (selInds.length == 0) {
805
                return;
806
            }
807

    
808
            noofremoved = 0;
809

    
810
            for (int i = 0; i < selInds.length; i++) {
811
                sel = (LayersListElement) orderedLayersListModel.remove(selInds[i] -
812
                        noofremoved);
813
                noofremoved++;
814
                sel.setAdded(orderedLayersListModel.contains(sel));
815
            }
816

    
817
            refreshAvailableLayersTree();
818
            refreshSelectedLayersList();
819
        }
820

    
821
        if (e.getSource() == addAllButton) {
822
            Object root = availableLayersTree.getModel().getRoot();
823
            int nofchildren = this.availableLayersTree.getModel()
824
                                                      .getChildCount(root);
825

    
826
            for (int i = 0; i < nofchildren; i++) {
827
                node = (DefaultMutableTreeNode) availableLayersTree.getModel()
828
                                                                   .getChild(root,
829
                        i);
830
                sel = (LayersListElement) node.getUserObject();
831
                logger.info("Adding element: " + sel.toString());
832
                addLayerToSelectedList(sel);
833
            }
834

    
835
            refreshAvailableLayersTree();
836
            refreshSelectedLayersList();
837
        }
838

    
839
        if (e.getSource() == removeAllButton) {
840
            while (orderedLayersListModel.size() > 0) {
841
                sel = (LayersListElement) this.orderedLayersListModel.remove(0);
842
                sel.setAdded(false);
843
            }
844

    
845
            refreshAvailableLayersTree();
846
            refreshSelectedLayersList();
847
        }
848

    
849
        if (e.getSource() == selectedLayersDownButton) {
850
            int l = orderedLayersListModel.size();
851

    
852
            if (l == 0) {
853
                return;
854
            }
855

    
856
            selInds = orderedLayersList.getSelectedIndices();
857

    
858
            if (selInds.length != 1) {
859
                return;
860
            }
861

    
862
            if (l == (selInds[0] + 1)) {
863
                return; // last item cannot be moved down
864
            }
865

    
866
            sel = (LayersListElement) orderedLayersListModel.remove(selInds[0]);
867
            orderedLayersListModel.add(selInds[0] + 1, sel);
868
            refreshSelectedLayersList();
869
            orderedLayersList.setSelectedIndex(selInds[0] + 1);
870
            refreshAvailableLayersTree();
871
        }
872

    
873
        if (e.getSource() == selectedLayersUpButton) {
874
            int l = orderedLayersListModel.size();
875

    
876
            if (l == 0) {
877
                return;
878
            }
879

    
880
            selInds = orderedLayersList.getSelectedIndices();
881

    
882
            if (selInds.length != 1) {
883
                return;
884
            }
885

    
886
            if (selInds[0] == 0) {
887
                return; // first item cannot be moved up
888
            }
889

    
890
            sel = (LayersListElement) orderedLayersListModel.remove(selInds[0]);
891
            orderedLayersListModel.add(selInds[0] - 1, sel);
892
            refreshSelectedLayersList();
893
            orderedLayersList.setSelectedIndex(selInds[0] - 1);
894
            refreshAvailableLayersTree();
895
        }
896

    
897
        if (e.getSource() == newLayerNameTextField) {
898
            try {
899
                JTabbedPane jtp = ((JTabbedPane) parentWizard.getParent());
900
                AddLayerDialog fod = (AddLayerDialog) jtp.getParent();
901
                JPanel jp = (JPanel) fod.getComponent(1);
902
                JButton acceptButton = (JButton) jp.getComponent(0);
903
                ActionListener[] clickListeners = acceptButton.getActionListeners();
904
                ActionEvent artificialEvent = new ActionEvent(acceptButton,
905
                        ActionEvent.ACTION_PERFORMED, "");
906

    
907
                if (!acceptButton.isEnabled()) {
908
                    return;
909
                }
910

    
911
                for (int i = 0; i < clickListeners.length; i++)
912
                    clickListeners[i].actionPerformed(artificialEvent);
913
            }
914
            catch (RuntimeException e1) {
915
                logger.error("Unable to send the click event to the FOpenDialog 'Accept' button. ",
916
                    e1);
917
            }
918
        }
919

    
920
        if (e.getSource() == changeServerButton) {
921
            this.parentWizard.setEnabledPanels("main");
922
        }
923

    
924
        if (e.getSource() == serviceInfoNextButton) {
925
            int currentTab = this.imgServiceTabbedPane.getSelectedIndex();
926
            int maxTab = this.imgServiceTabbedPane.getTabCount() - 1;
927

    
928
            if (currentTab < maxTab) {
929
                imgServiceTabbedPane.setSelectedIndex(currentTab + 1);
930
            }
931
        }
932

    
933
        if (e.getSource() == serviceInfoPreviousButton) {
934
            int currentTab = this.imgServiceTabbedPane.getSelectedIndex();
935

    
936
            if (currentTab > 0) {
937
                imgServiceTabbedPane.setSelectedIndex(currentTab - 1);
938
            }
939
            else {
940
                if (currentTab == 0) {
941
                    parentWizard.setEnabledPanels("main");
942
                }
943
            }
944
        }
945
    }
946

    
947
    public void keyTyped(KeyEvent e) {
948
    }
949

    
950
    public void keyPressed(KeyEvent e) {
951
    }
952

    
953
    /**
954
     * Listens to changes in the text field where the new layer's name is typed.
955
     * The decision whether the wizard is ready to finish or not depends on this
956
     * event too.
957
     */
958
    public void keyReleased(KeyEvent e) {
959
        if (e.getSource() == newLayerNameTextField) {
960
            this.parentWizard.setNewLayerName(this.newLayerNameTextField.getText());
961
            this.parentWizard.fireWizardComplete(this.isCorrectlyConfigured());
962
        }
963
    }
964

    
965
    /**
966
     * This method initializes serviceDetailsTable
967
     *
968
     * @return JEditorPane
969
     */
970
    protected JEditorPane getServiceDetailsTable() {
971
        if (serviceDetailsTable == null) {
972
            serviceDetailsTable = new JEditorPane();
973
            serviceDetailsTable.setContentType("text/html");
974
            serviceDetailsTable.setEditable(false);
975

    
976
            String htmlInfo = this.getFormattedHtmlInfo(serviceDetailsTableDataVector,
977
                    serviceDetailsTableColumnNamesVector);
978
            serviceDetailsTable.setText(htmlInfo);
979
        }
980

    
981
        return serviceDetailsTable;
982
    }
983

    
984
    public void loadServiceDetailsTable(ServiceInformation si) {
985
        Vector data = new Vector();
986
        Vector item = new Vector();
987
        Vector cols = new Vector();
988

    
989
        if (si != null) {
990
            // A valid ArcImsProtocolHandler.ServiceInformation parameter
991
            cols.add(PluginServices.getText(this, "property"));
992
            cols.add(PluginServices.getText(this, "value"));
993

    
994
            if (si.getEnvelope() != null) {
995
                item.add(PluginServices.getText(this, "xrange"));
996
                item.add("[ " +
997
                    ServicesTableModel.leaveNDigits(si.getEnvelope().getXmin(),
998
                        10) + ", " +
999
                    ServicesTableModel.leaveNDigits(si.getEnvelope().getXmax(),
1000
                        10) + " ]");
1001
                data.add(item.clone());
1002
                item.removeAllElements();
1003
                item.add(PluginServices.getText(this, "yrange"));
1004
                item.add("[ " +
1005
                    ServicesTableModel.leaveNDigits(si.getEnvelope().getYmin(),
1006
                        10) + ", " +
1007
                    ServicesTableModel.leaveNDigits(si.getEnvelope().getYmax(),
1008
                        10) + " ]");
1009
                data.add(item.clone());
1010
                item.removeAllElements();
1011
            }
1012
            else {
1013
                item.add(PluginServices.getText(this, "xrange"));
1014
                item.add(PluginServices.getText(this, "not_available"));
1015
                data.add(item.clone());
1016
                item.removeAllElements();
1017
                item.add(PluginServices.getText(this, "yrange"));
1018
                item.add(PluginServices.getText(this, "not_available"));
1019
                data.add(item.clone());
1020
                item.removeAllElements();
1021
            }
1022

    
1023
            if (si.getLocale().getLanguage().length() > 0) {
1024
                item.add(PluginServices.getText(this, "language"));
1025
                item.add(lowerPS(si.getLocale().getLanguage() + "_language"));
1026
                data.add(item.clone());
1027
                item.removeAllElements();
1028
            }
1029
            else {
1030
                item.add(PluginServices.getText(this, "language"));
1031
                item.add(PluginServices.getText(this, "not_available"));
1032
                data.add(item.clone());
1033
                item.removeAllElements();
1034
            }
1035

    
1036
            if (si.getMapunits().length() > 0) {
1037
                item.add(PluginServices.getText(this, "units"));
1038
                item.add(lowerPS(si.getMapunits()));
1039
                data.add(item.clone());
1040
                item.removeAllElements();
1041
            }
1042
            else {
1043
                item.add(PluginServices.getText(this, "units"));
1044
                item.add(PluginServices.getText(this, "not_available"));
1045
                data.add(item.clone());
1046
                item.removeAllElements();
1047
            }
1048

    
1049
            if (si.getLocale().getCountry().length() > 0) {
1050
                item.add(PluginServices.getText(this, "country"));
1051
                item.add(lowerPS(si.getLocale().getCountry() + "_country"));
1052
                data.add(item.clone());
1053
                item.removeAllElements();
1054
            }
1055
            else {
1056
                item.add(PluginServices.getText(this, "country"));
1057
                item.add(PluginServices.getText(this, "not_available"));
1058
                data.add(item.clone());
1059
                item.removeAllElements();
1060
            }
1061

    
1062
            if (si.getFeaturecoordsys().length() > 0) {
1063
                item.add(PluginServices.getText(this, "coord_system"));
1064
                item.add(si.getFeaturecoordsys());
1065
                data.add(item.clone());
1066
                item.removeAllElements();
1067
            }
1068
            else {
1069
                item.add(PluginServices.getText(this, "coord_system"));
1070
                item.add(PluginServices.getText(this, "not_available"));
1071
                data.add(item.clone());
1072
                item.removeAllElements();
1073
            }
1074

    
1075
            if (si.getScreen_dpi() != -1) {
1076
                item.add("DPI");
1077
                item.add(Integer.toString(si.getScreen_dpi()));
1078
                data.add(item.clone());
1079
                item.removeAllElements();
1080
            }
1081
            else {
1082
                item.add("DPI");
1083
                item.add(PluginServices.getText(this, "default") + ", 96");
1084
                data.add(item.clone());
1085
                item.removeAllElements();
1086
            }
1087

    
1088
            if (this instanceof ImageServicePanel) {
1089
                if (si.getImagelimit_pixelcount().length() > 0) {
1090
                    item.add(PluginServices.getText(this, "max_no_of_pixels"));
1091
                    item.add(si.getImagelimit_pixelcount());
1092
                    data.add(item.clone());
1093
                    item.removeAllElements();
1094
                }
1095
                else {
1096
                    item.add(PluginServices.getText(this, "max_no_of_pixels"));
1097
                    item.add(PluginServices.getText(this, "not_available"));
1098
                    data.add(item.clone());
1099
                    item.removeAllElements();
1100
                }
1101
            }
1102
        }
1103
        else {
1104
            // A null ServiceInformation parameter (we must empty the
1105
            // table). do nothing, because 'data' and 'cols' vectors are empty
1106
        }
1107

    
1108
        serviceDetailsTableDataVector = (Vector) data.clone();
1109
        serviceDetailsTableColumnNamesVector = (Vector) cols.clone();
1110
        serviceDetailsTable = null;
1111
        serviceDetailsTable = getServiceDetailsTable();
1112
        serviceDetailsScrollPane.setBounds(new java.awt.Rectangle(0, 0,
1113
                470 - 14, 345 + 31));
1114
        serviceDetailsScrollPane.setViewportView(serviceDetailsTable);
1115
    }
1116

    
1117
    protected ImageIcon createImageIcon(String path) {
1118
        java.net.URL imgURL = createResourceUrl(path);
1119

    
1120
        if (imgURL != null) {
1121
            return new ImageIcon(imgURL);
1122
        }
1123
        else {
1124
            logger.error("File not found: " + path);
1125

    
1126
            return null;
1127
        }
1128
    }
1129

    
1130
    protected void setNextPreviousEnabled(int selectedTab) {
1131
        int lastTabIndex = imgServiceTabbedPane.getTabCount() - 1;
1132
        serviceInfoNextButton.setEnabled(selectedTab < lastTabIndex);
1133
        serviceInfoPreviousButton.setEnabled((selectedTab > 0) ||
1134
            (!isProperties));
1135
    }
1136

    
1137
    public void stateChanged(ChangeEvent e) {
1138
        if (e.getSource() == imgServiceTabbedPane) {
1139
            setNextPreviousEnabled(imgServiceTabbedPane.getSelectedIndex());
1140
        }
1141
    }
1142

    
1143
    public void setServiceInfoTabNumber(int i) {
1144
        imgServiceTabbedPane.setSelectedIndex(i);
1145
    }
1146

    
1147
    protected String getFormattedHtmlInfo(Vector data, Vector colnames) {
1148
        String location_title_text = PluginServices.getText(this, "data_origin");
1149
        String properties_title_text = PluginServices.getText(this, "properties");
1150

    
1151
        String server_title = PluginServices.getText(this, "server");
1152
        String service_name_title = PluginServices.getText(this, "service");
1153
        String service_type_title = PluginServices.getText(this, "service_type");
1154

    
1155
        String serverURL = parentWizard.getHostName();
1156
        String serviceName = parentWizard.getServiceName();
1157
        String serviceType = lowerPS(parentWizard.getServiceType());
1158

    
1159
        String html = "<html><body>\n" +
1160
            "<table align=\"center\" width=\"425\" border=\"0\" cellpadding=\"4\" cellspacing=\"4\">\n" +
1161
            "<tr valign=\"top\" bgcolor=\"#FFFFFF\">\n" +
1162
            "<td height=\"18\" bgcolor=" + bgColor3 +
1163
            " colspan=\"2\"><font face=\"" + font + "\" size=\"4\"><b>" +
1164
            location_title_text + "</font></b></td>\n</tr>\n";
1165
        html = html + "<tr valign=\"top\" bgcolor=" + bgColor0 + ">\n" +
1166
            "<td width=\"110\" height=\"18\" bgcolor=\"#D6D6D6\" align=\"right\"><font face=\"" +
1167
            font + "\" size=\"3\"><b>" + server_title + "</b></font></td>" +
1168
            "<td><font face=\"" + font + "\" size=\"3\">" + serverURL +
1169
            "</font></td>\n</tr>\n";
1170
        html = html + "<tr valign=\"top\" bgcolor=" + bgColor0 + ">\n" +
1171
            "<td height=\"18\" bgcolor=\"#D6D6D6\" align=\"right\"><font face=\"" +
1172
            font + "\" size=\"3\"><b>" + service_name_title +
1173
            "</b></font></td>" + "<td bgcolor=\"#eaeaea\"><font face=\"" +
1174
            font + "\" size=\"3\">" + serviceName + "</font></td>\n</tr>\n";
1175
        html = html + "<tr valign=\"top\" bgcolor=" + bgColor0 + ">\n" +
1176
            "<td height=\"18\" bgcolor=\"#D6D6D6\" align=\"right\"><font face=\"" +
1177
            font + "\" size=\"3\"><b>" + service_type_title +
1178
            "</b></font></td>" + "<td><font face=\"" + font + "\" size=\"3\">" +
1179
            serviceType + "</font></td>\n</tr>\n</table>\n\n";
1180
        html = html +
1181
            "<table align=\"center\" width=\"425\" border=\"0\" cellpadding=\"4\" cellspacing=\"4\">\n" +
1182
            "<tr valign=\"top\" bgcolor=\"#FFFFFF\">\n" +
1183
            "<td height=\"18\" bgcolor=" + bgColor3 +
1184
            " colspan=\"2\"><font face=\"" + font + "\" size=\"4\"><b>" +
1185
            properties_title_text + "</font></b></td>\n</tr>\n";
1186

    
1187
        for (int i = 0; i < data.size(); i++) {
1188
            html = html + getTwoStringsOfNthItemIntoHtmlCode(data, i);
1189
        }
1190

    
1191
        html = html + "</table>\n</body></html>";
1192

    
1193
        return html;
1194
    }
1195

    
1196
    protected String getTwoStringsOfNthItemIntoHtmlCode(Vector d, int i) {
1197
        String string_1 = (String) ((Vector) d.get(i)).get(0);
1198
        String string_2 = (String) ((Vector) d.get(i)).get(1);
1199
        String[] bgrColor = new String[2];
1200
        bgrColor[0] = "\"#feedd6\"";
1201
        bgrColor[1] = "\"#eaeaea\"";
1202

    
1203
        String response = "<tr valign=\"top\">\n" +
1204
            "    <td width=\"110\" height=\"18\" bgcolor=\"#d6d6d6\" align=\"right\"><font face=\"" +
1205
            font + "\" size=\"3\"><b>" + string_1 + "</b></font></td>" +
1206
            "    <td bgcolor=" + bgrColor[i % 2] + "><font face=\"" + font +
1207
            "\" size=\"3\">" + string_2 + "</font></td>" + "\n</tr>\n";
1208

    
1209
        return response;
1210
    }
1211

    
1212
    public void valueChanged(TreeSelectionEvent e) {
1213
        if (e.getSource() == availableLayersTree) {
1214
            availableLayersTree.removeSelectionRow(0);
1215
        }
1216
    }
1217

    
1218
    public void itemStateChanged(ItemEvent e) {
1219
        if (e.getSource() == showIdCheckBox) {
1220
            setShowIdsToTwoLists(showIdCheckBox.isSelected());
1221
            refreshAvailableLayersTree();
1222
            refreshSelectedLayersList();
1223
        }
1224
    }
1225

    
1226
    protected void setShowIdsToTwoLists(boolean show) {
1227
        // available layers tree:
1228
        DefaultMutableTreeNode dmtn;
1229
        LayersListElement lle;
1230
        Object root = availableLayersTreeModel.getRoot();
1231
        int nofchildren = availableLayersTreeModel.getChildCount(root);
1232

    
1233
        for (int i = 0; i < nofchildren; i++) {
1234
            dmtn = (DefaultMutableTreeNode) availableLayersTreeModel.getChild(root,
1235
                    i);
1236
            lle = (LayersListElement) dmtn.getUserObject();
1237
            lle.setShowIds(show);
1238
        }
1239

    
1240
        availableLayersTree.repaint();
1241

    
1242
        // selected layers list:
1243
        for (int i = 0; i < orderedLayersListModel.size(); i++) {
1244
            lle = (LayersListElement) orderedLayersListModel.get(i);
1245
            lle.setShowIds(show);
1246
        }
1247

    
1248
        orderedLayersList.repaint();
1249
    }
1250

    
1251
    public void refreshAvailableLayersTree() {
1252
        setAvailableLayersTree(null);
1253
        availableLayersTree = getAvailableLayersTree();
1254
        availableLayersScrollPane.setViewportView(availableLayersTree);
1255
    }
1256

    
1257
    public void refreshSelectedLayersList() {
1258
        setOrderedLayersList(null);
1259
        orderedLayersList = getOrderedLayersList();
1260
        selectedLayersScrollPane.setViewportView(orderedLayersList);
1261
    }
1262

    
1263
    public JButton getChangeServerButton() {
1264
        return changeServerButton;
1265
    }
1266

    
1267
    public void mouseClicked(MouseEvent e) {
1268
        if ((e.getSource() == this.availableLayersTree) &&
1269
                (e.getClickCount() == 2)) {
1270
            ActionEvent artificialEvent = new ActionEvent(this.addLayerButton,
1271
                    ActionEvent.ACTION_PERFORMED, "");
1272
            this.actionPerformed(artificialEvent);
1273
        }
1274
    }
1275

    
1276
    public void mouseEntered(MouseEvent e) {
1277
    }
1278

    
1279
    public void mouseExited(MouseEvent e) {
1280
    }
1281

    
1282
    public void mousePressed(MouseEvent e) {
1283
    }
1284

    
1285
    public void mouseReleased(MouseEvent e) {
1286
    }
1287

    
1288
    public JPanel getImgServiceTab_2() {
1289
        return imgServiceTab_2;
1290
    }
1291

    
1292
    public JButton getServiceInfoNextButton() {
1293
        return serviceInfoNextButton;
1294
    }
1295

    
1296
    public JPanel getChangeServerPanel() {
1297
        return changeServerPanel;
1298
    }
1299

    
1300
    private String lowerPS(String str) {
1301
        return PluginServices.getText(this, str.toLowerCase());
1302
    }
1303

    
1304
    protected java.net.URL createResourceUrl(String path) {
1305
        return getClass().getClassLoader().getResource(path);
1306
    }
1307

    
1308
    public boolean isGroupOptionSelected() {
1309
        return groupCheckBox.isSelected();
1310
    }
1311

    
1312
    public void setTextInVersionLabel(String vers) {
1313
        versionLabel.setText(vers);
1314
    }
1315

    
1316
    private boolean isVisibleByDefault(ServiceInformation _si, String layerid) {
1317
        int layercount = _si.getLayers().size();
1318

    
1319
        for (int i = 0; i < layercount; i++) {
1320
            ServiceInformationLayer sil = (ServiceInformationLayer) _si.getLayerById(layerid);
1321

    
1322
            if (isTrueString(sil.getVisible())) {
1323
                return true;
1324
            }
1325
        }
1326

    
1327
        return false;
1328
    }
1329

    
1330
    private boolean isTrueString(String visible) {
1331
        if (visible.compareToIgnoreCase("true") == 0) {
1332
            return true;
1333
        }
1334

    
1335
        return false;
1336
    }
1337
} // @jve:decl-index=0:visual-constraint="10,10"