1 package net.sf.jhylafax; 2 3 import static net.sf.jhylafax.JHylaFAX.i18n; 4 import java.util.ArrayList; 5 import java.util.Date; 6 import java.util.List; 7 import javax.swing.table.AbstractTableModel; 8 import javax.swing.table.TableModel; 9 import net.sf.jhylafax.JobHelper.FileStat; 10 import net.sf.jhylafax.fax.ReceivedFax; 11 import org.xnap.commons.gui.Builder; 12 import org.xnap.commons.gui.util.DoubleClickListener; 13 14 public class ReceiveQueuePanel extends AbstractQueuePanel { 15 16 private ViewAction viewAction; 17 private SaveAction saveAction; 18 private DeleteAction deleteAction; 19 private FaxTableModel faxTableModel; 20 21 public ReceiveQueuePanel(String queueName) { 22 super(queueName); 23 24 viewAction = new ViewAction(); 25 saveAction = new SaveAction(); 26 deleteAction = new DeleteAction(); 27 28 getButtonPanel().add(Builder.createButton(viewAction)); 29 getButtonPanel().add(Builder.createButton(saveAction)); 30 getButtonPanel().add(Builder.createButton(deleteAction)); 31 32 getTablePopupMenu().add(Builder.createMenuItem(viewAction)); 33 getTablePopupMenu().add(Builder.createMenuItem(saveAction)); 34 getTablePopupMenu().add(Builder.createMenuItem(deleteAction)); 35 36 getTable().addMouseListener(new DoubleClickListener(viewAction)); 37 38 updateLabels(); 39 updateActions(); 40 } 41 42 @Override 43 public FileStat getSelectedFile() 44 { 45 int row = getSelectedRow(); 46 if (row == -1) { 47 return null; 48 } 49 else { 50 ReceivedFax doc = faxTableModel.getDocument(row); 51 return new FileStat(doc.getFilename(), doc.getFilesize()); 52 } 53 } 54 55 @Override 56 protected TableModel getTableModel() 57 { 58 if (faxTableModel == null) { 59 faxTableModel = new FaxTableModel(); 60 } 61 return faxTableModel; 62 } 63 64 @Override 65 protected void initializeTableLayout() { 66 getTableLayout().setColumnProperties(0, "sender", 150); 67 getTableLayout().setColumnProperties(1, "pages", 40); 68 getTableLayout().setColumnProperties(2, "time", 40); 69 getTableLayout().setColumnProperties(3, "filename", 100); 70 getTableLayout().setColumnProperties(4, "filesize", 40); 71 getTableLayout().setColumnProperties(5, "owner", 40); 72 getTableLayout().setColumnProperties(6, "resolution", 40); 73 getTableLayout().setColumnProperties(7, "singallingRate", 40); 74 getTableLayout().setColumnProperties(8, "receiving", 40); 75 getTableLayout().setColumnProperties(9, "error", 100); 76 } 77 78 public void setData(List<ReceivedFax> data) 79 { 80 faxTableModel.setData(data); 81 } 82 83 @Override 84 public void updateActions() { 85 FileStat file = getSelectedFile(); 86 viewAction.setEnabled(file != null); 87 saveAction.setEnabled(file != null); 88 deleteAction.setEnabled(file != null); 89 } 90 91 @Override 92 public void updateLabels() { 93 super.updateLabels(); 94 95 viewAction.updateLabels(); 96 saveAction.updateLabels(); 97 deleteAction.updateLabels(); 98 99 getTableLayout().setColumnNames(new String[] { 100 i18n.tr("Sender"), 101 i18n.tr("Pages"), 102 i18n.tr("Time"), 103 i18n.tr("Filename"), 104 i18n.tr("Filesize"), 105 i18n.tr("Owner"), 106 i18n.tr("Resolution"), 107 i18n.tr("Signalling Rate"), 108 i18n.tr("Receiving"), 109 i18n.tr("Error"),}); 110 } 111 112 private static class FaxTableModel extends AbstractTableModel { 113 114 private static final Class[] columnClasses= { 115 String.class, 116 Integer.class, 117 Date.class, 118 String.class, 119 Long.class, 120 String.class, 121 Integer.class, 122 Integer.class, 123 Boolean.class, 124 String.class, 125 }; 126 127 private List<ReceivedFax> data = new ArrayList<ReceivedFax>(0); 128 129 public FaxTableModel() { 130 } 131 132 public Class<?> getColumnClass(int column) { 133 return columnClasses[column]; 134 } 135 136 public int getColumnCount() { 137 return columnClasses.length; 138 } 139 140 public ReceivedFax getDocument(int row) { 141 return data.get(row); 142 } 143 144 public int getRowCount() 145 { 146 return data.size(); 147 } 148 149 public Object getValueAt(int row, int column) 150 { 151 ReceivedFax fax = data.get(row); 152 switch (column) { 153 case 0: 154 return fax.getSender(); 155 case 1: 156 return fax.getPageCount(); 157 case 2: 158 return fax.getReceivedTime(); 159 case 3: 160 return fax.getFilename(); 161 case 4: 162 return fax.getFilesize(); 163 case 5: 164 return fax.getOwner(); 165 case 6: 166 return fax.getResolution(); 167 case 7: 168 return fax.getSignallingRate(); 169 case 8: 170 return fax.isReceiving(); 171 case 9: 172 return fax.getLastError(); 173 default: 174 return null; 175 } 176 } 177 178 public void setData(List<ReceivedFax> data) 179 { 180 this.data = data; 181 fireTableDataChanged(); 182 } 183 184 } 185 186 }