Author: dlanglais Date: 2010-03-26 00:42:44 +0100 (Fri, 26 Mar 2010) New Revision: 298 Log: Insertion de nouvelles lignes OK ! Modified: trunk/VCardsXPP3.xml trunk/msm/src/main/java/org/nuiton/mapstoragemanager/ui/engine/ColumnModel.java trunk/msm/src/main/java/org/nuiton/mapstoragemanager/ui/engine/MSMNavigationListener.java Modified: trunk/VCardsXPP3.xml =================================================================== --- trunk/VCardsXPP3.xml 2010-03-25 22:14:48 UTC (rev 297) +++ trunk/VCardsXPP3.xml 2010-03-25 23:42:44 UTC (rev 298) @@ -6,13 +6,13 @@ <column columnName="name"/> <column columnName="firstname"/> <column columnName="birthdate"/> - <column columnName="addressID"/> </table> <table tableName="Addresses"> <column columnName="number"/> <column columnName="street"/> <column columnName="postalcode"/> <column columnName="city"/> + <column columnName="memberID"/> </table> </describe> @@ -34,19 +34,19 @@ <!--element table="Members" column="birthdate" key="2" version="1" value="Amaury" /--> <element table="Members" column="birthdate" key="3" version="1" value="07/09/1986" /> <element table="Members" column="birthdate" key="4" version="1" value="07/08/1987" /> - - <element table="Members" column="addressID" key="1" version="1" value="1" /> - <element table="Members" column="addressID" key="2" version="1" value="2" /> - <element table="Members" column="addressID" key="3" version="1" value="3" /> - <element table="Members" column="addressID" key="4" version="1" value="4" /> <!-- Addresses --> <element table="Addresses" column="number" key="1" version="1" value="1" /> <element table="Addresses" column="number" key="2" version="1" value="2" /> <element table="Addresses" column="number" key="3" version="1" value="3" /> - <element table="Addresses" column="number" key="4" version="1" value="4" /> + <element table="Addresses" column="number" key="4" version="1" value="4" /> + <element table="Addresses" column="memberID" key="1" version="1" value="1" /> + <element table="Addresses" column="memberID" key="2" version="1" value="2" /> + <element table="Addresses" column="memberID" key="3" version="1" value="3" /> + <element table="Addresses" column="memberID" key="4" version="1" value="4" /> + <element table="Addresses" column="street" key="1" version="1" value="rue de la Paix" /> <element table="Addresses" column="street" key="2" version="1" value="avenue des Champs Élysées" /> <element table="Addresses" column="street" key="3" version="1" value="place de la Bourse" /> 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 22:14:48 UTC (rev 297) +++ trunk/msm/src/main/java/org/nuiton/mapstoragemanager/ui/engine/ColumnModel.java 2010-03-25 23:42:44 UTC (rev 298) @@ -88,6 +88,7 @@ */ @Override public final Object getValueAt(final int rowIndex, final int colIndex) { + LOG.debug(rowIndex + " " + colIndex); return data.get(colIndex).get(rowIndex); } @@ -129,8 +130,15 @@ */ @Override public final void setValueAt(final Object content, final int rowIndex, final int colIndex) { - data.get(rowIndex).set(colIndex, content.toString()); - fireTableCellUpdated(rowIndex, colIndex); + List<String> column = data.get(colIndex); + if (column.size() < rowIndex) { + data.get(colIndex).add(rowIndex, content.toString()); + fireTableCellUpdated(rowIndex, colIndex); + } else { + data.get(0).add(rowIndex, content.toString()); + data.get(1).add(rowIndex, ""); + fireTableRowsInserted(rowIndex, rowIndex); + } } /** @@ -141,7 +149,7 @@ /** row and column */ final int row = e.getFirstRow(); final int column = e.getColumn(); - final TableModel model = (TableModel)e.getSource(); + final ColumnModel model = (ColumnModel)e.getSource(); /** Get Engine and BigTable instance */ final ApplicationEngine engine = ApplicationEngine.getInstance(); @@ -155,4 +163,4 @@ bigTable.put(tableName, columnName, key, content); } -} +} \ No newline at end of file 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 22:14:48 UTC (rev 297) +++ trunk/msm/src/main/java/org/nuiton/mapstoragemanager/ui/engine/MSMNavigationListener.java 2010-03-25 23:42:44 UTC (rev 298) @@ -12,6 +12,7 @@ import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.JTree; +import javax.swing.JViewport; import javax.swing.SwingUtilities; import javax.swing.tree.DefaultMutableTreeNode; import org.nuiton.mapstoragemanager.plugins.BigTable; @@ -130,9 +131,13 @@ JMenuItem delColumnItem = new JMenuItem(_("del.column")); delColumnItem.addActionListener( new DeleteColumnListener(tableName, columnName)); + JMenuItem addRowItem = new JMenuItem(_("add.row")); + addRowItem.addActionListener( + new AddRowListener(tableName, columnName)); /** Add item to menu */ menu.add(delColumnItem); + menu.add(addRowItem); menu.show(e.getComponent(), e.getX(), e.getY()); } @@ -342,54 +347,59 @@ /** - * Listener to modify datas from the selected cell. + * Listener to add a new row with his key. */ -//class ModifyCellListener implements ActionListener { -// -// /** -// * Current columnName. -// */ -// private String columnName; -// -// /** -// * Current columnName. -// */ -// private String tableName; -// -// /** -// * Default Constructor. -// */ -// public AddCellListener(String tableName, String columnName) { -// this.tableName = tableName; -// this.columnName = columnName; -// } -// -// /** -// * Open a JOptionPane to ask the wanted table name and create it. -// */ -// @Override -// public void actionPerformed(ActionEvent e) { -// -// /** Get MainUI et ApplicationEngine instances. */ -// final MainUI ui = MainUI.getInstance(); -// final ApplicationEngine engine = ApplicationEngine.getInstance(); -// final JTree navigation = ui.getNavigation(); -// final BigTable bigTable = engine.getBigTable(); -// -// /** Ask wanted key / value. */ -// final String key = (String) JOptionPane.showInputDialog( -// ui, -// _("KeyListener.question"), -// _("KeyListener.title"), -// JOptionPane.PLAIN_MESSAGE, -// null, -// null, -// _("KeyTableListener.default")); -// -// /** Create the Table in the BigTable */ -// bigTable.put(tableName, columnName, key, value); -// -// /** upatate Navigation Tree. */ -// engine.uptableNavigationTree(navigation, bigTable.getPluginName()); -// } -//} \ No newline at end of file +class AddRowListener implements ActionListener { + + /** + * Current TableName. + */ + private String tableName; + /** + * Current ColumnName. + */ + private String columnName; + + /** + * Default Constructor. + */ + public AddRowListener(final String tableName, final String columnName) { + this.tableName = tableName; + this.columnName = columnName; + } + + /** + * Open a JOptionPane to ask the wanted table name and create it. + */ + @Override + public void actionPerformed(ActionEvent e) { + + /** Get MainUI et ApplicationEngine instances. */ + final MainUI ui = MainUI.getInstance(); + final ApplicationEngine engine = ApplicationEngine.getInstance(); + final JTree navigation = ui.getNavigation(); + final BigTable bigTable = engine.getBigTable(); + + /** Ask key of the new row. */ + final String rowKey = (String) JOptionPane.showInputDialog( + ui, + _("addRowListener.JOptionPaneMessage"), + _("addRowListener.JOptionPaneTitle"), + JOptionPane.PLAIN_MESSAGE, + null, + null, + _("addRowListener.JOptionPaneDefault")); + + /** Create the Table in the BigTable */ + final JScrollPane scrollPane = + (JScrollPane) ui.getTableContent().getComponent(0); + final JViewport viewPort = (JViewport) scrollPane.getComponent(0); + final JTable jTable = (JTable) viewPort.getView(); + final int rowNum = jTable.getRowCount(); + + jTable.setValueAt(rowKey, rowNum, 1); + + /** upatate Navigation Tree. */ + engine.uptableNavigationTree(navigation, bigTable.getPluginName()); + } +} \ No newline at end of file