package com.chrisfolger.needsmoredojo.intellij.configurable; import com.chrisfolger.needsmoredojo.core.settings.DojoSettings; import com.intellij.openapi.components.ServiceManager; import com.intellij.openapi.project.Project; import javax.swing.table.AbstractTableModel; import java.util.LinkedHashMap; public class ExceptionsTableModel extends AbstractTableModel { private String[] columnNames = new String[] { "Dojo Module", "Parameter Name" }; private LinkedHashMap<String, String> exceptionsMap; public ExceptionsTableModel(Project project, LinkedHashMap<String, String> exceptionsMap) { this.exceptionsMap = exceptionsMap; } public String getColumnName(int col) { return columnNames[col].toString(); } public int getRowCount() { return exceptionsMap.size(); } public int getColumnCount() { return columnNames.length; } public Object getValueAt(int row, int col) { if(col == 0) { return exceptionsMap.keySet().toArray(new String[0])[row]; } else { return exceptionsMap.values().toArray(new String[0])[row]; } } public boolean isCellEditable(int row, int col) { return col != 0; } public void addRow(String[] rowData) { exceptionsMap.put(rowData[0], rowData[1]); this.fireTableDataChanged(); } public void removeRow(int row) { String key = exceptionsMap.keySet().toArray(new String[0])[row]; exceptionsMap.remove(key); this.fireTableDataChanged(); } public void setValueAt(Object value, int row, int col) { if(col == 1) { exceptionsMap.put(exceptionsMap.keySet().toArray(new String[0])[row], (String) value); fireTableCellUpdated(row, col); } else { exceptionsMap.put((String) value, ""); fireTableCellUpdated(row, col); } } }