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.incident;
016
017 import javax.swing.JTable;
018 import javax.swing.ListSelectionModel;
019
020 import org.tastybug.bugwerk.blueprint.event.IncidentChangeListener;
021 import org.tastybug.bugwerk.blueprint.model.Incident;
022
023 /**
024 * This table displays the content of a given <code>Incident</code>, including the attachments.
025 * <br>
026 * The table is not editable but displayes incident property/attachment changes.
027 *
028 * <hr>
029 * Copyright 2006 Philipp Bartsch.<br>
030 * <a href="http://www.tastybug.com">www.tastybug.com</a><br>
031 * <hr>
032 * Created on Feb 9, 2006<br>
033 * @author Philipp Bartsch, philipp.bartsch{at}tastybug{dot}com</a>
034 */
035 public class IncidentTable extends JTable implements IncidentChangeListener {
036
037 /**The <code>serialVersionUID</code>*/
038 private static final long serialVersionUID = -3850895701195378195L;
039
040 private IncidentTableModel tableModel;
041 private IncidentTableRenderer tableRenderer;
042
043 /**
044 * Creates the table upon <code>incident</code>.
045 *
046 * @param _incident the incident that is to be displayed
047 */
048 public IncidentTable (Incident _incident) {
049 setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
050 tableModel = new IncidentTableModel(_incident);
051 tableRenderer = new IncidentTableRenderer();
052
053 setModel(tableModel);
054 setDefaultRenderer(String.class, tableRenderer);
055 }
056
057 /**
058 * Updates the table model, repaints the UI.
059 *
060 * @see org.tastybug.bugwerk.blueprint.event.IncidentChangeListener#performAttachementAddedEvent(org.tastybug.bugwerk.blueprint.event.IncidentChangeListener.AttachmentEvent)
061 */
062 public void performAttachementAddedEvent(AttachmentEvent arg0) {
063 tableModel.update(arg0.getIncident());
064 updateUI();
065 }
066
067 /**
068 * Updates the table model, repaints the UI.
069 *
070 * @see org.tastybug.bugwerk.blueprint.event.IncidentChangeListener#performAttachmentRemovedEvent(org.tastybug.bugwerk.blueprint.event.IncidentChangeListener.AttachmentEvent)
071 */
072 public void performAttachmentRemovedEvent(AttachmentEvent arg0) {
073 tableModel.update(arg0.getIncident());
074 updateUI();
075 }
076
077 /**
078 * Updates the table model, repaints the UI.
079 *
080 * @see org.tastybug.bugwerk.blueprint.event.IncidentChangeListener#performIncidentChangedEvent(org.tastybug.bugwerk.blueprint.event.IncidentChangeListener.IncidentChangeEvent)
081 */
082 public void performIncidentChangedEvent(IncidentChangeEvent arg0) {
083 tableModel.update(arg0.getIncident());
084 updateUI();
085 }
086 }