lcsim/src/org/lcsim/plugin/browser
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();