/**
*
*/
package org.hyperdata.scute.sparql.endpoints;
import javax.swing.event.TableModelListener;
import javax.swing.table.DefaultTableModel;
/**
* @author danny
*
* could do with much better integration
*
* thin wrapper around endpoint list
*
* all methods of TableModel included for potential use later
*/
public class EndpointTableModel extends DefaultTableModel { // implements
// TableModelListener
private EndpointListModel endpointListModel;
private EndpointTableModel() {
}
public EndpointTableModel(EndpointListModel endpointListModel) {
super();
this.endpointListModel = endpointListModel;
for (int i = 0; i < endpointListModel.getSize(); i++) {
Endpoint endpoint = (Endpoint) endpointListModel.getElementAt(i);
Object[] row = { endpoint.getLabel(), endpoint.getUri() };
super.addRow(row);
}
}
public void saveEndpointsToFile() {
endpointListModel.saveEndpointsToFile();
}
@Override
public String getColumnName(int columnIndex) {
switch (columnIndex) {
case 0:
return "Name";
case 1:
return "URI";
default:
return ""; // throw exception?
}
}
/*
* (non-Javadoc)
*
* @see javax.swing.table.TableModel#getColumnCount()
*/
@Override
public int getColumnCount() {
return 2;
}
/*
* (non-Javadoc)
*
* @see javax.swing.table.TableModel#getRowCount()
*/
@Override
public int getRowCount() {
// System.out.println("hereD"+endpointListModel);
// if(endpointListModel == null){
// return 0;
// }
// return endpointListModel.getSize();
return super.getRowCount();
}
/*
* (non-Javadoc)
*
* @see javax.swing.table.TableModel#getValueAt(int, int)
*/
@Override
public Object getValueAt(int row, int column) {
Endpoint endpoint = (Endpoint) endpointListModel.getElementAt(row);
switch (column) {
case 0:
return endpoint.getLabel();
case 1:
return endpoint.getUri();
default:
return ""; // throw exception?
}
}
@Override
public void setValueAt(Object value, int row, int column) {
// data[row][col] = value;
// System.out.println("setValueAt "+value);
Endpoint endpoint = (Endpoint) endpointListModel.getElementAt(row);
switch (column) {
case 0:
endpoint.setLabel(value.toString());
break;
case 1:
if (isURI(value.toString())) {
endpoint.setUri(value.toString());
}
break;
default: // exception?
break;
}
fireTableCellUpdated(row, column);
}
/**
* @param string
* @return
*/
private boolean isURI(String string) {
if (string.startsWith("http://") || string.startsWith("file://")) {
return true;
}
return false;
}
/**
* @param endpoint
*/
public void addEndpoint(Endpoint endpoint) {
endpointListModel.addEndpoint(endpoint);
Object[] obj = { endpoint.getLabel(), endpoint.getUri() };
super.addRow(obj);
}
@Override
public void removeRow(int row) {
endpointListModel.removeElementAt(row);
super.removeRow(row);
}
@Override
public void fireTableDataChanged(){
super.fireTableDataChanged();
endpointListModel.fireContentsChanged();
}
// public void tableChanged(TableModelEvent e) {
// int row = e.getFirstRow();
// int column = e.getColumn();
// TableModel model = (TableModel)e.getSource();
// String columnName = model.getColumnName(column);
// Object data = model.getValueAt(row, column);
// System.out.println("CHENGED");
// System.out.println(columnName);
// System.out.println(data);
//
// }
/*
* (non-Javadoc)
*
* @see javax.swing.table.TableModel#isCellEditable(int, int)
*/
@Override
public boolean isCellEditable(int arg0, int arg1) {
return true; // EDITABLE
}
// public void insertRow(int row, Object[] rowData){
// super.insertRow(row, rowData);
// System.out.println(rowData);
// System.out.println("INSERT");
// }
// the rest pass calls to super
/*
* (non-Javadoc)
*
* @see
* javax.swing.table.TableModel#addTableModelListener(javax.swing.event.
* TableModelListener)
*/
@Override
public void addTableModelListener(TableModelListener listener) {
super.addTableModelListener(listener);
}
/*
* (non-Javadoc)
*
* @see javax.swing.table.TableModel#getColumnClass(int)
*/
@Override
public Class<?> getColumnClass(int columnIndex) {
return super.getColumnClass(columnIndex);
}
/*
* (non-Javadoc)
*
* @see
* javax.swing.table.TableModel#removeTableModelListener(javax.swing.event
* .TableModelListener)
*/
@Override
public void removeTableModelListener(TableModelListener listener) {
super.removeTableModelListener(listener);
}
}