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

Quick Search    Search Deep

Source code: medi/swing/GenreManagement.java


1   /*
2    * GenreManagement_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 genre or a genre to a father
33   * genre.
34   * @author Antonio Petrelli
35   * @version 0.0.1
36   */
37  public class GenreManagement extends javax.swing.JDialog {
38  
39      /** Adds an array of data to a genre.
40       */    
41      public final int ADD_MODE = 1;
42      /** Moves an array of data from a genre to another genre.
43       */    
44      public final int MOVE_MODE = 2;
45      /** Moves a genre from a point to another.
46       */    
47      public final int MOVE_GENRE_MODE = 3;
48      
49      /** Creates new form GenreManagement
50       * @param parent The parent frame.
51       * @param modal The modal flag.
52       */
53      public GenreManagement(java.awt.Frame parent, boolean modal) {
54          super(parent, modal);
55          initComponents();
56          butSelect.setEnabled(false);
57      }
58  
59      /** Sets the provider to use.
60       * @param pPrv The provider to use.
61       */    
62      public void setProvider(Provider pPrv) {
63          prv = pPrv;
64      }
65  
66      /** Sets the mode (ADD_MODE, MOVE_MODE or MOVE_GENRE_MDOE).
67       * @param pMode The mode.
68       */    
69      public void setMode(int pMode) {
70          mode = pMode;
71          switch (mode) {
72              case ADD_MODE:
73                  lblGenreSelection.setText(java.util.ResourceBundle.getBundle("res/MediBundle").getString("Choose_a_genre_to_put_your_data"));
74                  break;
75              case MOVE_MODE:
76                  lblGenreSelection.setText(java.util.ResourceBundle.getBundle("res/MediBundle").getString("Choose_a_genre_to_move_your_data_to"));
77                  break;
78              case MOVE_GENRE_MODE:
79                  lblGenreSelection.setText(java.util.ResourceBundle.getBundle("res/MediBundle").getString("Choose_a_parent_genre_to_move_your_genre_to"));
80          }
81      }
82      
83      /** Displays this frame.
84       */    
85      public void show() {
86          try {
87              initTreeGenre();
88          }
89          catch (DbException e) {
90              System.out.println(e.getMessage());
91          }
92          super.show();
93      }
94      
95      /** Sets the data array.
96       * @param pDataIDs The array of data IDs.
97       */    
98      public void setDataIDs(Long[] pDataIDs) {
99          dataIDs = pDataIDs;
100     }
101     
102     /** Sets the origin genre.
103      * @param pGenreID The origin genre ID.
104      */    
105     public void setOriginGenre(Integer pGenreID) {
106         genreID = pGenreID;
107     }
108     
109     /** This method is called from within the constructor to
110      * initialize the form.
111      * WARNING: Do NOT modify this code. The content of this method is
112      * always regenerated by the Form Editor.
113      */
114     private void initComponents() {//GEN-BEGIN:initComponents
115         lblGenreSelection = new javax.swing.JLabel();
116         scpGenre = new javax.swing.JScrollPane();
117         treeGenre = new javax.swing.JTree();
118         butButtons = new javax.swing.JPanel();
119         butSelect = new javax.swing.JButton();
120         butCancel = new javax.swing.JButton();
121 
122         addWindowListener(new java.awt.event.WindowAdapter() {
123             public void windowClosing(java.awt.event.WindowEvent evt) {
124                 closeDialog(evt);
125             }
126         });
127 
128         lblGenreSelection.setText(java.util.ResourceBundle.getBundle("res/MediBundle").getString("This_label_will_change"));
129         lblGenreSelection.setPreferredSize(new java.awt.Dimension(157, 20));
130         getContentPane().add(lblGenreSelection, java.awt.BorderLayout.NORTH);
131 
132         scpGenre.setPreferredSize(new java.awt.Dimension(400, 363));
133         treeGenre.setToolTipText(java.util.ResourceBundle.getBundle("res/MediBundle").getString("Genres_tree"));
134         treeGenre.setShowsRootHandles(true);
135         treeGenre.addTreeSelectionListener(new javax.swing.event.TreeSelectionListener() {
136             public void valueChanged(javax.swing.event.TreeSelectionEvent evt) {
137                 treeGenreValueChanged(evt);
138             }
139         });
140 
141         treeGenre.addTreeWillExpandListener(new javax.swing.event.TreeWillExpandListener() {
142             public void treeWillExpand(javax.swing.event.TreeExpansionEvent evt)
143             throws javax.swing.tree.ExpandVetoException {
144                 treeGenreTreeWillExpand(evt);
145             }
146             public void treeWillCollapse(javax.swing.event.TreeExpansionEvent evt)
147             throws javax.swing.tree.ExpandVetoException {
148                 treeGenreTreeWillCollapse(evt);
149             }
150         });
151 
152         scpGenre.setViewportView(treeGenre);
153 
154         getContentPane().add(scpGenre, java.awt.BorderLayout.CENTER);
155 
156         butSelect.setText(java.util.ResourceBundle.getBundle("res/MediBundle").getString("Select"));
157         butSelect.setToolTipText(java.util.ResourceBundle.getBundle("res/MediBundle").getString("Choose_the_selected_genre"));
158         butSelect.addActionListener(new java.awt.event.ActionListener() {
159             public void actionPerformed(java.awt.event.ActionEvent evt) {
160                 butSelectActionPerformed(evt);
161             }
162         });
163 
164         butButtons.add(butSelect);
165 
166         butCancel.setText(java.util.ResourceBundle.getBundle("res/MediBundle").getString("Cancel"));
167         butCancel.setToolTipText(java.util.ResourceBundle.getBundle("res/MediBundle").getString("Cancel_the_operation"));
168         butCancel.addActionListener(new java.awt.event.ActionListener() {
169             public void actionPerformed(java.awt.event.ActionEvent evt) {
170                 butCancelActionPerformed(evt);
171             }
172         });
173 
174         butButtons.add(butCancel);
175 
176         getContentPane().add(butButtons, java.awt.BorderLayout.SOUTH);
177 
178         pack();
179     }//GEN-END:initComponents
180 
181     private void butCancelActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_butCancelActionPerformed
182         // Add your handling code here:
183         setVisible(false);
184         dispose();
185     }//GEN-LAST:event_butCancelActionPerformed
186 
187     private void butSelectActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_butSelectActionPerformed
188         // Add your handling code here:
189         int result;
190         
191         result = javax.swing.JOptionPane.showConfirmDialog(null,
192             java.util.ResourceBundle.getBundle("res/MediBundle").getString("Are_you_sure_to_select_this_genre?"),
193             java.util.ResourceBundle.getBundle("res/MediBundle").getString("Confirm_genre_selection"), javax.swing.JOptionPane.YES_NO_OPTION,
194             javax.swing.JOptionPane.QUESTION_MESSAGE);
195         
196         if (result != javax.swing.JOptionPane.YES_OPTION)
197             return;
198         
199         try {
200             switch (mode) {
201                 case ADD_MODE:
202                     addLinkData2Genre();
203                     break;
204                 case MOVE_MODE:
205                     moveLinkData2Genre();
206                     break;
207                 case MOVE_GENRE_MODE:
208                     prv.moveLinkParentGenre(genreID, newGenreID);
209                 default:
210             }
211         }
212         catch (DbException e) {
213             System.out.println(e.getMessage());
214         }
215         setVisible(false);
216         dispose();
217     }//GEN-LAST:event_butSelectActionPerformed
218 
219     private void treeGenreValueChanged(javax.swing.event.TreeSelectionEvent evt) {//GEN-FIRST:event_treeGenreValueChanged
220         // Add your handling code here:
221         int index;
222         MediTreeNode node;
223         javax.swing.tree.TreePath tempPath;
224         Object[] tempIDs;
225         
226         tempPath = evt.getPath();
227         index = tempPath.getPathCount();
228         node = (MediTreeNode) tempPath.getLastPathComponent();
229         tempIDs = node.getID();
230         if (index >= 2) {
231             tempIDs = node.getID();
232             newGenreID = (Integer) tempIDs[0];
233             if (mode == MOVE_GENRE_MODE && genreID.equals(newGenreID))
234                 butSelect.setEnabled(false);
235             else
236                 butSelect.setEnabled(true);
237         }
238         else if (mode == MOVE_GENRE_MODE) {
239             newGenreID = null;
240             butSelect.setEnabled(true);
241         }
242         else {
243             genreID = null;
244             butSelect.setEnabled(false);
245         }
246     }//GEN-LAST:event_treeGenreValueChanged
247 
248     private void treeGenreTreeWillCollapse(javax.swing.event.TreeExpansionEvent evt) throws javax.swing.tree.ExpandVetoException {//GEN-FIRST:event_treeGenreTreeWillCollapse
249         // Add your handling code here:
250        ((MediTreeNode) evt.getPath().getLastPathComponent()).setExpanded(false);
251     }//GEN-LAST:event_treeGenreTreeWillCollapse
252 
253     private void treeGenreTreeWillExpand(javax.swing.event.TreeExpansionEvent evt) throws javax.swing.tree.ExpandVetoException {//GEN-FIRST:event_treeGenreTreeWillExpand
254         // Add your handling code here:
255         Object[] tempIDs;
256         String type;
257         int pathCount;
258         MediTreeNode tempNode;
259         javax.swing.tree.TreePath tempPath;
260         DbIterator rowIt;
261         
262         try {
263             tempPath = evt.getPath();
264             pathCount = tempPath.getPathCount();
265             tempNode = (MediTreeNode) tempPath.getLastPathComponent();
266             
267             if (tempNode.isExpanded())
268                 return;
269             
270             if (pathCount >= 2) {
271                 tempIDs = tempNode.getID();
272                 rowIt = prv.getGenres(null, (Integer) tempIDs[0]).iterator();
273                 TreeUtils.fillTree(tempNode, rowIt, genreIndexes, genreIDIndexes, java.util.ResourceBundle.getBundle("res/MediBundle").getString("Genre"), ": ", true);
274             }
275             tempNode.setExpanded(true);
276         }
277         catch (DbException e) {
278             System.out.println(e.getMessage());
279         }
280     }//GEN-LAST:event_treeGenreTreeWillExpand
281 
282     /** Closes the dialog */
283     private void closeDialog(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_closeDialog
284         setVisible(false);
285         dispose();
286     }//GEN-LAST:event_closeDialog
287 
288     // Variables declaration - do not modify//GEN-BEGIN:variables
289     private javax.swing.JLabel lblGenreSelection;
290     private javax.swing.JButton butSelect;
291     private javax.swing.JButton butCancel;
292     private javax.swing.JTree treeGenre;
293     private javax.swing.JScrollPane scpGenre;
294     private javax.swing.JPanel butButtons;
295     // End of variables declaration//GEN-END:variables
296 
297     private Provider prv;
298     private int mode;
299     private Long[] dataIDs;
300     private Integer genreID;
301     private Integer newGenreID;
302     private MediTreeNode genreRoot;
303     private DbTable genreRes;
304 
305     private int[] genreIndexes = {2};
306     private int[] genreIDIndexes = {0};
307     
308     private void initTreeGenre() throws DbException {
309         DbIterator rowIt;
310         MediTreeNode tempRoot;
311         
312         genreRoot = new MediTreeNode(java.util.ResourceBundle.getBundle("res/MediBundle").getString("Genres"));
313         ((javax.swing.tree.DefaultTreeModel) treeGenre.getModel()).setRoot(genreRoot);
314         genreRes = prv.getGenres(null, null);
315         rowIt = genreRes.iterator();
316         tempRoot = (MediTreeNode)
317             ((javax.swing.tree.DefaultTreeModel) treeGenre.getModel()).getRoot();
318         TreeUtils.fillTree(tempRoot, rowIt, genreIndexes, genreIDIndexes, java.util.ResourceBundle.getBundle("res/MediBundle").getString("Genre"), ": ", true);
319     }
320     
321     private void addLinkData2Genre() throws DbException {
322         int i, numValues;
323         MediTreeNode tempNode;
324         
325         numValues = dataIDs.length;
326         for (i=0; i < numValues; i++) {
327             prv.linkDataToGenre(dataIDs[i], newGenreID);
328         }
329     }
330     
331     private void moveLinkData2Genre() throws DbException {
332         int i, numValues;
333         MediTreeNode tempNode;
334         
335         numValues = dataIDs.length;
336         for (i=0; i < numValues; i++) {
337             prv.moveLinkDataToGenre(dataIDs[i], genreID, newGenreID);
338         }
339     }
340 }