Print

Print


Commit in lcsim/src/org/lcsim/plugin/browser on MAIN
CollectionTable.java+57-211.2 -> 1.3
LCSimEventBrowser.java+1-31.5 -> 1.6
+58-24
2 modified files
Slightly better error handling in event browser

lcsim/src/org/lcsim/plugin/browser
CollectionTable.java 1.2 -> 1.3
diff -u -r1.2 -r1.3
--- CollectionTable.java	1 Jul 2005 22:05:59 -0000	1.2
+++ CollectionTable.java	21 Jul 2005 00:30:50 -0000	1.3
@@ -2,10 +2,14 @@
 
 import hep.physics.vec.Hep3Vector;
 import java.awt.BorderLayout;
+import java.awt.CardLayout;
 import java.awt.Component;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
 import java.lang.reflect.Array;
 import java.util.Collection;
 import java.util.List;
+import javax.swing.JButton;
 import javax.swing.JPanel;
 import javax.swing.JScrollPane;
 import javax.swing.JTable;
@@ -14,6 +18,7 @@
 import javax.swing.table.DefaultTableCellRenderer;
 import javax.swing.table.DefaultTableModel;
 import javax.swing.table.TableModel;
+import org.freehep.application.Application;
 import org.freehep.application.studio.Studio;
 import org.freehep.util.ScientificFormat;
 import org.lcsim.event.EventHeader;
@@ -24,24 +29,32 @@
 /**
  *
  * @author tonyj
- * @version $Id: CollectionTable.java,v 1.2 2005/07/01 22:05:59 tonyj Exp $
+ * @version $Id: CollectionTable.java,v 1.3 2005/07/21 00:30:50 tonyj Exp $
  */
-public class CollectionTable extends JPanel
+class CollectionTable extends JPanel implements ActionListener
 {
    private static final String noCollection = "No Collection";
    private static final TableModel emptyTable = new DefaultTableModel();
    private JTextArea m_tableLabel = new JTextArea(noCollection);
    private JTable m_table = new JTable();
+   private JButton errorButton = new JButton("An error occured, click for details...");
+   private CardLayout cardLayout = new CardLayout();
+   private JPanel panel = new JPanel(cardLayout);
    private EventHeader m_lce;
    private Studio m_app;
+   private Throwable error;
    
-   public CollectionTable(Studio app)
+   CollectionTable(Studio app)
    {
       super(new BorderLayout());
       m_app = app;
       m_tableLabel.setEditable(false);
       add(m_tableLabel,BorderLayout.NORTH);
-      add(new JScrollPane(m_table));
+      panel.add(new JScrollPane(m_table),"first");
+      panel.add(errorButton,"second");
+      add(panel,BorderLayout.CENTER);
+      
+      errorButton.addActionListener(this);
       
       // Add some smart renderers
       
@@ -60,10 +73,17 @@
       m_table.setModel(emptyTable);
       m_tableLabel.setText(noCollection) ;
    }
-   void setCollection(List coll)
+   void setCollection(Object collection)
    {
-      if (coll != null && m_lce != null)
+      if (collection instanceof Throwable)
+      {
+         m_table.setModel(emptyTable);
+         error = (Throwable) collection;
+         cardLayout.last(panel);
+      }
+      else if (collection != null && collection instanceof List && m_lce != null)
       {
+         List coll = (List) collection;
          LCMetaData meta = m_lce.getMetaData(coll);
          Class type = meta.getType();
          int flag = meta.getFlags();
@@ -74,32 +94,48 @@
          
          m_tableLabel.setText( tableText ) ;
          
-         Template template = new Template(EventBrowserTableModel.class);
-         Result result = m_app.getLookup().lookup(template);
-         Collection<EventBrowserTableModel> models = (Collection<EventBrowserTableModel>) result.allInstances();
-         
-         boolean ok = false;
-         for (EventBrowserTableModel model : models)
+         try
          {
-            if (model.canDisplay(type))
-            {
-               model.setData(meta,coll);
-               m_table.setModel(model);
-               ok = true;
-               break;
-            }
+             Template template = new Template(EventBrowserTableModel.class);
+             Result result = m_app.getLookup().lookup(template);
+             Collection<EventBrowserTableModel> models = (Collection<EventBrowserTableModel>) result.allInstances();
+
+             boolean ok = false;
+             for (EventBrowserTableModel model : models)
+             {
+                if (model.canDisplay(type))
+                {
+                   model.setData(meta,coll);
+                   m_table.setModel(model);
+                   ok = true;
+                   break;
+                }
+             }
+             if (!ok)
+             {
+                m_table.setModel(emptyTable);
+
+             }
+             cardLayout.first(panel);
          }
-         if (!ok)
+         catch (Exception x)
          {
-            m_table.setModel(emptyTable);
+             error = x;
+             cardLayout.last(panel);
          }
       }
       else
       {
          m_table.setModel(emptyTable);
          m_tableLabel.setText(noCollection) ;
+         cardLayout.first(panel);
       }
    }
+
+   public void actionPerformed(ActionEvent actionEvent)
+   {
+      Application.error(this,"Error displaying collection", error);
+   }
    private static class ScientificRenderer extends DefaultTableCellRenderer
    {
       private ScientificFormat format = new ScientificFormat();

lcsim/src/org/lcsim/plugin/browser
LCSimEventBrowser.java 1.5 -> 1.6
diff -u -r1.5 -r1.6
--- LCSimEventBrowser.java	30 Jun 2005 23:40:22 -0000	1.5
+++ LCSimEventBrowser.java	21 Jul 2005 00:30:50 -0000	1.6
@@ -216,9 +216,7 @@
       }
       catch (Exception x)
       {
-         // TODO: Fixme
-         m_table.setCollection(null);
-         x.printStackTrace();
+         m_table.setCollection(x);
       }
       m_commands.setChanged();
    }
CVSspam 0.2.8