aboutsummaryrefslogtreecommitdiff
path: root/src/main/ui/gui/widgets/TemplateTableModel.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/ui/gui/widgets/TemplateTableModel.java')
-rw-r--r--src/main/ui/gui/widgets/TemplateTableModel.java105
1 files changed, 105 insertions, 0 deletions
diff --git a/src/main/ui/gui/widgets/TemplateTableModel.java b/src/main/ui/gui/widgets/TemplateTableModel.java
new file mode 100644
index 0000000..de23b54
--- /dev/null
+++ b/src/main/ui/gui/widgets/TemplateTableModel.java
@@ -0,0 +1,105 @@
+package ui.gui.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;
+ }
+ }
+}