package eu.dnetlib.dlms.swing.pages;

import java.util.ArrayList;
import java.util.List;

import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;
import eu.dnetlib.dlms.lowlevel.objects.Set;

public class SetsTablePage extends JTable {
	private static final long serialVersionUID = -7002378741549459307L;

	public SetsTablePage(List<Set> sets) {
		this.setModel(new SetsTableModel(sets));
	}
	
	private class SetsTableModel extends AbstractTableModel {
		private static final long serialVersionUID = 7113194859987158015L;

		private String[] columnNames = {"ID","Name","Info","Type","Content Type","Set Type ID"};
		private List<Set> sets = new ArrayList<Set>();
		
		public SetsTableModel(List<Set> sets) {
			this.sets = sets;
	    }
	    
	    public int getColumnCount() {
	        return columnNames.length;
	    }

	    public int getRowCount() {
	        return sets.size();
	    }

	    @Override
		public String getColumnName(int col) {
	        return columnNames[col];
	    }

	    public Object getValueAt(int row, int col) {
	        Set set = sets.get(row);
	        switch (col) {
			case 0:
				return set.getId();
			case 1:
				return set.getName();
			case 2:
				return set.getInfo();
			case 3:
				return set.getClass().getSimpleName();
			case 4:
				return set.getType().getName();
			case 5:
				return set.getObjectType().getId();
			}
	        return "";
	    }

	    @Override
		public Class<?> getColumnClass(int c) {
	        return getValueAt(0, c).getClass();
	    }

	    
	    @Override
		public boolean isCellEditable(int row, int col) {
	        if (columnNames[col].equals("Info")) {
	        	return true;
	        }
	        return false;
	    }
    
	}


	
}
