001 /*
002 * This program is free software; you can redistribute it and/or modify
003 * it under the terms of the GNU General Public License as published by
004 * the Free Software Foundation; version 2 of the License.
005 *
006 * This program is distributed in the hope that it will be useful,
007 * but WITHOUT ANY WARRANTY; without even the implied warranty of
008 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
009 * GNU General Public License for more details.
010 *
011 * You should have received a copy of the GNU General Public License along
012 * with this program; if not, write to the Free Software Foundation, Inc.,
013 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
014 */
015 package org.tastybug.bugwerk.bugtrail.widget.ticket;
016
017 import javax.swing.table.AbstractTableModel;
018
019 import org.tastybug.bugwerk.blueprint.model.Ticket;
020
021 /**
022 * Models the content of <code>TicketTable</code>.
023 * <br>
024 *
025 * <hr>
026 * Copyright 2006 Philipp Bartsch.<br>
027 * <a href="http://www.tastybug.com">www.tastybug.com</a><br>
028 * <hr>
029 * Created on Feb 8, 2006<br>
030 * @author Philipp Bartsch, philipp.bartsch{at}tastybug{dot}com</a>
031 */
032 public class TicketTableModel extends AbstractTableModel {
033
034
035 /**The <code>serialVersionUID</code>*/
036 private static final long serialVersionUID = -3951294211435738836L;
037
038 private Ticket ticket;
039 private String[] keys;
040
041 /**
042 * Creates the model upon the given ticket.
043 *
044 * @param _ticket the ticket that is to be displayed
045 */
046 protected TicketTableModel (final Ticket _ticket) {
047 update(_ticket);
048 }
049
050 /**
051 * Re-reads the ticket, as it has changed.
052 *
053 * @param changedTicket the changed ticket
054 */
055 public void update (final Ticket changedTicket) {
056 this.ticket = changedTicket;
057 if (ticket == null) {
058 keys = new String[0];
059 } else {
060 keys = (String[]) ticket.getAsMap().keySet().toArray(new String[0]);
061 }
062 }
063
064 /**
065 * Returns an empty string, no column headers used.
066 *
067 * @see javax.swing.table.AbstractTableModel#getColumnName(int)
068 */
069 public String getColumnName(int col) {
070 return "";
071 }
072
073 /**
074 * Returns 2;
075 *
076 * @see javax.swing.table.TableModel#getColumnCount()
077 */
078 public int getColumnCount() {
079 return 2;
080 }
081
082 /**
083 * Returns <code>false</code>, the table is not editable.
084 *
085 * @return <code>false</code>
086 */
087 public boolean isEditable () {
088 return false;
089 }
090
091 /**
092 * Returns the number of present base properties.
093 *
094 * @see javax.swing.table.TableModel#getRowCount()
095 */
096 public int getRowCount() {
097 return keys.length;
098 }
099
100 /**
101 * Returns a table cell value.
102 *
103 * @see javax.swing.table.TableModel#getValueAt(int, int)
104 */
105 public Object getValueAt(int row, int col) {
106 if (col == 0) {
107 return keys[row];
108 } else if (keys.length == 0 || row > keys.length) {
109 return "";
110 } else {
111 return ticket.getAsMap().get(keys[row]);
112 }
113 }
114
115 /**
116 * Returns <code>String.class</code>.
117 *
118 * @see javax.swing.table.AbstractTableModel#getColumnClass(int)
119 */
120 public Class getColumnClass(int c) {
121 return String.class;
122 }
123 }