View Javadoc

1   /*
2    *  File: TourenTableModel.java 
3    *  Copyright (c) 2004-2007  Peter Kliem (Peter.Kliem@jaret.de)
4    *  A commercial license is available, see http://www.jaret.de.
5    *
6    *  This program is free software; you can redistribute it and/or modify
7    *  it under the terms of the GNU General Public License as published by
8    *  the Free Software Foundation; either version 2 of the License, or
9    *  (at your option) any later version.
10   *
11   *  This program is distributed in the hope that it will be useful,
12   *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13   *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14   *  GNU General Public License for more details.
15   *
16   *  You should have received a copy of the GNU General Public License
17   *  along with this program; if not, write to the Free Software
18   *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19   */
20  package de.jaret.examples.timebars.touren;
21  
22  import java.util.ArrayList;
23  import java.util.Collections;
24  import java.util.List;
25  
26  import javax.swing.table.AbstractTableModel;
27  
28  import de.jaret.util.ui.timebars.TimeBarRowFilter;
29  import de.jaret.util.ui.timebars.TimeBarRowSorter;
30  import de.jaret.util.ui.timebars.model.TimeBarModel;
31  import de.jaret.util.ui.timebars.model.TimeBarRow;
32  
33  /***
34   * @author Peter Kliem
35   * @version $Id: TourenTableModel.java 160 2007-01-02 22:02:40Z olk $
36   */
37  public class TourenTableModel extends AbstractTableModel {
38      TimeBarModel _timeBarModel;
39      TimeBarRowFilter _rowFilter;
40      TimeBarRowSorter _rowSorter;
41      List _rowList = new ArrayList();
42  
43      public TourenTableModel(TimeBarModel tbm) {
44          _timeBarModel = tbm;
45          updateRowList();
46      }
47  
48      /*
49       * (non-Javadoc)
50       * 
51       * @see javax.swing.table.TableModel#getColumnCount()
52       */
53      public int getColumnCount() {
54          return 4;
55      }
56  
57      /*
58       * (non-Javadoc)
59       * 
60       * @see javax.swing.table.TableModel#getValueAt(int, int)
61       */
62      public Object getValueAt(int rowIndex, int columnIndex) {
63          Tour t = (Tour) getRow(rowIndex);
64          switch (columnIndex) {
65          case 0:
66              return t.getRowHeader().toString();
67          case 1:
68              return new Integer(t.getIntervals().size());
69          case 2:
70              return t.getMinDate().toDisplayString();
71          case 3:
72              return t.getMaxDate().toDisplayString();
73          default:
74              return "Fehler";
75          }
76      }
77  
78      /*
79       * (non-Javadoc)
80       * 
81       * @see javax.swing.table.AbstractTableModel#getColumnName(int)
82       */
83      public String getColumnName(int column) {
84          switch (column) {
85          case 0:
86              return "header";
87          case 1:
88              return "#Elements";
89          case 2:
90              return "min";
91          case 3:
92              return "max";
93          default:
94              return "Fehler";
95          }
96      }
97  
98      public void updateRowList() {
99          int oldRowCount = _rowList != null ? _rowList.size() : 0;
100         _rowList = new ArrayList();
101         // copy filtered if filter is set
102         for (int r = 0; r < _timeBarModel.getRowCount(); r++) {
103             if (_rowFilter != null) {
104                 // filter set
105                 if (_rowFilter.isInResult(_timeBarModel.getRow(r))) {
106                     _rowList.add(_timeBarModel.getRow(r));
107                 }
108             } else {
109                 _rowList.add(_timeBarModel.getRow(r));
110             }
111         }
112         // sorter set? -> sort the row list
113         if (_rowSorter != null) {
114             Collections.sort(_rowList, _rowSorter);
115         }
116     }
117 
118     /***
119      * get a timebar row from the filterd/sorted list
120      * 
121      * @param idx
122      * @return
123      */
124     public TimeBarRow getRow(int idx) {
125         return (TimeBarRow) _rowList.get(idx);
126     }
127 
128     /*
129      * (non-Javadoc)
130      * 
131      * @see javax.swing.table.TableModel#getRowCount()
132      */
133     public int getRowCount() {
134         return _rowList.size();
135     }
136 
137     public void setTimeBarRowFilter(TimeBarRowFilter rowFilter) {
138         _rowFilter = rowFilter;
139         updateRowList();
140         fireTableDataChanged();
141     }
142 
143     public void setTimeBarRowSorter(TimeBarRowSorter rowSorter) {
144         _rowSorter = rowSorter;
145         updateRowList();
146         fireTableDataChanged();
147     }
148 
149 }