Author: mallon Date: 2012-08-07 18:58:51 +0200 (Tue, 07 Aug 2012) New Revision: 3572 Url: http://chorem.org/repositories/revision/lima/3572 Log: fixes #705 Avec cette correction sur l editeur, il est d?\195?\169sormais possible d entrer une valeur directement (Sans avoir, donc, a la taper deux fois.). Modified: trunk/lima-swing/src/main/java/org/chorem/lima/ui/celleditor/BigDecimalTableCellEditor.java trunk/lima-swing/src/main/java/org/chorem/lima/ui/financialtransaction/FinancialTransactionTable.java trunk/lima-swing/src/main/java/org/chorem/lima/ui/financialtransaction/FinancialTransactionTableModel.java Modified: trunk/lima-swing/src/main/java/org/chorem/lima/ui/celleditor/BigDecimalTableCellEditor.java =================================================================== --- trunk/lima-swing/src/main/java/org/chorem/lima/ui/celleditor/BigDecimalTableCellEditor.java 2012-08-07 13:49:13 UTC (rev 3571) +++ trunk/lima-swing/src/main/java/org/chorem/lima/ui/celleditor/BigDecimalTableCellEditor.java 2012-08-07 16:58:51 UTC (rev 3572) @@ -23,55 +23,91 @@ * #L% */ -import jaxx.runtime.swing.editor.cell.NumberCellEditor; +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.chorem.lima.LimaConfig; -import javax.swing.JTable; +import javax.swing.DefaultCellEditor; import javax.swing.JTextField; -import java.awt.Component; +import javax.swing.SwingUtilities; +import javax.swing.event.AncestorEvent; +import javax.swing.event.AncestorListener; import java.awt.event.FocusEvent; +import java.awt.event.FocusListener; import java.math.BigDecimal; import java.math.RoundingMode; /** * @author sletellier <letellier@codelutin.com> + * @author mallon <mallon@codelutin.com> */ -public class BigDecimalTableCellEditor extends NumberCellEditor<BigDecimal> { +public class BigDecimalTableCellEditor extends DefaultCellEditor { protected int row; + private static final Log log = LogFactory.getLog(BigDecimalTableCellEditor.class); + public BigDecimalTableCellEditor() { - super(BigDecimal.class, false); - } + super(new JTextField()); + setClickCountToStart(1); + getComponent().addFocusListener(new FocusListener() { - @Override - public void focusGained(FocusEvent e) { - //super.getNumberEditor().getTextField().setText(super.getCellEditorValue().toString()); - runEdition(); + @Override + public void focusGained(FocusEvent event) { + runEdition(); + } + + @Override + public void focusLost(FocusEvent event) { + // nothing to do + } + }); + getComponent().addAncestorListener(new AncestorListener() { + + @Override + public void ancestorAdded(AncestorEvent event) { + runEdition(); + } + + @Override + public void ancestorRemoved(AncestorEvent event) { + // nothing to do + } + + @Override + public void ancestorMoved(AncestorEvent event) { + // nothing to do + } + }); } @Override - public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { - this.row = row; - return super.getTableCellEditorComponent(table, value, isSelected, row, column); + public JTextField getComponent() { + return (JTextField) super.getComponent(); } public void runEdition() { String comportmentEditingCell = LimaConfig.getInstance().getComportmentEditingCell(); - JTextField numberEditorTextField = super.getNumberEditor().getTextField(); if (comportmentEditingCell.equals("ALL")) { - numberEditorTextField.selectAll(); + getComponent().selectAll(); } else { - int textFieldSize = numberEditorTextField.getText().length(); - numberEditorTextField.select(textFieldSize, textFieldSize); + int textFieldSize = getComponent().getText().length(); + getComponent().select(textFieldSize, textFieldSize); } } @Override public BigDecimal getCellEditorValue() { + String editorStringValue = super.getCellEditorValue().toString(); + if (StringUtils.isBlank(editorStringValue)) { + editorStringValue = "0"; + } + BigDecimal cellEditorValue = (BigDecimal.valueOf(Double.valueOf(editorStringValue))); if (super.getCellEditorValue() != BigDecimal.ZERO) { - return super.getCellEditorValue().setScale(2, RoundingMode.HALF_UP); + return cellEditorValue.setScale(2, RoundingMode.HALF_UP); } - return super.getCellEditorValue(); + return cellEditorValue; } + } Modified: trunk/lima-swing/src/main/java/org/chorem/lima/ui/financialtransaction/FinancialTransactionTable.java =================================================================== --- trunk/lima-swing/src/main/java/org/chorem/lima/ui/financialtransaction/FinancialTransactionTable.java 2012-08-07 13:49:13 UTC (rev 3571) +++ trunk/lima-swing/src/main/java/org/chorem/lima/ui/financialtransaction/FinancialTransactionTable.java 2012-08-07 16:58:51 UTC (rev 3572) @@ -42,6 +42,7 @@ import org.jdesktop.swingx.decorator.HighlightPredicate; import org.jdesktop.swingx.decorator.Highlighter; +import javax.swing.DefaultCellEditor; import javax.swing.SwingWorker; import java.awt.Color; import java.awt.Component; @@ -166,25 +167,8 @@ FinancialTransactionTable table = FinancialTransactionTable.this; - /* @Override - public void keyTyped(KeyEvent e) { - if ( (getSelectedColumn() == 4 || getSelectedColumn() == 5) ) { - editCellAt(getSelectedRow(), getSelectedColumn()); - } - }*/ - - /*@Override - public void keyReleased(KeyEvent e) { - if ( (getSelectedColumn() == 4 || getSelectedColumn() == 5) ) { - editCellAt(getSelectedRow(), getSelectedColumn()); - } - }*/ - @Override public void keyPressed(KeyEvent e) { - /*if ( (getSelectedColumn() == 4 || getSelectedColumn() == 5) ) { - editCellAt(getSelectedRow(), getSelectedColumn()); - }*/ final FinancialTransactionViewHandler handler = getHandler(); Modified: trunk/lima-swing/src/main/java/org/chorem/lima/ui/financialtransaction/FinancialTransactionTableModel.java =================================================================== --- trunk/lima-swing/src/main/java/org/chorem/lima/ui/financialtransaction/FinancialTransactionTableModel.java 2012-08-07 13:49:13 UTC (rev 3571) +++ trunk/lima-swing/src/main/java/org/chorem/lima/ui/financialtransaction/FinancialTransactionTableModel.java 2012-08-07 16:58:51 UTC (rev 3572) @@ -25,6 +25,8 @@ package org.chorem.lima.ui.financialtransaction; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.chorem.lima.business.api.FinancialTransactionService; import org.chorem.lima.entity.Account; import org.chorem.lima.entity.Entry; @@ -50,6 +52,8 @@ /** serialVersionUID. */ private static final long serialVersionUID = -7495388454688562991L; + private static final Log log = LogFactory.getLog(FinancialTransactionViewHandler.class); + /** Service (just to update setValueAt(). */ protected FinancialTransactionService financialTransactionService; @@ -290,8 +294,10 @@ financialTransactionService.updateFinancialTransaction(currentFinancialTransaction); } else if (currentRow instanceof Entry) { + /*To stay with one value in debit or credit*/ - if ( !value.equals(BigDecimal.ZERO) && !value.equals(BigDecimal.valueOf(Double.valueOf("00.00")))) { + if ( !value.equals(BigDecimal.ZERO) && !value.equals(new BigDecimal("0.00"))) { + Entry currentEntry = (Entry) currentRow; currentFinancialTransaction = currentEntry.getFinancialTransaction(); boolean updateTransaction = false; @@ -304,10 +310,10 @@ // let's update the voucher of all entries of // the transaction - for (Entry entry : currentFinancialTransaction.getEntry()) { entry.setVoucher(voucher); } + updateTransaction = true; } else {
participants (1)
-
mallon@users.chorem.org