diff options
author | Yuuta Liang <yuutaw@student.cs.ubc.ca> | 2023-11-23 08:09:01 +0800 |
---|---|---|
committer | Yuuta Liang <yuutaw@student.cs.ubc.ca> | 2023-11-23 08:09:01 +0800 |
commit | 65ea6c17a0c1348aa9ef4e158102ddf173936882 (patch) | |
tree | 7615366f76b6c94f46d8039aa20091f9ccd5609a /src/main/ui/widgets/TemplateTableModel.java | |
parent | b94b18c133f06cb176d8aa8bb40a8e24918d9ed6 (diff) | |
download | jca-65ea6c17a0c1348aa9ef4e158102ddf173936882.tar jca-65ea6c17a0c1348aa9ef4e158102ddf173936882.tar.gz jca-65ea6c17a0c1348aa9ef4e158102ddf173936882.tar.bz2 jca-65ea6c17a0c1348aa9ef4e158102ddf173936882.zip |
Add GUI
Signed-off-by: Yuuta Liang <yuutaw@student.cs.ubc.ca>
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; + } + } +} |