Main Page | Packages | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | Related Pages

ISPanel.java

00001 package TestGUI;
00002 
00003 import java.io.*;
00004 import java.util.*;
00005 import javax.swing.*;
00006 import javax.swing.tree.*;
00007 import javax.swing.text.*;
00008 import is.*;
00009 import Sct.Serializable;
00010 import Sct.IS.*;
00011 import GuiComponents.Inspector.InspectorPanel;
00012 import GuiComponents.plotter.*;
00013 import GuiComponents.System.*;
00014 import GuiComponents.Console.*;
00015 
00016 /*
00017  * ISPanel.java
00018  *
00019  * Created on 25 April 2003, 13:41
00020  */
00021 
00026 public class ISPanel extends javax.swing.JPanel implements InfoListener {
00027     
00029     public ISPanel(JTextArea taMessages) {
00030         this.taMessages = taMessages;
00031         si = SystemInterface.getInstance();
00032         is = ISInterface.getInstance();
00033         initComponents();
00034         myInitComponents();
00035     }
00036     
00037     void close() {
00038         unsubscribeAll();
00039     }
00040     
00041     private void myInitComponents() {
00042         refreshISTree(false);
00043     }
00044     
00050     private void initComponents() {//GEN-BEGIN:initComponents
00051         java.awt.GridBagConstraints gridBagConstraints;
00052         
00053         lList = new javax.swing.JLabel();
00054         bDelete = new javax.swing.JButton();
00055         bISRefresh = new javax.swing.JButton();
00056         jScrollPane2 = new javax.swing.JScrollPane();
00057         jPanel2 = new javax.swing.JPanel();
00058         trISServers = new javax.swing.JTree();
00059         trISServers.getPreferredScrollableViewportSize();
00060         
00061         jSeparator1 = new javax.swing.JSeparator();
00062         bISData = new javax.swing.JButton();
00063         bExternal = new javax.swing.JButton();
00064         jLabel2 = new javax.swing.JLabel();
00065         bInternal = new javax.swing.JButton();
00066         bDeleteAll = new javax.swing.JButton();
00067         bIsdump = new javax.swing.JButton();
00068         
00069         setLayout(new java.awt.GridBagLayout());
00070         
00071         lList.setText("List of available IS servers and objects");
00072         gridBagConstraints = new java.awt.GridBagConstraints();
00073         gridBagConstraints.gridx = 1;
00074         gridBagConstraints.gridy = 0;
00075         gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
00076         gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
00077         add(lList, gridBagConstraints);
00078         
00079         bDelete.setText("Delete");
00080         bDelete.addActionListener(new java.awt.event.ActionListener() {
00081             public void actionPerformed(java.awt.event.ActionEvent evt) {
00082                 bDeleteActionPerformed(evt);
00083             }
00084         });
00085         
00086         gridBagConstraints = new java.awt.GridBagConstraints();
00087         gridBagConstraints.gridx = 0;
00088         gridBagConstraints.gridy = 1;
00089         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
00090         gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
00091         add(bDelete, gridBagConstraints);
00092         
00093         bISRefresh.setText("Refresh");
00094         bISRefresh.addActionListener(new java.awt.event.ActionListener() {
00095             public void actionPerformed(java.awt.event.ActionEvent evt) {
00096                 bISRefreshActionPerformed(evt);
00097             }
00098         });
00099         
00100         gridBagConstraints = new java.awt.GridBagConstraints();
00101         gridBagConstraints.gridx = 0;
00102         gridBagConstraints.gridy = 2;
00103         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
00104         gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
00105         add(bISRefresh, gridBagConstraints);
00106         
00107         jScrollPane2.setMinimumSize(new java.awt.Dimension(200, 100));
00108         jPanel2.setLayout(new javax.swing.BoxLayout(jPanel2, javax.swing.BoxLayout.Y_AXIS));
00109         
00110         jPanel2.setMinimumSize(new java.awt.Dimension(200, 200));
00111         trISServers.setBorder(new javax.swing.border.EtchedBorder());
00112         trISServers.setMaximumSize(new java.awt.Dimension(32767, 32767));
00113         trISServers.setAutoscrolls(true);
00114         trISServers.addKeyListener(new java.awt.event.KeyAdapter() {
00115             public void keyReleased(java.awt.event.KeyEvent evt) {
00116                 trISServersKeyReleased(evt);
00117             }
00118         });
00119         trISServers.addMouseListener(new java.awt.event.MouseAdapter() {
00120             public void mouseClicked(java.awt.event.MouseEvent evt) {
00121                 trISServersMouseClicked(evt);
00122             }
00123         });
00124         
00125         jPanel2.add(trISServers);
00126         
00127         jScrollPane2.setViewportView(jPanel2);
00128         
00129         gridBagConstraints = new java.awt.GridBagConstraints();
00130         gridBagConstraints.gridx = 1;
00131         gridBagConstraints.gridy = 1;
00132         gridBagConstraints.gridheight = 12;
00133         gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
00134         gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
00135         gridBagConstraints.weightx = 1.0;
00136         gridBagConstraints.weighty = 1.0;
00137         add(jScrollPane2, gridBagConstraints);
00138         
00139         gridBagConstraints = new java.awt.GridBagConstraints();
00140         gridBagConstraints.gridx = 0;
00141         gridBagConstraints.gridy = 4;
00142         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
00143         add(jSeparator1, gridBagConstraints);
00144         
00145         bISData.setText("IS Data");
00146         bISData.addActionListener(new java.awt.event.ActionListener() {
00147             public void actionPerformed(java.awt.event.ActionEvent evt) {
00148                 bISDataActionPerformed(evt);
00149             }
00150         });
00151         
00152         gridBagConstraints = new java.awt.GridBagConstraints();
00153         gridBagConstraints.gridx = 0;
00154         gridBagConstraints.gridy = 6;
00155         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
00156         gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
00157         add(bISData, gridBagConstraints);
00158         
00159         bExternal.setText("External Graphics");
00160         bExternal.addActionListener(new java.awt.event.ActionListener() {
00161             public void actionPerformed(java.awt.event.ActionEvent evt) {
00162                 bExternalActionPerformed(evt);
00163             }
00164         });
00165         
00166         gridBagConstraints = new java.awt.GridBagConstraints();
00167         gridBagConstraints.gridx = 0;
00168         gridBagConstraints.gridy = 9;
00169         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
00170         gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
00171         add(bExternal, gridBagConstraints);
00172         
00173         jLabel2.setText("View...");
00174         gridBagConstraints = new java.awt.GridBagConstraints();
00175         gridBagConstraints.gridx = 0;
00176         gridBagConstraints.gridy = 5;
00177         add(jLabel2, gridBagConstraints);
00178         
00179         bInternal.setText("Internal Graphics");
00180         bInternal.addActionListener(new java.awt.event.ActionListener() {
00181             public void actionPerformed(java.awt.event.ActionEvent evt) {
00182                 bInternalActionPerformed(evt);
00183             }
00184         });
00185         
00186         gridBagConstraints = new java.awt.GridBagConstraints();
00187         gridBagConstraints.gridx = 0;
00188         gridBagConstraints.gridy = 8;
00189         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
00190         gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
00191         add(bInternal, gridBagConstraints);
00192         
00193         bDeleteAll.setText("Delete All");
00194         bDeleteAll.addActionListener(new java.awt.event.ActionListener() {
00195             public void actionPerformed(java.awt.event.ActionEvent evt) {
00196                 bDeleteAllActionPerformed(evt);
00197             }
00198         });
00199         
00200         gridBagConstraints = new java.awt.GridBagConstraints();
00201         gridBagConstraints.gridx = 0;
00202         gridBagConstraints.gridy = 3;
00203         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
00204         gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
00205         add(bDeleteAll, gridBagConstraints);
00206         
00207         bIsdump.setText("IS Dump");
00208         bIsdump.addActionListener(new java.awt.event.ActionListener() {
00209             public void actionPerformed(java.awt.event.ActionEvent evt) {
00210                 bIsdumpActionPerformed(evt);
00211             }
00212         });
00213         
00214         gridBagConstraints = new java.awt.GridBagConstraints();
00215         gridBagConstraints.gridx = 0;
00216         gridBagConstraints.gridy = 7;
00217         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
00218         gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
00219         add(bIsdump, gridBagConstraints);
00220         
00221     }//GEN-END:initComponents
00222 
00223     private void bIsdumpActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bIsdumpActionPerformed
00224         TreePath[] paths = trISServers.getSelectionPaths();        
00225         for (int i=0; i<paths.length; i++) {           
00226             dumpISData(paths[i].getLastPathComponent().toString());            
00227         }   
00228     }//GEN-LAST:event_bIsdumpActionPerformed
00229 
00230     private void bDeleteAllActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bDeleteAllActionPerformed
00231         ServerIterator sit = new ServerIterator(si.getPartition());
00232         while (sit.hasMoreElements()) {            
00233             InfoList il = new InfoList(si.getPartition(), sit.nextServerName());
00234             for (int i=0; i<il.size(); ++i) {
00235                 is.remove(il.getInfo(i).getName());
00236             }
00237         }
00238     }//GEN-LAST:event_bDeleteAllActionPerformed
00239     
00240     
00241     private void bInternalActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bInternalActionPerformed
00242         TreePath[] paths = trISServers.getSelectionPaths();        
00243         for (int i=0; i<paths.length; i++) {           
00244             plotISData(paths[i].getLastPathComponent().toString());            
00245         }                
00246     }//GEN-LAST:event_bInternalActionPerformed
00247 
00248     private void bExternalActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bExternalActionPerformed
00249         TreePath[] paths = trISServers.getSelectionPaths();        
00250         for (int i=0; i<paths.length; i++) {           
00251             launchExternalViewer(paths[i].getLastPathComponent().toString());            
00252         }
00253     }//GEN-LAST:event_bExternalActionPerformed
00254 
00255     private void bISDataActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bISDataActionPerformed
00256         TreePath[] paths = trISServers.getSelectionPaths();        
00257         for (int i=0; i<paths.length; i++) {           
00258             viewISData(paths[i].getLastPathComponent().toString());            
00259         }
00260     }//GEN-LAST:event_bISDataActionPerformed
00261 
00262     private void trISServersKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_trISServersKeyReleased
00263         switch (evt.getKeyCode()) {
00264             case java.awt.event.KeyEvent.VK_DELETE: //Remove selected objects
00265                 deleteSelectedInfos();
00266                 break;
00267             default: //Do nothing
00268         }
00269     }//GEN-LAST:event_trISServersKeyReleased
00270 
00271     private void trISServersMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_trISServersMouseClicked
00272         int selRow = trISServers.getRowForLocation(evt.getX(), evt.getY());
00273         TreePath selPath = trISServers.getPathForLocation(evt.getX(), evt.getY());
00274         if(selRow != -1) {
00275             if(evt.getClickCount() == 2) {
00276                 String name = selPath.getLastPathComponent().toString();
00277                 //histPlotter.plotHistogram(hist, "Canvas 1");
00278                 viewISData(name);
00279             }
00280         }
00281     }//GEN-LAST:event_trISServersMouseClicked
00282 
00283     private void bCreateTrimRangeTestActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bCreateTrimRangeTestActionPerformed
00284 
00285     }//GEN-LAST:event_bCreateTrimRangeTestActionPerformed
00286     
00287     private void bISRefreshActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bISRefreshActionPerformed
00288         refreshISTree(true);
00289     }//GEN-LAST:event_bISRefreshActionPerformed
00290 
00291     private void bDeleteActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bDeleteActionPerformed
00292         deleteSelectedInfos();
00293     }//GEN-LAST:event_bDeleteActionPerformed
00294 
00295     private void plotISData(String name) {
00296         if (plotterManager == null)
00297             initPlotterManager();
00298         
00299         try {
00300             Serializable ob = ObjectManagerIS.getInstance().readObject(name);
00301             plotterManager.plot(ob);
00302             
00303         } catch (java.io.IOException ioe) {
00304             taMessages.append("Error reading object from IS: " + ioe + "  " +ioe.getMessage() +"\n");
00305         }
00306         taMessages.append("IS Object: " + name + " plotted\n");      
00307     }
00308     
00309     private void initPlotterManager() {
00310         plotterManager = PlotterManager.defaultManager();
00311         JFrame frame = new JFrame("Plots");
00312         frame.getContentPane().add(plotterManager.getPlotPanel());
00313         frame.pack();
00314         frame.show();
00315     }
00316     
00317     private void viewISData(String name) {
00318         try {
00319             Serializable ob = ObjectManagerIS.getInstance().readObject(name);
00320             InspectorPanel p = new InspectorPanel(name, ob);
00321 
00322             JFrame frame2 = new JFrame("TreeTable");                    
00323             frame2.getContentPane().add(new JScrollPane(p.treeTable));
00324             frame2.pack();
00325             frame2.show();
00326 
00327         } catch (java.io.IOException ioe) {
00328             taMessages.append("Error reading object from IS: " + ioe + "  " +ioe.getMessage() +"\n");
00329         }
00330         taMessages.append("IS Object: " + name + " viewed\n");
00331     }
00332     
00333     private void dumpISData(String name) {
00334         try {
00335             AnyInfo ai = new AnyInfo();
00336             is.getRepository().getValue(name, ai);
00337             InspectorPanel p = new InspectorPanel(name, new Sct.IS.AnyInfoAdapter(ai));
00338 
00339             JFrame frame2 = new JFrame("TreeTable");                    
00340             frame2.getContentPane().add(new JScrollPane(p.treeTable));
00341             frame2.pack();
00342             frame2.show();
00343 
00344         } catch (Exception ioe) {
00345             taMessages.append("Error reading object from IS: " + ioe + "  " +ioe.getMessage() +"\n");
00346         }
00347         taMessages.append("IS Object: " + name + " dumped\n");
00348     }
00349     
00350     private void launchExternalViewer(String name) {
00351         try {
00352             ExternalProcess p = new ExternalProcess("DataDisplayer " + name);                                    
00353         } catch (Exception ioe) {
00354             System.out.println(ioe.getMessage());
00355             ioe.printStackTrace();
00356         }       
00357     }
00358 
00365     protected void refreshISTree(boolean unsubscribe) {  
00366         if (unsubscribe) unsubscribeAll();
00367         String[] servers = is.getISServers();        
00368         
00369         //Setup tree
00370         
00371         DefaultMutableTreeNode top = new DefaultMutableTreeNode("IS Servers");
00372         DefaultMutableTreeNode server;
00373         DefaultMutableTreeNode object;
00374         for (int i=0; i<servers.length; i++) {
00375             is.subscribe(servers[i], this);
00376             server = new DefaultMutableTreeNode(servers[i]);
00377             String[] objects = is.getISObjects(servers[i]);
00378             for (int j=0; j<objects.length; j++) {
00379                 object = new DefaultMutableTreeNode(objects[j]);
00380                 server.add(object);
00381             }
00382             top.add(server);
00383         }
00384         trISServers.setModel(new DefaultTreeModel(top));
00385     }
00386     
00390     protected void unsubscribeAll() {
00391         TreeModel model = trISServers.getModel();
00392         Object root = model.getRoot();
00393         for (int i=0; i<model.getChildCount(root); ++i) {            
00394             is.unsubscribe(model.getChild(root, i).toString());
00395         }
00396     }
00400     private void deleteSelectedInfos() {        
00401         TreePath[] paths = trISServers.getSelectionPaths();
00402         String object;
00403         for (int i=0; i<paths.length; i++) {
00404             object = paths[i].getLastPathComponent().toString();
00405             taMessages.append(is.remove(object) + "\n");
00406         }
00407     }
00408     
00415     public void infoCreated(InfoEvent e) {
00416        String serverName = e.getName().split("\\.")[0];
00417        DefaultMutableTreeNode server = null;
00418        for (int i=0; i<trISServers.getModel().getChildCount(trISServers.getModel().getRoot()); i++) {
00419             server = (DefaultMutableTreeNode)trISServers.getModel().getChild(trISServers.getModel().getRoot(), i);
00420             if (server.toString().equals(serverName)) { //found the appropriate server
00421                 String name = new String(e.getName());      //Copy name object
00422                 DefaultMutableTreeNode newobject = new DefaultMutableTreeNode(name);
00423 
00424                 //Handles message creation for us so thread safe
00425                 ((DefaultTreeModel)trISServers.getModel()).insertNodeInto(newobject, server, server.getChildCount());
00426                 return;
00427             }
00428         }
00429         System.err.println("Server: " + serverName + " not found");
00430     }
00431     
00435     public void infoDeleted(InfoEvent e) {        
00436         TreePath path = trISServers.getNextMatch(new String(e.getName()), 0, Position.Bias.Forward );
00437         if (path == null) {
00438             System.out.println(e.getName() + " not found in tree");
00439             return;
00440         }
00441         DefaultMutableTreeNode hist = (DefaultMutableTreeNode)path.getLastPathComponent();                
00442         
00443         //This call handles message creation for us so can be called in any thread.
00444         ((DefaultTreeModel)trISServers.getModel()).removeNodeFromParent(hist);        
00445     }
00446     
00450     public void infoUpdated(InfoEvent e) {
00451         taMessages.append(new String(e.getName()) + " has been updated\n");
00452     }
00453     
00454     // Variables declaration - do not modify//GEN-BEGIN:variables
00455     private javax.swing.JButton bDelete;
00456     private javax.swing.JButton bDeleteAll;
00457     private javax.swing.JButton bExternal;
00458     private javax.swing.JButton bISData;
00459     private javax.swing.JButton bISRefresh;
00460     private javax.swing.JButton bInternal;
00461     private javax.swing.JButton bIsdump;
00462     private javax.swing.JLabel jLabel2;
00463     private javax.swing.JPanel jPanel2;
00464     private javax.swing.JScrollPane jScrollPane2;
00465     private javax.swing.JSeparator jSeparator1;
00466     private javax.swing.JLabel lList;
00467     private javax.swing.JTree trISServers;
00468     // End of variables declaration//GEN-END:variables
00469     private SystemInterface si;
00470     private ISInterface is;
00471     private JTextArea taMessages;
00472     private PlotterManager plotterManager;
00473 }

Generated on Thu Jul 15 09:55:44 2004 for SCT DAQ/DCS Software - Java by doxygen 1.3.5