lcsim/src/org/lcsim/plugin/browser
diff -u -r1.2 -r1.3
--- SimTrackerHitTableModel.java 17 Mar 2005 20:12:25 -0000 1.2
+++ SimTrackerHitTableModel.java 25 Jul 2005 22:04:54 -0000 1.3
@@ -5,6 +5,9 @@
import java.util.List;
import org.lcsim.event.EventHeader.LCMetaData;
import org.lcsim.event.SimTrackerHit;
+import org.lcsim.geometry.TrackerIDDecoder;
+import org.lcsim.event.EventHeader.LCMetaData;
+import java.util.ArrayList;
/**
*
@@ -13,44 +16,65 @@
class SimTrackerHitTableModel extends AbstractTableModel implements EventBrowserTableModel
{
private List hits;
- private static final String[] columns = {"cellID","x","y","z","dedx","time"};
+ private static final String[] defaultColumns = {"x","y","z","dedx","time"};
+ private List<String> columns;
+ private TrackerIDDecoder decoder;
+ private LCMetaData meta;
public boolean canDisplay(Class c)
{
return SimTrackerHit.class.isAssignableFrom(c);
}
+
public void setData(LCMetaData meta, List hits)
{
this.hits = hits;
- fireTableDataChanged();
+ this.meta = meta;
+ this.decoder = (TrackerIDDecoder) meta.getIDDecoder();
+
+ List oldColumns = columns;
+ columns = new ArrayList<String>();
+ for (int i=0; i<decoder.getFieldCount(); i++) columns.add(decoder.getFieldName(i));
+ for (int i=0; i<defaultColumns.length; i++) columns.add(defaultColumns[i]);
+ if (columns.equals(oldColumns)) fireTableDataChanged();
+ else super.fireTableStructureChanged();
}
+
public int getRowCount()
{
return hits == null ? 0 : hits.size();
}
+
public int getColumnCount()
{
- return columns.length;
+ return columns.size();
}
+
public String getColumnName(int index)
{
- return columns[index];
+ return columns.get(index);
}
- public Class getColumnClass(int column)
+
+ public Class getColumnClass(int row)
{
- return column == 0 ? String.class : Double.class;
+ return row < decoder.getFieldCount() ? Integer.class : Double.class;
}
+
public Object getValueAt(int row, int column)
{
SimTrackerHit hit = (SimTrackerHit) hits.get(row);
- switch (column)
+ decoder.setID(hit.getCellID());
+ if ( column < decoder.getFieldCount())
{
- case 0: return Integer.toHexString(hit.getCellID());
- case 1: return hit.getPoint()[0];
- case 2: return hit.getPoint()[1];
- case 3: return hit.getPoint()[2];
- case 4: return hit.getdEdx();
- case 5: return hit.getTime();
+ return decoder.getValue(column);
+ }
+ else switch (column-decoder.getFieldCount() )
+ {
+ case 0: return hit.getPoint()[0];
+ case 1: return hit.getPoint()[1];
+ case 2: return hit.getPoint()[2];
+ case 3: return hit.getdEdx();
+ case 4: return hit.getTime();
default: return " ";
}
}