KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > jaspersoft > jasperserver > irplugin > gui > explorer > ResourceChooser


1 /*
2  * ResourceChooser.java
3  *
4  * Created on May 24, 2006, 10:17 AM
5  */

6
7 package com.jaspersoft.jasperserver.irplugin.gui.explorer;
8
9 import com.jaspersoft.jasperserver.api.metadata.xml.domain.impl.ResourceDescriptor;
10 import com.jaspersoft.jasperserver.irplugin.JServer;
11 import it.businesslogic.ireport.util.Misc;
12 import java.awt.Color JavaDoc;
13 import java.awt.Component JavaDoc;
14 import java.awt.Cursor JavaDoc;
15 import java.awt.Dialog JavaDoc;
16 import java.awt.Frame JavaDoc;
17 import java.awt.Window JavaDoc;
18 import java.util.List JavaDoc;
19 import javax.swing.DefaultListModel JavaDoc;
20 import javax.swing.DefaultListSelectionModel JavaDoc;
21 import javax.swing.JDialog JavaDoc;
22 import javax.swing.JOptionPane JavaDoc;
23 import javax.swing.ListSelectionModel JavaDoc;
24 import javax.swing.SwingUtilities JavaDoc;
25 import javax.swing.UIManager JavaDoc;
26 import javax.swing.table.DefaultTableModel JavaDoc;
27 import javax.swing.table.TableColumn JavaDoc;
28 import org.exolab.castor.util.Iterator;
29
30 /**
31  *
32  * @author gtoffoli
33  */

34 public class ResourceChooser extends javax.swing.JPanel JavaDoc {
35     
36     private JServer server = null;
37     private JDialog JavaDoc dialog = null;
38     private int dialogResult = JOptionPane.CANCEL_OPTION;
39     
40     private ResourceDescriptor root = null;
41     private ResourceDescriptor currentParent = null;
42     private ResourceDescriptor selectedDescriptor = null;
43     
44     /** Creates new form ResourceChooser */
45     public ResourceChooser() {
46         initComponents();
47            
48         jComboBoxLookIn.removeAllItems();
49         jList1.setModel(new DefaultListModel JavaDoc());
50        
51         jScrollPane2.getViewport().setBackground(Color.WHITE);
52         adjustListView();
53         
54         setRoot(new ResourceDescriptor());
55         getRoot().setUriString("/");
56         getRoot().setChildren(null); // This will force a reload...
57
getRoot().setWsType( ResourceDescriptor.TYPE_FOLDER);
58         
59         jList1.setCellRenderer(new ExplorerCellRenderer());
60         TableColumn JavaDoc col = jTable1.getColumnModel().getColumn(0);
61         col.setCellRenderer(new ExplorerTableCellRenderer());
62         jList1.getSelectionModel().setSelectionMode(DefaultListSelectionModel.SINGLE_SELECTION);
63         jTable1.setSelectionMode( DefaultListSelectionModel.SINGLE_SELECTION );
64         jTable1.getSelectionModel().addListSelectionListener(
65                 new javax.swing.event.ListSelectionListener JavaDoc() {
66                     public void valueChanged(javax.swing.event.ListSelectionEvent JavaDoc evt) {
67                         jTable1ValueChanged(evt);
68                 }
69             });
70
71         jComboBoxLookIn.setRenderer( new ExplorerCellRenderer(true) );
72         
73         jButtonDetails.setIcon(UIManager.getIcon("FileChooser.detailsViewIcon"));
74         jButtonDetails.setText("");
75         
76         jButtonList.setIcon(UIManager.getIcon("FileChooser.listViewIcon"));
77         jButtonList.setText("");
78         
79         jButtonUp.setIcon(UIManager.getIcon("FileChooser.upFolderIcon"));
80         jButtonUp.setText("");
81         
82         jTextField1.requestFocusInWindow();
83         
84         jTextField1.getDocument().addDocumentListener( new javax.swing.event.DocumentListener JavaDoc() {
85             public void changedUpdate(javax.swing.event.DocumentEvent JavaDoc evt) {
86                 updateSelectedDescriptor();
87             }
88             public void insertUpdate(javax.swing.event.DocumentEvent JavaDoc evt) {
89                 updateSelectedDescriptor();
90             }
91             public void removeUpdate(javax.swing.event.DocumentEvent JavaDoc evt) {
92                 updateSelectedDescriptor();
93             }
94         });
95     }
96
97     public JServer getServer() {
98         return server;
99     }
100
101     public void setServer(JServer server) {
102         this.server = server;
103     }
104     
105     public void updateSelectedDescriptor()
106     {
107         // Check if the text rappresents a valid descriptor...
108
selectedDescriptor = null;
109     }
110     
111     
112     /**
113      * Return a set of ResourceDescriptors....
114      *
115      */

116     public List JavaDoc list(ResourceDescriptor rd) throws Exception JavaDoc
117     {
118         java.util.List JavaDoc list = new java.util.ArrayList JavaDoc();
119         
120         if (getServer() != null && rd.getWsType().equals(ResourceDescriptor.TYPE_FOLDER)
121             && rd.getChildren() == null)
122         {
123             return getServer().getWSClient().list(rd);
124         }
125         
126         return list;
127     }
128     
129     /**
130      * Pops a custom resource chooser dialog with a custom approve button. For example, the following code pops up a
131      * file chooser with a "Open image resource" button (instead of the normal "Open resource" button):
132      *
133      * resourcechooser.showDialog(parentFrame, "Open image resource");
134      *
135      * @Parameters:
136      * parent - the parent component of the dialog, can be null; see showDialog for details
137      * approveButtonText - optional text (default "Open resource")
138      *
139      * @Returns:
140      * the return state of the file chooser on popdown:
141      * JOptionPane.CANCEL_OPTION
142      * JOptionPane.OK_OPTION
143      *
144      */

145     public int showDialog(Component JavaDoc parent, String JavaDoc approveButtonText)
146     {
147         dialogResult = JOptionPane.CANCEL_OPTION;
148         if (approveButtonText == null) approveButtonText = "Open resource";
149         jButtonOpen.setText(approveButtonText);
150         
151         Window JavaDoc w = SwingUtilities.getWindowAncestor(parent);
152         if (w instanceof Frame JavaDoc) dialog = new JDialog JavaDoc((Frame JavaDoc)w, true);
153         else if (w instanceof Dialog JavaDoc) dialog = new JDialog JavaDoc((Dialog JavaDoc)w, true);
154         else dialog = new JDialog JavaDoc((Frame JavaDoc)null, true);
155         dialog.getContentPane().setLayout(new java.awt.GridBagLayout JavaDoc());
156         java.awt.GridBagConstraints JavaDoc gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
157         gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
158         gridBagConstraints.weightx = 1.0;
159         gridBagConstraints.weighty = 1.0;
160         dialog.getContentPane().add(this, gridBagConstraints);
161         dialog.pack();
162         Misc.centerFrame(dialog);
163         
164         jComboBoxLookIn.removeAllItems();
165         setCurrentParent( getRoot() );
166         
167         dialog.setVisible(true);
168         return getDialogResult();
169     }
170     
171     
172     /** This method is called from within the constructor to
173      * initialize the form.
174      * WARNING: Do NOT modify this code. The content of this method is
175      * always regenerated by the Form Editor.
176      */

177     // <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents
178
private void initComponents() {
179         java.awt.GridBagConstraints JavaDoc gridBagConstraints;
180
181         buttonGroup1 = new javax.swing.ButtonGroup JavaDoc();
182         jPanelTop = new javax.swing.JPanel JavaDoc();
183         jLabel1 = new javax.swing.JLabel JavaDoc();
184         jComboBoxLookIn = new javax.swing.JComboBox JavaDoc();
185         jButtonUp = new javax.swing.JButton JavaDoc();
186         jButtonList = new javax.swing.JToggleButton JavaDoc();
187         jButtonDetails = new javax.swing.JToggleButton JavaDoc();
188         jPanel1 = new javax.swing.JPanel JavaDoc();
189         jScrollPane1 = new javax.swing.JScrollPane JavaDoc();
190         jList1 = new javax.swing.JList JavaDoc();
191         jScrollPane2 = new javax.swing.JScrollPane JavaDoc();
192         jTable1 = new javax.swing.JTable JavaDoc();
193         jPanel2 = new javax.swing.JPanel JavaDoc();
194         jLabel2 = new javax.swing.JLabel JavaDoc();
195         jLabel3 = new javax.swing.JLabel JavaDoc();
196         jTextField1 = new javax.swing.JTextField JavaDoc();
197         jComboBox2 = new javax.swing.JComboBox JavaDoc();
198         jButtonOpen = new javax.swing.JButton JavaDoc();
199         jButtonClose = new javax.swing.JButton JavaDoc();
200
201         setLayout(new java.awt.GridBagLayout JavaDoc());
202
203         jPanelTop.setLayout(new java.awt.GridBagLayout JavaDoc());
204
205         jPanelTop.setMinimumSize(new java.awt.Dimension JavaDoc(10, 30));
206         jPanelTop.setPreferredSize(new java.awt.Dimension JavaDoc(10, 30));
207         jLabel1.setText("Look in:");
208         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
209         gridBagConstraints.insets = new java.awt.Insets JavaDoc(4, 4, 4, 4);
210         jPanelTop.add(jLabel1, gridBagConstraints);
211
212         jComboBoxLookIn.setModel(new javax.swing.DefaultComboBoxModel JavaDoc(new String JavaDoc[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
213         jComboBoxLookIn.addActionListener(new java.awt.event.ActionListener JavaDoc() {
214             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
215                 jComboBoxLookInActionPerformed(evt);
216             }
217         });
218
219         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
220         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
221         gridBagConstraints.weightx = 1.0;
222         gridBagConstraints.insets = new java.awt.Insets JavaDoc(4, 0, 4, 4);
223         jPanelTop.add(jComboBoxLookIn, gridBagConstraints);
224
225         jButtonUp.setText("Up");
226         jButtonUp.setMargin(new java.awt.Insets JavaDoc(0, 0, 0, 0));
227         jButtonUp.addActionListener(new java.awt.event.ActionListener JavaDoc() {
228             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
229                 jButtonUpActionPerformed(evt);
230             }
231         });
232
233         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
234         gridBagConstraints.insets = new java.awt.Insets JavaDoc(4, 4, 4, 0);
235         jPanelTop.add(jButtonUp, gridBagConstraints);
236
237         buttonGroup1.add(jButtonList);
238         jButtonList.setSelected(true);
239         jButtonList.setText("List");
240         jButtonList.setMargin(new java.awt.Insets JavaDoc(0, 0, 0, 0));
241         jButtonList.addActionListener(new java.awt.event.ActionListener JavaDoc() {
242             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
243                 jButtonListActionPerformed(evt);
244             }
245         });
246
247         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
248         gridBagConstraints.insets = new java.awt.Insets JavaDoc(4, 4, 4, 0);
249         jPanelTop.add(jButtonList, gridBagConstraints);
250
251         buttonGroup1.add(jButtonDetails);
252         jButtonDetails.setLabel("Details");
253         jButtonDetails.setMargin(new java.awt.Insets JavaDoc(0, 0, 0, 0));
254         jButtonDetails.addActionListener(new java.awt.event.ActionListener JavaDoc() {
255             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
256                 jButtonDetailsActionPerformed(evt);
257             }
258         });
259
260         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
261         gridBagConstraints.insets = new java.awt.Insets JavaDoc(4, 0, 4, 4);
262         jPanelTop.add(jButtonDetails, gridBagConstraints);
263
264         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
265         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
266         gridBagConstraints.weightx = 1.0;
267         gridBagConstraints.insets = new java.awt.Insets JavaDoc(4, 4, 4, 4);
268         add(jPanelTop, gridBagConstraints);
269
270         jPanel1.setLayout(new java.awt.GridBagLayout JavaDoc());
271
272         jPanel1.setBackground(new java.awt.Color JavaDoc(255, 255, 255));
273         jScrollPane1.setPreferredSize(new java.awt.Dimension JavaDoc(400, 200));
274         jList1.setLayoutOrientation(javax.swing.JList.VERTICAL_WRAP);
275         jList1.setVisibleRowCount(-1);
276         jList1.addListSelectionListener(new javax.swing.event.ListSelectionListener JavaDoc() {
277             public void valueChanged(javax.swing.event.ListSelectionEvent JavaDoc evt) {
278                 jList1ValueChanged(evt);
279             }
280         });
281         jList1.addMouseListener(new java.awt.event.MouseAdapter JavaDoc() {
282             public void mouseClicked(java.awt.event.MouseEvent JavaDoc evt) {
283                 jList1MouseClicked(evt);
284             }
285         });
286
287         jScrollPane1.setViewportView(jList1);
288
289         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
290         gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
291         gridBagConstraints.weightx = 1.0;
292         gridBagConstraints.weighty = 1.0;
293         jPanel1.add(jScrollPane1, gridBagConstraints);
294
295         jScrollPane2.setBackground(new java.awt.Color JavaDoc(255, 255, 255));
296         jScrollPane2.setOpaque(false);
297         jScrollPane2.setPreferredSize(new java.awt.Dimension JavaDoc(400, 200));
298         jTable1.setModel(new javax.swing.table.DefaultTableModel JavaDoc(
299             new Object JavaDoc [][] {
300
301             },
302             new String JavaDoc [] {
303                 "Name", "Label", "Type"
304             }
305         ) {
306             Class JavaDoc[] types = new Class JavaDoc [] {
307                 java.lang.Object JavaDoc.class, java.lang.String JavaDoc.class, java.lang.String JavaDoc.class
308             };
309             boolean[] canEdit = new boolean [] {
310                 false, false, false
311             };
312
313             public Class JavaDoc getColumnClass(int columnIndex) {
314                 return types [columnIndex];
315             }
316
317             public boolean isCellEditable(int rowIndex, int columnIndex) {
318                 return canEdit [columnIndex];
319             }
320         });
321         jTable1.setIntercellSpacing(new java.awt.Dimension JavaDoc(0, 0));
322         jTable1.setRequestFocusEnabled(false);
323         jTable1.setShowHorizontalLines(false);
324         jTable1.setShowVerticalLines(false);
325         jTable1.addMouseListener(new java.awt.event.MouseAdapter JavaDoc() {
326             public void mouseClicked(java.awt.event.MouseEvent JavaDoc evt) {
327                 jTable1MouseClicked(evt);
328             }
329         });
330
331         jScrollPane2.setViewportView(jTable1);
332
333         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
334         gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
335         gridBagConstraints.weightx = 1.0;
336         gridBagConstraints.weighty = 1.0;
337         jPanel1.add(jScrollPane2, gridBagConstraints);
338
339         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
340         gridBagConstraints.gridx = 0;
341         gridBagConstraints.gridy = 1;
342         gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
343         gridBagConstraints.weightx = 1.0;
344         gridBagConstraints.weighty = 1.0;
345         gridBagConstraints.insets = new java.awt.Insets JavaDoc(0, 4, 4, 4);
346         add(jPanel1, gridBagConstraints);
347
348         jPanel2.setLayout(new java.awt.GridBagLayout JavaDoc());
349
350         jPanel2.setMinimumSize(new java.awt.Dimension JavaDoc(10, 60));
351         jPanel2.setPreferredSize(new java.awt.Dimension JavaDoc(10, 60));
352         jLabel2.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
353         jLabel2.setText("Resource name:");
354         jLabel2.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);
355         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
356         gridBagConstraints.gridx = 0;
357         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
358         jPanel2.add(jLabel2, gridBagConstraints);
359
360         jLabel3.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
361         jLabel3.setText("Type:");
362         jLabel3.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);
363         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
364         gridBagConstraints.gridx = 0;
365         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
366         jPanel2.add(jLabel3, gridBagConstraints);
367
368         jTextField1.addKeyListener(new java.awt.event.KeyAdapter JavaDoc() {
369             public void keyPressed(java.awt.event.KeyEvent JavaDoc evt) {
370                 jTextField1KeyPressed(evt);
371             }
372         });
373
374         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
375         gridBagConstraints.gridx = 1;
376         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
377         gridBagConstraints.weightx = 1.0;
378         gridBagConstraints.insets = new java.awt.Insets JavaDoc(4, 4, 0, 4);
379         jPanel2.add(jTextField1, gridBagConstraints);
380
381         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
382         gridBagConstraints.gridx = 1;
383         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
384         gridBagConstraints.weightx = 1.0;
385         gridBagConstraints.insets = new java.awt.Insets JavaDoc(4, 4, 4, 4);
386         jPanel2.add(jComboBox2, gridBagConstraints);
387
388         jButtonOpen.setText("Open resource");
389         jButtonOpen.setMargin(new java.awt.Insets JavaDoc(2, 12, 2, 12));
390         jButtonOpen.addActionListener(new java.awt.event.ActionListener JavaDoc() {
391             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
392                 jButtonOpenActionPerformed(evt);
393             }
394         });
395
396         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
397         gridBagConstraints.gridx = 2;
398         gridBagConstraints.insets = new java.awt.Insets JavaDoc(0, 16, 0, 4);
399         jPanel2.add(jButtonOpen, gridBagConstraints);
400
401         jButtonClose.setText("Cancel");
402         jButtonClose.setMargin(new java.awt.Insets JavaDoc(2, 12, 2, 12));
403         jButtonClose.addActionListener(new java.awt.event.ActionListener JavaDoc() {
404             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
405                 jButtonCloseActionPerformed(evt);
406             }
407         });
408
409         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
410         gridBagConstraints.gridx = 2;
411         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
412         gridBagConstraints.insets = new java.awt.Insets JavaDoc(0, 16, 0, 4);
413         jPanel2.add(jButtonClose, gridBagConstraints);
414
415         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
416         gridBagConstraints.gridx = 0;
417         gridBagConstraints.gridy = 2;
418         gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
419         gridBagConstraints.weightx = 1.0;
420         gridBagConstraints.insets = new java.awt.Insets JavaDoc(0, 4, 0, 0);
421         add(jPanel2, gridBagConstraints);
422
423     }// </editor-fold>//GEN-END:initComponents
424

425     private void jTextField1KeyPressed(java.awt.event.KeyEvent JavaDoc evt) {//GEN-FIRST:event_jTextField1KeyPressed
426

427         if (evt.getKeyCode() == evt.VK_ENTER)
428         {
429             jButtonOpenActionPerformed(null);
430         }
431         
432     }//GEN-LAST:event_jTextField1KeyPressed
433

434     private void jButtonCloseActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jButtonCloseActionPerformed
435

436         selectedDescriptor = null;
437         this.setDialogResult( JOptionPane.OK_OPTION);
438         dialog.setVisible(false);
439         dialog.dispose();
440         
441     }//GEN-LAST:event_jButtonCloseActionPerformed
442

443     private void jButtonOpenActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jButtonOpenActionPerformed
444

445         if (jTextField1.getText().trim().length() == 0) return;
446         
447         if (getSelectedDescriptor() == null)
448         {
449             // Check if the selected descriptor can be a valid uri...
450
// 1. Check if the name contains /...
451
String JavaDoc uri = jTextField1.getText().trim();
452             while (uri.endsWith("/")) uri = uri.substring(0,uri.length()-1);
453             if (uri.length() == 0) return;
454             if (uri.indexOf("/") >= 0)
455             {
456                 ResourceDescriptor nrd = new ResourceDescriptor();
457                 nrd.setUriString(uri);
458                 nrd.setWsType(ResourceDescriptor.TYPE_FOLDER);
459                 try {
460                     nrd = getServer().getWSClient().get(nrd, null);
461                     
462                     if (!nrd.getWsType().equals("-")) // Filled by the WS!!!!
463
{
464                         if (nrd.getWsType().equals(ResourceDescriptor.TYPE_FOLDER))
465                         {
466                             openFolder(nrd);
467                             return;
468                         }
469                         else
470                         {
471                             selectedDescriptor = nrd;
472                         }
473                     }
474                     
475                 } catch (Exception JavaDoc ex){
476                     //ex.printStackTrace();
477
}
478                 
479             }
480             else
481             {
482                 ResourceDescriptor nrd = new ResourceDescriptor();
483                 uri = ((ResourceDescriptor)jComboBoxLookIn.getSelectedItem()).getUriString() + "/" + uri;
484                 nrd.setUriString(uri);
485                 nrd.setWsType(ResourceDescriptor.TYPE_FOLDER);
486                 try {
487                     nrd = getServer().getWSClient().get(nrd, null);
488                     if (nrd.getWsType() != null) // Filled by the WS!!!!
489
{
490                         if (nrd.getWsType().equals(ResourceDescriptor.TYPE_FOLDER))
491                         {
492                             openFolder(nrd);
493                             return;
494                         }
495                         else
496                         {
497                             selectedDescriptor = nrd;
498                         }
499                     }
500                 } catch (Exception JavaDoc ex){
501                     //ex.printStackTrace();
502
}
503                 
504             }
505             
506             if (getSelectedDescriptor() == null)
507             {
508                 JOptionPane.showMessageDialog(this, uri + "\nResource not found or not valid.\nPlease verify the correct file name was given.");
509                 return;
510             }
511         }
512         
513         this.setDialogResult( JOptionPane.OK_OPTION);
514         dialog.setVisible(false);
515         dialog.dispose();
516         
517     }//GEN-LAST:event_jButtonOpenActionPerformed
518

519     
520     /**
521      * Must be used to open never opened folders.
522      *
523      */

524     public void openFolder(ResourceDescriptor nrd)
525     {
526         try {
527             
528         nrd.setChildren(null);
529                 
530         // Create the chain of descriptors....
531
jComboBoxLookIn.setSelectedIndex(0);
532         String JavaDoc path = nrd.getUriString();
533         
534         String JavaDoc complete_path = "";
535         while (path.startsWith("/")) path =path.substring(1);
536         while (path.endsWith("/")) path = path.substring(0,path.length() -1);
537         while (path.indexOf("/") >= 0)
538         {
539             String JavaDoc folderName = path.substring(0, path.indexOf("/"));
540             
541             path = path.substring(path.indexOf("/")+1);
542             
543             complete_path += "/" + folderName;
544             ResourceDescriptor nr = new ResourceDescriptor();
545             nr.setUriString(complete_path);
546             nr.setName(folderName);
547             nr.setWsType(ResourceDescriptor.TYPE_FOLDER);
548             nr.setChildren(null);
549             jComboBoxLookIn.addItem(nr);
550         }
551         
552         jComboBoxLookIn.addItem(nrd);
553         jComboBoxLookIn.setSelectedItem(nrd);
554         
555         jTextField1.setText(nrd.getUriString());
556         jTextField1.setSelectionStart(0);
557         jTextField1.setSelectionEnd(nrd.getUriString().length());
558         jTextField1.requestFocusInWindow();
559         
560         } catch (Exception JavaDoc ex)
561         {
562             ex.printStackTrace();
563         }
564     }
565     
566     private void jList1ValueChanged(javax.swing.event.ListSelectionEvent JavaDoc evt) {//GEN-FIRST:event_jList1ValueChanged
567

568         if (jList1.getSelectedIndex() < 0) jTable1.getSelectionModel().clearSelection();
569         else
570         {
571             jTable1.getSelectionModel().setSelectionInterval(jList1.getSelectedIndex(),jList1.getSelectedIndex());
572         }
573         selectionChanged();
574     }//GEN-LAST:event_jList1ValueChanged
575

576     
577     
578      private void jTable1ValueChanged(javax.swing.event.ListSelectionEvent JavaDoc evt) {
579
580         if (jTable1.getSelectedRowCount() == 0) jList1.getSelectionModel().clearSelection();
581         else
582         {
583             jList1.getSelectionModel().setSelectionInterval(jTable1.getSelectedRow(),jTable1.getSelectedRow());
584         }
585         selectionChanged();
586     }
587      
588      
589      private void selectionChanged()
590      {
591          selectedDescriptor = null;
592          if (jList1.getSelectedIndex() >= 0)
593          {
594             ResourceDescriptor rd = (ResourceDescriptor)jList1.getSelectedValue();
595             if (rd.getWsType() != null && !rd.getWsType().equals(ResourceDescriptor.TYPE_FOLDER))
596             {
597                 selectedDescriptor = rd;
598                 jTextField1.setText( rd.getName());
599             }
600          }
601      }
602     
603      private void jButtonUpActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jButtonUpActionPerformed
604

605         if (jComboBoxLookIn.getSelectedIndex() > 0)
606         {
607             jComboBoxLookIn.setSelectedIndex(jComboBoxLookIn.getSelectedIndex()-1);
608         }
609         
610      }//GEN-LAST:event_jButtonUpActionPerformed
611

612     private void jTable1MouseClicked(java.awt.event.MouseEvent JavaDoc evt) {//GEN-FIRST:event_jTable1MouseClicked
613
if (evt.getClickCount() == 2 && evt.getButton() == evt.BUTTON1)
614         {
615             if (jTable1.getSelectedRow() >= 0)
616             {
617                 ResourceDescriptor rd = (ResourceDescriptor)jTable1.getValueAt(jTable1.getSelectedRow(), 0);
618                 if (rd.getWsType() != null && rd.getWsType().equals(ResourceDescriptor.TYPE_FOLDER))
619                 {
620                     setCurrentParent(rd);
621                 }
622             }
623         }
624     }//GEN-LAST:event_jTable1MouseClicked
625

626     private void jList1MouseClicked(java.awt.event.MouseEvent JavaDoc evt) {//GEN-FIRST:event_jList1MouseClicked
627

628         if (evt.getClickCount() == 2 &&
629             evt.getButton() == evt.BUTTON1)
630         {
631             ResourceDescriptor rd = (ResourceDescriptor)jList1.getSelectedValue();
632             if (rd.getWsType() != null && rd.getWsType().equals(ResourceDescriptor.TYPE_FOLDER))
633             {
634                 setCurrentParent(rd);
635             }
636         }
637         
638     }//GEN-LAST:event_jList1MouseClicked
639

640     private void jComboBoxLookInActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jComboBoxLookInActionPerformed
641

642         setCurrentParent( (ResourceDescriptor)jComboBoxLookIn.getSelectedItem());
643         
644     }//GEN-LAST:event_jComboBoxLookInActionPerformed
645

646     private void jButtonDetailsActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jButtonDetailsActionPerformed
647
adjustListView();
648     }//GEN-LAST:event_jButtonDetailsActionPerformed
649

650     private void jButtonListActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jButtonListActionPerformed
651

652         adjustListView();
653         
654     }//GEN-LAST:event_jButtonListActionPerformed
655

656     public void adjustListView()
657     {
658        jScrollPane1.setVisible(jButtonList.isSelected());
659        jScrollPane2.setVisible(!jButtonList.isSelected());
660        
661        jPanel1.doLayout();
662        jPanel1.updateUI();
663        //if (jScrollPane1.isVisible()) jScrollPane1.updateUI();
664
//if (jScrollPane2.isVisible()) jScrollPane2.updateUI();
665
}
666
667     public ResourceDescriptor getRoot() {
668         return root;
669     }
670
671     public void setRoot(ResourceDescriptor root) {
672         this.root = root;
673     }
674
675     public ResourceDescriptor getCurrentParent() {
676         return currentParent;
677     }
678
679     public void setCurrentParent(ResourceDescriptor currentParent) {
680         
681         if (this.currentParent == currentParent &&
682             currentParent != null && currentParent.getChildren() != null) return; // Nothing to do
683

684         this.currentParent = currentParent;
685         
686         // 1. Find the descriptor in the combobox. If it is not present, add it at the end...
687
boolean found = false;
688         for (int i=0; i<jComboBoxLookIn.getItemCount(); ++i)
689         {
690             ResourceDescriptor tmprd = (ResourceDescriptor)jComboBoxLookIn.getItemAt(i);
691             if (tmprd == currentParent)
692             {
693                jComboBoxLookIn.setSelectedIndex(i);
694                found = true;
695                while (jComboBoxLookIn.getItemCount() > i+1)
696                {
697                    jComboBoxLookIn.removeItemAt(i+1);
698                }
699                break;
700             }
701         }
702         
703         if (!found && currentParent != null)
704         {
705             jComboBoxLookIn.addItem( currentParent );
706             jComboBoxLookIn.setSelectedItem(currentParent);
707         }
708         
709         refreshContent();
710     }
711     
712     /**
713      * Replace the content of table and list with the childs of currentParent.
714      * If currentParent.getChilds == null, the webservice is called to populate it...
715      *
716      */

717     private void refreshContent()
718     {
719         if (dialog == null) return;
720         try {
721             dialog.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
722
723             DefaultListModel JavaDoc dlm = (DefaultListModel JavaDoc)jList1.getModel();
724             DefaultTableModel JavaDoc dtm = (DefaultTableModel JavaDoc)jTable1.getModel();
725
726             dlm.removeAllElements();
727             dtm.setRowCount(0);
728
729             if (currentParent == null) return;
730             if (getServer() == null) return;
731             
732             if (currentParent != null)
733             {
734                     List JavaDoc children = currentParent.getChildren();
735                     if (children == null)
736                     {
737                         try {
738                             children = list(currentParent);
739                             for (int i=0; i<children.size(); ++i)
740                             {
741                                 ((ResourceDescriptor)children.get(i)).setChildren(null);
742                             }
743                             currentParent.setChildren( children );
744                         } catch (Exception JavaDoc ex)
745                         {
746                             JOptionPane.showMessageDialog(this,"Unable to list " + currentParent);
747                             ex.printStackTrace();
748                         }
749                     }
750                     
751                     if (children != null)
752                     {
753                         for (int i=0; i<children.size(); ++i)
754                         {
755                             ResourceDescriptor rd = ((ResourceDescriptor)children.get(i));
756                             dlm.addElement(rd);
757                             dtm.addRow(new Object JavaDoc[]{rd, rd.getLabel(), rd.getWsType()});
758                         }
759                     }
760             }
761         }
762         finally
763         {
764             jList1.updateUI();
765             jTable1.updateUI();
766             dialog.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
767         }
768     }
769
770     public int getDialogResult() {
771         return dialogResult;
772     }
773
774     public void setDialogResult(int dialogResult) {
775         this.dialogResult = dialogResult;
776     }
777
778     public ResourceDescriptor getSelectedDescriptor() {
779         return selectedDescriptor;
780     }
781     
782     
783     
784     // Variables declaration - do not modify//GEN-BEGIN:variables
785
private javax.swing.ButtonGroup JavaDoc buttonGroup1;
786     private javax.swing.JButton JavaDoc jButtonClose;
787     private javax.swing.JToggleButton JavaDoc jButtonDetails;
788     private javax.swing.JToggleButton JavaDoc jButtonList;
789     private javax.swing.JButton JavaDoc jButtonOpen;
790     private javax.swing.JButton JavaDoc jButtonUp;
791     private javax.swing.JComboBox JavaDoc jComboBox2;
792     private javax.swing.JComboBox JavaDoc jComboBoxLookIn;
793     private javax.swing.JLabel JavaDoc jLabel1;
794     private javax.swing.JLabel JavaDoc jLabel2;
795     private javax.swing.JLabel JavaDoc jLabel3;
796     private javax.swing.JList JavaDoc jList1;
797     private javax.swing.JPanel JavaDoc jPanel1;
798     private javax.swing.JPanel JavaDoc jPanel2;
799     private javax.swing.JPanel JavaDoc jPanelTop;
800     private javax.swing.JScrollPane JavaDoc jScrollPane1;
801     private javax.swing.JScrollPane JavaDoc jScrollPane2;
802     private javax.swing.JTable JavaDoc jTable1;
803     private javax.swing.JTextField JavaDoc jTextField1;
804     // End of variables declaration//GEN-END:variables
805

806 }
807
Popular Tags