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

Quick Search    Search Deep

Source code: cor/gui/clp/JspmClassListPanel.java


1   /*-----------------------------------------------------------------------------------------------------*/
2   /*                                                                                                     */
3   /*  Copyright (C)                                                                                      */ 
4   /*                                                                                                     */
5   /*  This program is free software; you can redistribute it and/or modify it under the terms of the GNU */
6   /*  General Public License as published by the Free Software Foundation; either version 2 of the       */
7   /*  License, or (at your option) any later version.                                                    */
8   /*                                                                                                     */
9   /*  This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;          */
10  /*  without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR                   */
11  /*  PURPOSE. See the GNU General Public License for more details.                                      */
12  /*                                                                                                     */
13  /*  You should have received a copy of the GNU General Public License along with this program; if      */
14  /*  not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA           */
15  /*  02111-1307 USA                                                                                     */
16  /*                                                                                                     */
17  /*-----------------------------------------------------------------------------------------------------*/
18  /*                                                                                                     */
19  /*  $Author: strand01 $ $Revision: 1.3 $ $Date: 2001/12/20 14:23:02 $                                  */
20  /*                                                                                                     */
21  /*-----------------------------------------------------------------------------------------------------*/
22  
23  package cor.gui.clp;
24  
25  // Java classes
26  import java.awt.*;
27  import java.awt.event.*;
28  import java.util.*;
29  
30  // Swing classes
31  import javax.swing.JTable;
32  import javax.swing.JLabel;
33  import javax.swing.JPanel;
34  import javax.swing.JScrollPane;
35  import javax.swing.tree.DefaultMutableTreeNode;
36  import javax.swing.table.DefaultTableModel;
37  import javax.swing.border.BevelBorder;
38  
39  // Jspm classes
40  import com.jdk.*;
41  import cor.gui.*;
42  
43  /**
44   * Class level property list panel
45   *
46   * This panel is divided into two parts. The upper part shows the message records from the JSPM event
47   * management database table and the lower part the actions corresponding to a selected message in the
48   * upper table.
49   *
50   * By selecting a row in either lists a dialog box will be displayed in which the user can change the
51   * values for the selected message or action.
52   *
53   * @author Steve Randall (strand012001@yahoo.com)
54   * @version 0.0.11
55   * @date 01/12/2001
56   */
57  public class JspmClassListPanel extends JPanel implements MouseListener
58  {
59      /**
60       * Jspm Core database connection.
61       */
62      private JspmCoreDb jspmCoreDb = null;
63  
64      /**
65       * Message table
66       */
67      private JTable clpTable;
68      
69      /**
70       * Action table
71       */
72      private JTable ilpTable;
73      
74      /**
75       * Message table model
76       */
77      private DefaultTableModel clpTableModel = null;
78      
79      /**
80       * Action table model
81       */
82      private DefaultTableModel ilpTableModel = null;
83      
84      /**
85       * Jspm Table renderer
86       */
87      private JspmTableCellRenderer tableRenderer = null;
88      
89      /**
90       * Table panel
91       */
92      private JspmVSplitPane clpSplitPanel = null;
93  
94      /**
95       * ILP panel
96       */
97      private JPanel clpMainPanel = null;
98  
99      /**
100      * ILP panel
101      */
102     private JPanel ilpMainPanel = null;
103 
104     /**
105      * Table font
106      */
107     private Font font = new Font( "Ariel", Font.PLAIN, 11 );
108 
109     /**
110      * Class level property label
111      */
112     private JLabel clpLabel = null;
113 
114     /**
115      * Class level property label
116      */
117     private JLabel ilpLabel = null;
118 
119     /**
120      * Constructor
121      */
122     public JspmClassListPanel( JspmCore jspmCore ) 
123     {
124         jspmCoreDb = jspmCore.getDbConnection();
125 
126   setLayout(new BorderLayout());
127         setPreferredSize( new Dimension( 700, JspmConstants.JGE.maxY ) );
128             
129         JspmVSplitPane splitPane = new JspmVSplitPane( createClpPanel(), createIlpPanel() );
130 
131   add( splitPane );
132     }
133     
134     /**
135      * Creates the message list
136      */
137     private JPanel createClpPanel() 
138     {
139   final String[] names = { "Name", "Group", "Length", "Type", "Key", "Required", "Null", "Default" };
140   final Object[][] data = {};
141   
142   // Create a model of the data.
143   clpTableModel = new DefaultTableModel(data, (Object[])names) {
144     
145     // All cells are not editable
146     public boolean isCellEditable(int row, int col) {
147         return false;
148     }
149       };
150   
151         JspmTableSorter sorter = new JspmTableSorter( clpTableModel );
152         clpTable = new JTable( sorter );
153   clpTable.setFont( font );
154   clpTable.addMouseListener( this );
155         clpTable.getTableHeader().setFont( font );
156         sorter.addMouseListenerToHeaderInTable(clpTable);
157 
158         tableRenderer = new JspmTableCellRenderer( names.length, font ); 
159   tableRenderer.setHorizontalAlignment( JLabel.RIGHT );
160   tableRenderer.setHeader( names );
161         clpTable.setDefaultRenderer( clpTable.getColumnClass(0), tableRenderer );
162   
163         // Define the scollpanel for the table        
164   JScrollPane clpTablePanel = new JScrollPane( clpTable );
165         clpTablePanel.setMinimumSize( new Dimension( clpTablePanel.getWidth(), 200 ) );
166 
167         clpMainPanel = new JPanel();
168         clpMainPanel.setLayout( new BorderLayout() );
169 
170         clpLabel = new JLabel( " Class Level Property Definitions" );
171         clpLabel.setFont( font );
172 
173         clpMainPanel.add( clpLabel, BorderLayout.NORTH );
174         clpMainPanel.add( clpTablePanel, BorderLayout.CENTER );
175 
176   return clpMainPanel;
177     }
178 
179     /**
180      * Creates the action list
181      */
182     private JPanel createIlpPanel() 
183     {
184   final String[] names = { "Name", "Group", "Length", "Type", "Key", "Required", "Null", "Default" };
185   final Object[][] data = {};
186   
187   // Create a model of the data.
188   ilpTableModel = new DefaultTableModel( data, (Object[])names) {
189     
190     // All cells are not editable
191     public boolean isCellEditable(int row, int col) {
192         return false;
193     }
194       };
195   
196         JspmTableSorter sorter = new JspmTableSorter( ilpTableModel );
197 
198         ilpTable = new JTable( sorter );
199   ilpTable.setFont( font );
200         ilpTable.getTableHeader().setFont( font );
201   ilpTable.addMouseListener( this );
202         sorter.addMouseListenerToHeaderInTable(ilpTable);
203 
204   tableRenderer.setHeader( names );
205   tableRenderer.setHorizontalAlignment( JLabel.RIGHT );
206   ilpTable.setDefaultRenderer( ilpTable.getColumnClass(0), tableRenderer );
207 
208         // Define the scollpanel for the table        
209   JScrollPane ilpTablePanel = new JScrollPane( ilpTable );
210         ilpTablePanel.setMinimumSize( new Dimension( ilpTable.getWidth(), 200) );
211 
212         ilpMainPanel = new JPanel( new BorderLayout() );
213 
214         ilpLabel = new JLabel( " Instance Level Property Definitions" );
215         ilpLabel.setFont( font );
216 
217         ilpMainPanel.add( ilpLabel, BorderLayout.NORTH );
218         ilpMainPanel.add( ilpTablePanel, BorderLayout.CENTER );
219 
220         return ilpMainPanel;
221     }
222 
223     /**
224      * Clears the clp table
225      */
226     private void clearClpTable() 
227     {
228   int rows = 0;
229   
230   if((rows = clpTableModel.getRowCount()) > 0) {
231       for(int i = 0; i < rows; i++)
232     clpTableModel.removeRow(0);
233   }
234     }
235 
236     /**
237      * Clears the ilp table
238      */
239     private void clearIlpTable() 
240     {
241   int rows = 0;
242   
243   if((rows = ilpTableModel.getRowCount()) > 0) {
244       for(int i = 0; i < rows; i++)
245     ilpTableModel.removeRow(0);
246   }
247     }
248         
249     /**
250      * Adds a row to the object info table
251      */
252     public void addClp( Vector clps ) 
253     {    
254         for( int i = 0; i < clps.size(); i++ ) {
255 
256             Object row[] = new Object[8];
257             row[0] = ( ( JspmClpDefinition ) clps.elementAt(i) ).clpName;
258             row[1] = ( ( JspmClpDefinition ) clps.elementAt(i) ).clpGroup;
259             row[2] = ""+( ( JspmClpDefinition ) clps.elementAt(i) ).clpLength;
260             row[3] = ""+( ( JspmClpDefinition ) clps.elementAt(i) ).clpType;
261             row[4] = ""+( ( JspmClpDefinition ) clps.elementAt(i) ).isKey;
262             row[5] = ""+( ( JspmClpDefinition ) clps.elementAt(i) ).isRequired;
263             row[6] = ""+( ( JspmClpDefinition ) clps.elementAt(i) ).isNull;
264             row[7] = ( ( JspmClpDefinition ) clps.elementAt(i) ).value;
265             clpTableModel.addRow((Object[]) row);
266         }
267 
268         clpMainPanel.remove( clpLabel );
269 
270         clpLabel = new JLabel( " Class Level Property Definitions:"+clps.size() );
271         clpLabel.setFont( font );
272         clpMainPanel.add( clpLabel, BorderLayout.NORTH );
273         clpMainPanel.validate();
274     }
275     
276     /**
277      * Adds a row to the object info table
278      */
279     public void addIlp( Vector ilps ) 
280     {
281         for( int i = 0; i < ilps.size(); i++ ) {
282 
283             Object row[] = new Object[8];
284             row[0] = ( ( JspmIlpDefinition ) ilps.elementAt(i) ).ilpName;
285             row[1] = ( ( JspmIlpDefinition ) ilps.elementAt(i) ).ilpGroup;
286             row[2] = ""+( ( JspmIlpDefinition ) ilps.elementAt(i) ).ilpLength;
287             row[3] = ""+( ( JspmIlpDefinition ) ilps.elementAt(i) ).ilpType;
288             row[4] = ""+( ( JspmIlpDefinition ) ilps.elementAt(i) ).isKey;
289             row[5] = ""+( ( JspmIlpDefinition ) ilps.elementAt(i) ).isRequired;
290             row[6] = ""+( ( JspmIlpDefinition ) ilps.elementAt(i) ).isNull;
291             row[7] = ( ( JspmIlpDefinition ) ilps.elementAt(i) ).defaultValue;
292             ilpTableModel.addRow((Object[]) row);
293 
294         }
295 
296         ilpMainPanel.remove( ilpLabel );
297 
298         ilpLabel = new JLabel( " Instance Level Property Definitions:"+ilps.size() );
299         ilpLabel.setFont( font );
300         ilpMainPanel.add( ilpLabel, BorderLayout.NORTH );
301         ilpMainPanel.validate();
302     }
303     
304     /**
305      * Removes all objects from the table.
306      */
307     public void removeAllObjects() {
308 
309   clearClpTable();
310   clearIlpTable();
311 
312     }    
313 
314     /**
315      * Process single/double click mouse events.
316      *
317      * This method will process single and double clicks on one of the rows in either the message
318      * or the action table. The processing is as follows:
319      *
320      * - single click on message table will display the actions belonging to this message
321      *   in the action list.
322      * - double click on a message table row will display the message dialog box.
323      * - single click on a action in the action list won't do anything.
324      * - double click on a action in the action list will just select (hilite) the corresponding 
325      *   action.
326      *
327      * @param event (MouseEvent) mouse event.
328      */
329     public void mouseClicked( MouseEvent event )
330     {
331   if( event.getClickCount() == 1 && event.getComponent() == clpTable ) {
332       
333       clearIlpTable();
334       int row = clpTable.getSelectedRow();
335       int msgid = ((Integer)clpTableModel.getValueAt( row, 0 )).intValue();
336 //      addIlp( jspmCoreDb.getIlp() );
337 
338   } else if( event.getClickCount() == 2 && event.getComponent() == clpTable ) {
339 
340       int row = clpTable.getSelectedRow();
341       Integer imsgid = (Integer)clpTableModel.getValueAt( row, 0 );
342       int msgid = imsgid.intValue();
343 
344 //      JspmEvtMessageDialog msgDialog = new JspmEvtMessageDialog( msgid, jspmCoreDb );
345 
346   } else if( event.getClickCount() == 2 && event.getComponent() == ilpTable ) {
347 
348       int row = ilpTable.getSelectedRow();
349       int actid = ((Integer)ilpTableModel.getValueAt( row, 0 )).intValue();
350 
351 //      JspmEvtActionDialog actDialog = new JspmEvtActionDialog( actid, jspmCoreDb );
352 
353   }
354     }
355 
356     /**
357      * Process mouse pressed events.
358      *
359      * Nothing has to be done here.
360      *
361      * @param event (MouseEvent) mouse event.
362      */
363     public void mousePressed( MouseEvent event ) {}
364 
365     /**
366      * Process mouse released events.
367      *
368      * Nothing has to be done here.
369      *
370      * @param event (MouseEvent) mouse event.
371      */
372     public void mouseReleased( MouseEvent event ) {}
373 
374     /**
375      * Process mouse entered events.
376      *
377      * Nothing has to be done here.
378      *
379      * @param event (MouseEvent) mouse event.
380      */
381     public void mouseEntered( MouseEvent event ) {}
382 
383     /**
384      * Process mouse exited events.
385      *
386      * Nothing has to be done here.
387      *
388      * @param event (MouseEvent) mouse event.
389      */
390     public void mouseExited( MouseEvent event ) {}
391 }