Author: dlanglais Date: 2010-03-25 22:44:04 +0100 (Thu, 25 Mar 2010) New Revision: 296 Log: Modifier le contenu d'une cellule dans TableModel et ColumnModel Fonctionnel. Modified: trunk/msm/src/main/java/org/nuiton/mapstoragemanager/ui/engine/ColumnModel.java trunk/msm/src/main/java/org/nuiton/mapstoragemanager/ui/engine/MSMNavigationListener.java trunk/msm/src/main/java/org/nuiton/mapstoragemanager/ui/engine/TableModel.java Modified: trunk/msm/src/main/java/org/nuiton/mapstoragemanager/ui/engine/ColumnModel.java =================================================================== --- trunk/msm/src/main/java/org/nuiton/mapstoragemanager/ui/engine/ColumnModel.java 2010-03-25 21:24:59 UTC (rev 295) +++ trunk/msm/src/main/java/org/nuiton/mapstoragemanager/ui/engine/ColumnModel.java 2010-03-25 21:44:04 UTC (rev 296) @@ -128,6 +128,15 @@ * {@inheritDoc} */ @Override + public final void setValueAt(final Object content, final int rowIndex, final int colIndex) { + data.get(rowIndex).set(colIndex, content.toString()); + fireTableCellUpdated(rowIndex, colIndex); + } + + /** + * {@inheritDoc} + */ + @Override public void tableChanged(TableModelEvent e) { /** row and column */ final int row = e.getFirstRow(); @@ -138,9 +147,7 @@ final ApplicationEngine engine = ApplicationEngine.getInstance(); final BigTable bigTable = engine.getBigTable(); - /** Get table Name, ColumnName... to put them in the bigTable */ - final String tableName = ""; - final String columnName = model.getColumnName(column); + /** Get "content" to put them in the bigTable */ final String key = (String) model.getValueAt(row, 0); final String content = (String) model.getValueAt(row, column); Modified: trunk/msm/src/main/java/org/nuiton/mapstoragemanager/ui/engine/MSMNavigationListener.java =================================================================== --- trunk/msm/src/main/java/org/nuiton/mapstoragemanager/ui/engine/MSMNavigationListener.java 2010-03-25 21:24:59 UTC (rev 295) +++ trunk/msm/src/main/java/org/nuiton/mapstoragemanager/ui/engine/MSMNavigationListener.java 2010-03-25 21:44:04 UTC (rev 296) @@ -54,12 +54,14 @@ return; } else if (node.isLeaf()) { //we create a standard model of column - ColumnModel model = new ColumnModel(node.getParent(), node); - jTable = new JTable(model); + ColumnModel columnModel = new ColumnModel(node.getParent(), node); + columnModel.addTableModelListener(columnModel); + jTable = new JTable(columnModel); } else { //we create a standard model of table - TableModel model = new TableModel(node); - jTable = new JTable(model); + TableModel tableModel = new TableModel(node); + tableModel.addTableModelListener(tableModel); + jTable = new JTable(tableModel); } JScrollPane scrollPane = new JScrollPane(jTable); Modified: trunk/msm/src/main/java/org/nuiton/mapstoragemanager/ui/engine/TableModel.java =================================================================== --- trunk/msm/src/main/java/org/nuiton/mapstoragemanager/ui/engine/TableModel.java 2010-03-25 21:24:59 UTC (rev 295) +++ trunk/msm/src/main/java/org/nuiton/mapstoragemanager/ui/engine/TableModel.java 2010-03-25 21:44:04 UTC (rev 296) @@ -1,8 +1,12 @@ package org.nuiton.mapstoragemanager.ui.engine; import java.util.Set; +import javax.swing.event.TableModelEvent; +import javax.swing.event.TableModelListener; import javax.swing.table.AbstractTableModel; import javax.swing.tree.DefaultMutableTreeNode; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.nuiton.mapstoragemanager.plugins.BigTable; import static org.nuiton.i18n.I18n._; @@ -12,15 +16,21 @@ * @author Copyright CodeLutin * @since 0.1-SNAPSHOT */ -public class TableModel extends AbstractTableModel { +public class TableModel extends AbstractTableModel + implements TableModelListener { + /** + * Logger. + */ + private static final Log LOG = LogFactory.getLog(ApplicationEngine.class); + /** The table's name. */ private String tableName; /** * columnNames. */ - private String[] titles; + private String[] columnNames; /** * data. @@ -54,19 +64,19 @@ int rowindex = 0; if (showTableKeys) { - titles = new String[columnsNames.size() + 1]; - titles[0] = _("table.keys"); + columnNames = new String[columnsNames.size() + 1]; + columnNames[0] = _("table.keys"); data = new String[columnsNames.size() + 1][tableKeys.size()]; colIndex++; } else { - titles = new String[columnsNames.size()]; + columnNames = new String[columnsNames.size()]; data = new String[columnsNames.size()][tableKeys.size()]; } for (String columnName : columnsNames) { - titles[colIndex] = columnName; + columnNames[colIndex] = columnName; rowindex = 0; for (String key : tableKeys) { @@ -94,7 +104,7 @@ */ @Override public final int getColumnCount() { - return titles.length; + return columnNames.length; } /** @@ -110,7 +120,7 @@ */ @Override public final String getColumnName(final int col) { - return titles[col]; + return columnNames[col]; } /** @@ -122,5 +132,36 @@ return (col == 0 ? false : true); } + /** + * {@inheritDoc} + */ + @Override + public final void setValueAt(final Object content, final int rowIndex, final int colIndex) { + data[colIndex][rowIndex] = content.toString(); + fireTableCellUpdated(rowIndex, colIndex); + } + /** + * {@inheritDoc} + */ + @Override + public void tableChanged(TableModelEvent e) { + /** row and column */ + final int row = e.getFirstRow(); + final int column = e.getColumn(); + final TableModel model = (TableModel)e.getSource(); + + /** Get Engine and BigTable instance */ + final ApplicationEngine engine = ApplicationEngine.getInstance(); + final BigTable bigTable = engine.getBigTable(); + + /** Get "content" to put them in the bigTable */ + final String columnName = model.getColumnName(column); + final String key = (String) model.getValueAt(row, 0); + final String content = (String) model.getValueAt(row, column); + + LOG.info(tableName + ":" + columnName + ":" + key + "=>" + content); + + bigTable.put(tableName, columnName, key, content); + } }