OpenConcerto

Dépôt officiel du code source de l'ERP OpenConcerto
sonarqube

svn://code.openconcerto.org/openconcerto

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
18 ilm 1
/*
2
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
3
 *
4
 * Copyright 2011 OpenConcerto, by ILM Informatique. All rights reserved.
5
 *
6
 * The contents of this file are subject to the terms of the GNU General Public License Version 3
7
 * only ("GPL"). You may not use this file except in compliance with the License. You can obtain a
8
 * copy of the License at http://www.gnu.org/licenses/gpl-3.0.html See the License for the specific
9
 * language governing permissions and limitations under the License.
10
 *
11
 * When distributing the software, include this License Header Notice in each file.
12
 */
13
 
14
 package org.openconcerto.erp.core.common.ui;
15
 
16
import org.openconcerto.erp.model.PrixHT;
17
import org.openconcerto.sql.view.list.RowValuesTableModel;
18
import org.openconcerto.sql.view.list.SQLTableElement;
19
 
20
import javax.swing.JTextField;
21
import javax.swing.event.TableModelEvent;
22
import javax.swing.event.TableModelListener;
23
 
24
 
25
public class TotalTextField extends JTextField implements TableModelListener {
26
    private RowValuesTableModel model;
27
    private int columnIndex;
28
 
29
    public TotalTextField(RowValuesTableModel model, SQLTableElement e) {
30
        super();
31
        this.model = model;
32
        this.columnIndex = model.getColumnIndexForElement(e);
33
        if (columnIndex < 0) {
34
            throw new IllegalArgumentException("Impossible de trouver la colonne de " + e);
35
        }
36
        updateTotal();
37
        model.addTableModelListener(this);
38
    }
39
 
40
    public void tableChanged(TableModelEvent e) {
41
        if (e.getColumn() == TableModelEvent.ALL_COLUMNS || e.getColumn() == columnIndex) {
42
            System.out.println(e);
43
            updateTotal();
44
        }
45
    }
46
 
47
    /**
48
     *
49
     */
50
    private void updateTotal() {
51
        double total = 0;
52
        for (int i = 0; i < model.getRowCount(); i++) {
53
            Number n = (Number) model.getValueAt(i, columnIndex);
54
            total += n.doubleValue();
55
        }
56
 
57
        this.setText(new PrixHT(total).toString());
58
    }
59
 
60
}