View Javadoc

1   package org.lcsim.plugin.browser;
2   
3   import java.util.ArrayList;
4   import java.util.List;
5   import javax.swing.table.AbstractTableModel;
6   import org.lcsim.event.EventHeader;
7   import org.lcsim.geometry.IDDecoder;
8   
9   /**
10   *
11   * @author tonyj
12   */
13  public abstract class CellIDTableModel extends AbstractTableModel implements EventBrowserTableModel 
14  {
15      private List hits;
16      private final String[] defaultColumns;
17      private List<String> columns;
18      private IDDecoder decoder;   
19      
20     /** Creates a new instance of CellIDTableModel */
21     protected CellIDTableModel(String[] defaultColumns)
22     {
23        this.defaultColumns = defaultColumns;
24     }
25  
26  
27     public void setData(EventHeader.LCMetaData meta, List hits)
28     {
29        this.hits = hits;
30        List oldColumns = columns;
31        columns = new ArrayList<String>();
32        
33        try
34        {
35           this.decoder = meta.getIDDecoder();
36           for (int i = 0; i < decoder.getFieldCount(); i++)columns.add("id: " + decoder.getIDDescription().fieldName(i));
37           for (int i = 1; i < defaultColumns.length; i++)columns.add(defaultColumns[i]);
38        } catch (Exception x)
39        {
40           System.err.println("Error accessing decoder "+x);
41           decoder = null;
42           for (int i = 0; i < defaultColumns.length; i++)columns.add(defaultColumns[i]);
43        }
44        
45        if (columns.equals(oldColumns)) fireTableDataChanged();
46        else super.fireTableStructureChanged();
47     }
48  
49  
50     public int getColumnCount()
51     {
52         return columns.size();
53     }
54  
55  
56     public String getColumnName(int index)
57     {
58         return columns.get(index);
59     }
60  
61  
62     public int getRowCount()
63     {
64         return hits == null ? 0 : hits.size();
65     }
66  
67  
68     protected int getFieldCount()
69     {
70        return decoder == null ? 1 : decoder.getFieldCount();
71     }
72     
73     protected IDDecoder getIDDecoder()
74     {
75        return decoder;
76     }
77     
78     protected Object getHit(int row)
79     {
80        return hits.get(row);
81     }
82  }
83