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.Document;
11 import org.xnap.commons.gui.Builder;
12 import org.xnap.commons.gui.util.DoubleClickListener;
13
14 public class DocumentQueuePanel extends AbstractQueuePanel {
15
16 private ViewAction viewAction;
17 private SaveAction saveAction;
18 private DeleteAction deleteAction;
19 private DocTableModel docTableModel;
20
21 public DocumentQueuePanel(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 Document doc = docTableModel.getDocument(row);
51 return new FileStat(doc.getFilename(), doc.getFilesize());
52 }
53 }
54
55 @Override
56 protected TableModel getTableModel()
57 {
58 if (docTableModel == null) {
59 docTableModel = new DocTableModel();
60 }
61 return docTableModel;
62 }
63
64 @Override
65 protected void initializeTableLayout() {
66 getTableLayout().setColumnProperties(0, "permissions", 40);
67 getTableLayout().setColumnProperties(1, "owner", 40);
68 getTableLayout().setColumnProperties(2, "created", 80);
69 getTableLayout().setColumnProperties(3, "modified", 80);
70 getTableLayout().setColumnProperties(4, "accessed", 80);
71 getTableLayout().setColumnProperties(5, "filename", 120);
72 getTableLayout().setColumnProperties(6, "filesize", 20);
73 }
74
75 public void setData(List<Document> data)
76 {
77 docTableModel.setData(data);
78 }
79
80 @Override
81 public void updateActions() {
82 FileStat file = getSelectedFile();
83 viewAction.setEnabled(file != null);
84 saveAction.setEnabled(file != null);
85 deleteAction.setEnabled(file != null);
86 }
87
88 @Override
89 public void updateLabels() {
90 super.updateLabels();
91
92 viewAction.updateLabels();
93 saveAction.updateLabels();
94 deleteAction.updateLabels();
95
96 getTableLayout().setColumnNames(new String[] {
97 i18n.tr("Permissions"),
98 i18n.tr("Owner"),
99 i18n.tr("Created"),
100 i18n.tr("Modified"),
101 i18n.tr("Accessed"),
102 i18n.tr("Name"),
103 i18n.tr("Size"), });
104 }
105
106 private static class DocTableModel extends AbstractTableModel {
107
108 private static final Class[] columnClasses= {
109 Integer.class,
110 String.class,
111 Date.class,
112 Date.class,
113 Date.class,
114 String.class,
115 Long.class,
116 };
117
118 private List<Document> data = new ArrayList<Document>(0);
119
120 public DocTableModel() {
121 }
122
123 public Class<?> getColumnClass(int column) {
124 return columnClasses[column];
125 }
126
127 public int getColumnCount() {
128 return columnClasses.length;
129 }
130
131 public Document getDocument(int row) {
132 return data.get(row);
133 }
134
135 public int getRowCount()
136 {
137 return data.size();
138 }
139
140 public Object getValueAt(int row, int column)
141 {
142 Document doc = data.get(row);
143 switch (column) {
144 case 0:
145 return doc.getPermissions();
146 case 1:
147 return doc.getOwner();
148 case 2:
149 return doc.getCreationTime();
150 case 3:
151 return doc.getLastModificationTime();
152 case 4:
153 return doc.getLastAccessTime();
154 case 5:
155 return doc.getFilename();
156 case 6:
157 return doc.getFilesize();
158 default:
159 return null;
160 }
161 }
162
163 public void setData(List<Document> data)
164 {
165 this.data = data;
166 fireTableDataChanged();
167 }
168
169 }
170
171 }