Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

Source code: medi/swing/SessionManagement.java


1   /*
2    * SessionManagement_2.java
3    *
4    * Created on 21 aprile 2002, 18.58
5       Medi - A media archiver. Archives media files for easy management.
6       Copyright (C) 2002  Antonio Petrelli
7   
8       This program is free software; you can redistribute it and/or modify
9       it under the terms of the GNU General Public License as published by
10      the Free Software Foundation; either version 2 of the License, or
11      (at your option) any later version.
12  
13      This program is distributed in the hope that it will be useful,
14      but WITHOUT ANY WARRANTY; without even the implied warranty of
15      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16      GNU General Public License for more details.
17  
18      You should have received a copy of the GNU General Public License
19      along with this program; if not, write to the Free Software
20      Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
21  
22      Contact me at: brenmcguire@users.sourceforge.net
23   */
24  
25  package medi.swing;
26  
27  import javatools.db.*;
28  import medi.base.Provider;
29  import medi.swing.util.*;
30  
31  /**
32   * It is a frame to manage assignment of data to a session, or session position.
33   * @author Antonio Petrelli
34   */
35  public class SessionManagement extends javax.swing.JDialog {
36  
37      /** Adds an array of data to a session.
38       */    
39      public final int ADD_MODE = 1;
40      /** Moves a data array from a session to another session.
41       */    
42      public final int MOVE_MODE = 2;
43      /** Moves a session from a position to another.
44       */    
45      public final int MOVE_SESSION_MODE = 3;
46      
47      /** Creates new form SessionManagement
48       * @param parent The parent frame.
49       * @param modal The modal flag.
50       */
51      public SessionManagement(java.awt.Frame parent, boolean modal) {
52          super(parent, modal);
53          initComponents();
54          butSelect.setEnabled(false);
55      }
56  
57      /** Sets the provider to use.
58       * @param pPrv The provider to use.
59       */    
60      public void setProvider(Provider pPrv) {
61          prv = pPrv;
62      }
63  
64      /** Sets the mode (ADD_MODE, MOVE_MODE or MOVE_SESSION_MODE).
65       * @param pMode The mode.
66       */    
67      public void setMode(int pMode) {
68          mode = pMode;
69          switch (mode) {
70              case ADD_MODE:
71                  lblSessionSelection.setText(java.util.ResourceBundle.getBundle("res/MediBundle").getString("Choose_a_directory_to_put_your_data"));
72                  break;
73              case MOVE_MODE:
74                  lblSessionSelection.setText(java.util.ResourceBundle.getBundle("res/MediBundle").getString("Choose_a_directory_to_move_your_data_to"));
75                  break;
76              case MOVE_SESSION_MODE:
77                  lblSessionSelection.setText(java.util.ResourceBundle.getBundle("res/MediBundle").getString("Choose_a_place_to_move_your_directory_to"));
78                  break;
79          }
80      }
81      
82      /** Shows this frame.
83       */    
84      public void show() {
85          try {
86              initTreeSession();
87          }
88          catch (DbException e) {
89              System.out.println(e.getMessage());
90          }
91          super.show();
92      }
93      
94      /** Sets the data array.
95       * @param pDataIDs The array of data IDs.
96       */    
97      public void setDataIDs(Long[] pDataIDs) {
98          dataIDs = pDataIDs;
99      }
100     
101     /** Sets the origin session.
102      * @param pVolumeID The origin volume ID.
103      * @param pSessionID The origin session ID.
104      */    
105     public void setOriginSession(Integer pVolumeID, Integer pSessionID) {
106         volumeID = pVolumeID;
107         sessionID = pSessionID;
108     }
109     
110     /** This method is called from within the constructor to
111      * initialize the form.
112      * WARNING: Do NOT modify this code. The content of this method is
113      * always regenerated by the Form Editor.
114      */
115     private void initComponents() {//GEN-BEGIN:initComponents
116         scpSession = new javax.swing.JScrollPane();
117         treeSession = new javax.swing.JTree();
118         panButtons = new javax.swing.JPanel();
119         butSelect = new javax.swing.JButton();
120         butCancel = new javax.swing.JButton();
121         lblSessionSelection = new javax.swing.JLabel();
122 
123         addWindowListener(new java.awt.event.WindowAdapter() {
124             public void windowClosing(java.awt.event.WindowEvent evt) {
125                 closeDialog(evt);
126             }
127         });
128 
129         scpSession.setPreferredSize(new java.awt.Dimension(400, 363));
130         treeSession.setToolTipText(java.util.ResourceBundle.getBundle("res/MediBundle").getString("Volume/session_tree"));
131         treeSession.setShowsRootHandles(true);
132         treeSession.addTreeSelectionListener(new javax.swing.event.TreeSelectionListener() {
133             public void valueChanged(javax.swing.event.TreeSelectionEvent evt) {
134                 treeSessionValueChanged(evt);
135             }
136         });
137 
138         treeSession.addTreeWillExpandListener(new javax.swing.event.TreeWillExpandListener() {
139             public void treeWillExpand(javax.swing.event.TreeExpansionEvent evt)
140             throws javax.swing.tree.ExpandVetoException {
141                 treeSessionTreeWillExpand(evt);
142             }
143             public void treeWillCollapse(javax.swing.event.TreeExpansionEvent evt)
144             throws javax.swing.tree.ExpandVetoException {
145                 treeSessionTreeWillCollapse(evt);
146             }
147         });
148 
149         scpSession.setViewportView(treeSession);
150 
151         getContentPane().add(scpSession, java.awt.BorderLayout.CENTER);
152 
153         butSelect.setText(java.util.ResourceBundle.getBundle("res/MediBundle").getString("Select"));
154         butSelect.setToolTipText(java.util.ResourceBundle.getBundle("res/MediBundle").getString("Choose_the_selected_session/volume"));
155         butSelect.addActionListener(new java.awt.event.ActionListener() {
156             public void actionPerformed(java.awt.event.ActionEvent evt) {
157                 butSelectActionPerformed(evt);
158             }
159         });
160 
161         panButtons.add(butSelect);
162 
163         butCancel.setText(java.util.ResourceBundle.getBundle("res/MediBundle").getString("Cancel"));
164         butCancel.setToolTipText(java.util.ResourceBundle.getBundle("res/MediBundle").getString("Cancel_the_operation"));
165         butCancel.addActionListener(new java.awt.event.ActionListener() {
166             public void actionPerformed(java.awt.event.ActionEvent evt) {
167                 butCancelActionPerformed(evt);
168             }
169         });
170 
171         panButtons.add(butCancel);
172 
173         getContentPane().add(panButtons, java.awt.BorderLayout.SOUTH);
174 
175         lblSessionSelection.setText(java.util.ResourceBundle.getBundle("res/MediBundle").getString("This_label_will_change"));
176         lblSessionSelection.setPreferredSize(new java.awt.Dimension(157, 20));
177         getContentPane().add(lblSessionSelection, java.awt.BorderLayout.NORTH);
178 
179         pack();
180     }//GEN-END:initComponents
181 
182     private void butCancelActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_butCancelActionPerformed
183         // Add your handling code here:
184         setVisible(false);
185         dispose();
186     }//GEN-LAST:event_butCancelActionPerformed
187 
188     private void butSelectActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_butSelectActionPerformed
189         // Add your handling code here:
190         int result;
191         
192         result = javax.swing.JOptionPane.showConfirmDialog(null,
193             java.util.ResourceBundle.getBundle("res/MediBundle").getString("Are_you_sure_to_select_this_session?"),
194             java.util.ResourceBundle.getBundle("res/MediBundle").getString("Confirm_session_selection"), javax.swing.JOptionPane.YES_NO_OPTION,
195             javax.swing.JOptionPane.QUESTION_MESSAGE);
196         
197         if (result != javax.swing.JOptionPane.YES_OPTION)
198             return;
199         
200         try {
201             switch (mode) {
202                 case ADD_MODE:
203                     addLinkData2Session();
204                     break;
205                 case MOVE_MODE:
206                     moveLinkData2Session();
207                     break;
208                 case MOVE_SESSION_MODE:
209                     prv.moveLinkSessionToFatherSession(volumeID, sessionID,
210                         newVolumeID, newSessionID);
211                     break;
212                 default:
213             }
214         }
215         catch (DbException e) {
216             System.out.println(e.getMessage());
217         }
218         setVisible(false);
219         dispose();
220     }//GEN-LAST:event_butSelectActionPerformed
221 
222     private void treeSessionValueChanged(javax.swing.event.TreeSelectionEvent evt) {//GEN-FIRST:event_treeSessionValueChanged
223         // Add your handling code here:
224         int index;
225         MediTreeNode node;
226         javax.swing.tree.TreePath tempPath;
227         Object[] tempIDs;
228         
229         tempPath = evt.getPath();
230         index = tempPath.getPathCount();
231         node = (MediTreeNode) tempPath.getLastPathComponent();
232         tempIDs = node.getID();
233         if (index >= 4) {
234             tempIDs = node.getID();
235             newVolumeID = (Integer) tempIDs[0];
236             newSessionID = (Integer) tempIDs[1];
237             if (mode == MOVE_SESSION_MODE && volumeID.equals(newVolumeID) &&
238                 sessionID.equals(newSessionID))
239                     butSelect.setEnabled(false);
240             else
241                 butSelect.setEnabled(true);
242         }
243         else if (index == 3 && mode == MOVE_SESSION_MODE) {
244             tempIDs = node.getID();
245             newVolumeID = (Integer) tempIDs[0];
246             newSessionID = null;
247             butSelect.setEnabled(true);
248         }
249         else {
250             volumeID = null;
251             sessionID = null;
252             butSelect.setEnabled(false);
253         }
254     }//GEN-LAST:event_treeSessionValueChanged
255 
256     private void treeSessionTreeWillCollapse(javax.swing.event.TreeExpansionEvent evt) throws javax.swing.tree.ExpandVetoException {//GEN-FIRST:event_treeSessionTreeWillCollapse
257         // Add your handling code here:
258        ((MediTreeNode) evt.getPath().getLastPathComponent()).setExpanded(false);
259     }//GEN-LAST:event_treeSessionTreeWillCollapse
260 
261     private void treeSessionTreeWillExpand(javax.swing.event.TreeExpansionEvent evt) throws javax.swing.tree.ExpandVetoException {//GEN-FIRST:event_treeSessionTreeWillExpand
262         // Add your handling code here:
263         Object[] tempIDs;
264         String type;
265         int pathCount;
266         MediTreeNode tempNode;
267         javax.swing.tree.TreePath tempPath;
268         DbIterator rowIt;
269         
270         try {
271             tempPath = evt.getPath();
272             pathCount = tempPath.getPathCount();
273             tempNode = (MediTreeNode) tempPath.getLastPathComponent();
274             
275             if (tempNode.isExpanded())
276                 return;
277             
278             switch (pathCount) {
279                 case 2:
280                     tempIDs = tempNode.getID();
281                     rowIt = prv.getVolumes((Integer) tempIDs[0], null).iterator();
282                     TreeUtils.fillTree(tempNode, rowIt, volumeIndexes, volumeIDIndexes, java.util.ResourceBundle.getBundle("res/MediBundle").getString("Volume"), ": ", true);
283                     ((javax.swing.tree.DefaultTreeModel) treeSession.getModel()).reload();
284                     break;
285                 case 3:
286                     tempIDs = tempNode.getID();
287                     rowIt = prv.getSessions((Integer) tempIDs[0], null, null).iterator();
288                     TreeUtils.fillTree(tempNode, rowIt, sessionIndexes, sessionIDIndexes, java.util.ResourceBundle.getBundle("res/MediBundle").getString("Session"), ": ", true);
289                     ((javax.swing.tree.DefaultTreeModel) treeSession.getModel()).reload();
290                     break;
291                 default:
292                     if (pathCount >= 4) {
293                         tempIDs = tempNode.getID();
294                         rowIt = prv.getSessions((Integer) tempIDs[0], null, (Integer) tempIDs[1]).iterator();
295                         TreeUtils.fillTree(tempNode, rowIt, sessionIndexes, sessionIDIndexes, java.util.ResourceBundle.getBundle("res/MediBundle").getString("Session"), ": ", true);
296                         ((javax.swing.tree.DefaultTreeModel) treeSession.getModel()).reload();
297                     }
298             }
299             tempNode.setExpanded(true);
300         }
301         catch (DbException e) {
302             System.out.println(e.getMessage());
303         }
304     }//GEN-LAST:event_treeSessionTreeWillExpand
305 
306     /** Closes the dialog */
307     private void closeDialog(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_closeDialog
308         setVisible(false);
309         dispose();
310     }//GEN-LAST:event_closeDialog
311 
312     // Variables declaration - do not modify//GEN-BEGIN:variables
313     private javax.swing.JLabel lblSessionSelection;
314     private javax.swing.JPanel panButtons;
315     private javax.swing.JButton butSelect;
316     private javax.swing.JButton butCancel;
317     private javax.swing.JTree treeSession;
318     private javax.swing.JScrollPane scpSession;
319     // End of variables declaration//GEN-END:variables
320 
321     private Provider prv;
322     private int mode;
323     private Long[] dataIDs;
324     private Integer volumeID, sessionID;
325     private Integer newVolumeID, newSessionID;
326     private MediTreeNode containerRoot;
327     private DbTable containerRes;
328 
329     private int[] containerIndexes = {0, 1};
330     private int[] containerIDIndexes = {0};
331     private int[] volumeIndexes = {0, 2};
332     private int[] volumeIDIndexes = {0};
333     private int[] sessionIndexes = {1, 4};
334     private int[] sessionIDIndexes = {0, 1};
335     
336     private void initTreeSession() throws DbException {
337         DbIterator rowIt;
338         MediTreeNode tempRoot;
339         
340         containerRoot = new MediTreeNode(java.util.ResourceBundle.getBundle("res/MediBundle").getString("Containers"));
341         ((javax.swing.tree.DefaultTreeModel) treeSession.getModel()).setRoot(containerRoot);
342         containerRes = prv.getContainers(null);
343         rowIt = containerRes.iterator();
344         tempRoot = (MediTreeNode)
345             ((javax.swing.tree.DefaultTreeModel) treeSession.getModel()).getRoot();
346         TreeUtils.fillTree(tempRoot, rowIt, containerIndexes, containerIDIndexes, java.util.ResourceBundle.getBundle("res/MediBundle").getString("Container"), ": ", true);
347     }
348     
349     private void addLinkData2Session() throws DbException {
350         int i, numValues;
351         MediTreeNode tempNode;
352         
353         numValues = dataIDs.length;
354         for (i=0; i < numValues; i++) {
355             prv.linkDataToSession(dataIDs[i], newVolumeID, newSessionID);
356         }
357     }
358     
359     private void moveLinkData2Session() throws DbException {
360         int i, numValues;
361         MediTreeNode tempNode;
362         
363         numValues = dataIDs.length;
364         for (i=0; i < numValues; i++) {
365             prv.moveLinkDataToSession(dataIDs[i], volumeID, sessionID, 
366                 newVolumeID, newSessionID);
367         }
368     }
369 }