diff options
Diffstat (limited to 'src/main/ui/widgets/TemplateTableModel.java')
-rw-r--r-- | src/main/ui/widgets/TemplateTableModel.java | 105 |
1 files changed, 105 insertions, 0 deletions
diff --git a/src/main/ui/widgets/TemplateTableModel.java b/src/main/ui/widgets/TemplateTableModel.java new file mode 100644 index 0000000..da4557f --- /dev/null +++ b/src/main/ui/widgets/TemplateTableModel.java @@ -0,0 +1,105 @@ +package ui.widgets; + +import model.ca.CertificationAuthority; +import model.ca.Template; + +import javax.swing.*; +import javax.swing.table.AbstractTableModel; +import java.util.List; + +/** + * Table model that displays templates. + */ +public class TemplateTableModel extends AbstractTableModel { + /** + * Template enabled icon, same as toolbar enable icon. + */ + private static final ImageIcon ICON_ENABLED = + new ImageIcon(TemplateTableModel.class.getResource("/enable.png")); + + /** + * Template disbled icon, same as toolbar enable icon. + */ + private static final ImageIcon ICON_DISABLED = + new ImageIcon(TemplateTableModel.class.getResource("/disable.png")); + + /** + * Columns + */ + private static final String[] COLS = new String[] { + "", // Icon + "Name", + "Subject", + "Validity" + }; + + /** + * Pointer to the {@link CertificationAuthority#getTemplates()}. + */ + private List<Template> ptrData; + + /** + * EFFECTS: Set the pointer to templates + * MODIFIES: this + */ + public void setPtrData(List<Template> ptrData) { + this.ptrData = ptrData; + } + + /** + * EFFECT: Return number of rows. + * REQUIRES: column in [9, getColumnCount()) + */ + @Override + public int getRowCount() { + return ptrData == null ? 0 : ptrData.size(); + } + + /** + * EFFECT: Return number of rows. + */ + @Override + public int getColumnCount() { + return COLS.length; + } + + /** + * EFFECTS: Get column name. + */ + @Override + public String getColumnName(int column) { + return COLS[column]; + } + + /** + * EFFECTS: Return the value for a cell: + * ImageIcon (Enabled / Disabled) + * String (Name) + * String (Subject or Not Set) + * String (xx days) + * Throws {@link IllegalArgumentException} if columnIndex is not in 0 ~ 3 + * REQUIRES: rowIndex must in range. + */ + @Override + public Object getValueAt(int rowIndex, int columnIndex) { + final Template e = ptrData.get(rowIndex); + switch (columnIndex) { + case 0: return e.isEnabled() ? ICON_ENABLED : ICON_DISABLED; + case 1: return e.getName(); + case 2: return e.getSubject() == null ? "<Not Set>" : e.getSubject().toString(); + case 3: return String.format("%d days", e.getValidity()); + default: throw new IllegalArgumentException(); + } + } + + /** + * EFFECTS: Return ImageIcon for 0, String otherwise. + */ + @Override + public Class<?> getColumnClass(int columnIndex) { + switch (columnIndex) { + case 0: return ImageIcon.class; + default: return String.class; + } + } +} |