package com.hackerdude.apps.sqlide.dialogs;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Map;
import java.util.Properties;
import java.util.Vector;
import javax.swing.table.AbstractTableModel;
/**
* Table Model for connection properties.
* @author David Martinez
* @version 1.0
*/
public class ConnPropertiesTableModel extends AbstractTableModel {
Vector colNames = new Vector();
ArrayList dataTable = new ArrayList();
public Map getProperties() {
Properties props = new Properties();
Iterator it = dataTable.iterator();
while ( it.hasNext() ) {
Vector row = (Vector)it.next();
String name = (String)row.get(0);
String value = (String)row.get(1);
props.setProperty(name, value);
}
return props;
}
public ConnPropertiesTableModel(Map nvPairs, String nameTitle) {
super();
colNames.add(nameTitle);
colNames.add("value");
colNames.add("Ask?");
replaceData(nvPairs);
}
private void parseMap(Map hm) {
Iterator i = hm.keySet().iterator();
while ( i.hasNext() ) {
Object key = i.next();
Object value = hm.get(key);
Vector row = new Vector();
row.add(key);
row.add(value);
dataTable.add(row);
}
}
public void replaceData(Map nvPairs) {
dataTable.clear();
parseMap(nvPairs);
}
public int getRowCount() {
return dataTable.size();
}
public int getColumnCount() { return 3;
}
public String getColumnName(int columnIndex) {
return (String)colNames.get(columnIndex);
}
// public Class getColumnClass(int columnIndex) {
// if ( columnIndex == 2 ) return Boolean.class;
// else return String.class;
// }
public boolean isCellEditable(int rowIndex, int columnIndex) {
if ( columnIndex != 1 ) return true;
Vector row = (Vector)dataTable.get(rowIndex);
String value = (String)row.get(1);
// if ( value.equals( SqlideHostConfig._ASK_) ) return false;
return true;
}
public Object getValueAt(int rowIndex, int columnIndex) {
Vector row = (Vector)dataTable.get(rowIndex);
String value = null;
if ( columnIndex == 2 ) {
value = (String)row.get(1);
/** @todo Reduce object creation by putting these in the actual vector. */
// if ( value.equals(SqlideHostConfig._ASK_) ) { return new Boolean(true); }
// else return new Boolean(false);
} else
value = (String)row.get(columnIndex);
// if ( columnIndex == 1 && value.equals(SqlideHostConfig._ASK_) ) { value = ""; }
return value;
}
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
Vector row = (Vector)dataTable.get(rowIndex);
if ( columnIndex == 2 ) {
row.remove(1);
// if ( ((Boolean)aValue).booleanValue() )
// row.add(1, SqlideHostConfig._ASK_);
// else row.add(1, "");
} else {
row.set(columnIndex, aValue);
}
}
public void addRow() {
Vector v = new Vector();
v.add("untitled");
v.add("value");
dataTable.add(v);
fireTableRowsInserted(dataTable.size()-1, dataTable.size()-1);
}
public void removeRow(int rowIndex) {
dataTable.remove(rowIndex);
fireTableRowsDeleted(rowIndex, rowIndex);
}
}