Dépôt officiel du code source de l'ERP OpenConcerto
Rev 144 | Blame | Compare with Previous | Last modification | View Log | RSS feed
/*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
*
* Copyright 2011 OpenConcerto, by ILM Informatique. All rights reserved.
*
* The contents of this file are subject to the terms of the GNU General Public License Version 3
* only ("GPL"). You may not use this file except in compliance with the License. You can obtain a
* copy of the License at http://www.gnu.org/licenses/gpl-3.0.html See the License for the specific
* language governing permissions and limitations under the License.
*
* When distributing the software, include this License Header Notice in each file.
*/
package org.openconcerto.erp.core.supplychain.order.table;
import org.openconcerto.erp.core.sales.order.ui.TypeFactureCommandeCellRenderer;
import org.openconcerto.erp.core.sales.order.ui.TypeFactureCommandeTableCellEditor;
import org.openconcerto.sql.Configuration;
import org.openconcerto.sql.element.SQLComponent;
import org.openconcerto.sql.element.SQLElement;
import org.openconcerto.sql.model.SQLRow;
import org.openconcerto.sql.model.SQLRowValues;
import org.openconcerto.sql.model.SQLTable;
import org.openconcerto.sql.model.UndefinedRowValuesCache;
import org.openconcerto.sql.model.Where;
import org.openconcerto.sql.request.ComboSQLRequest;
import org.openconcerto.sql.sqlobject.ElementComboBox;
import org.openconcerto.sql.view.list.RowValuesTable;
import org.openconcerto.sql.view.list.RowValuesTableControlPanel;
import org.openconcerto.sql.view.list.RowValuesTableModel;
import org.openconcerto.sql.view.list.RowValuesTableRenderer;
import org.openconcerto.sql.view.list.SQLTableElement;
import org.openconcerto.ui.DefaultGridBagConstraints;
import org.openconcerto.ui.table.PercentTableCellRenderer;
import org.openconcerto.ui.table.TimestampTableCellEditor;
import org.openconcerto.ui.table.XTableColumnModel;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.math.BigDecimal;
import java.sql.Date;
import java.sql.Timestamp;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Vector;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.ScrollPaneConstants;
import javax.swing.ToolTipManager;
public class FacturationCommandeTable extends JPanel {
private RowValuesTable table;
private RowValuesTableModel model;
private SQLComponent comp;
public static Map<String, Boolean> map = new HashMap<String, Boolean>();
protected Map<String, Boolean> getCustomVisibilityMap() {
return map;
}
public FacturationCommandeTable(SQLComponent comp) {
this.comp = comp;
init();
uiInit();
}
protected void init() {
final SQLElement e = getSQLElement();
final List<SQLTableElement> list = new Vector<SQLTableElement>();
final SQLTableElement tableElementNom = new SQLTableElement(e.getTable().getField("NOM"));
list.add(tableElementNom);
final SQLTableElement tableElementTF = new SQLTableElement(e.getTable().getField("TYPE_FACTURE"), Integer.class, new TypeFactureCommandeTableCellEditor());
tableElementTF.setRenderer(new TypeFactureCommandeCellRenderer());
list.add(tableElementTF);
final SQLTableElement pourcent = new SQLTableElement(e.getTable().getField("POURCENT"), BigDecimal.class);
pourcent.setRenderer(new PercentTableCellRenderer());
list.add(pourcent);
final SQLTableElement type = new SQLTableElement(e.getTable().getField("ID_TYPE_REGLEMENT"));
list.add(type);
final SQLTableElement ajours = new SQLTableElement(e.getTable().getField("AJOURS"));
list.add(ajours);
final SQLTableElement finM = new SQLTableElement(e.getTable().getField("FIN_MOIS"));
list.add(finM);
final SQLTableElement comptant = new SQLTableElement(e.getTable().getField("COMPTANT"));
list.add(comptant);
// TODO fix return value of timestamp if not show hour return date object
final SQLTableElement date = new SQLTableElement(e.getTable().getField("DATE_PREVISIONNELLE"), Date.class, new TimestampTableCellEditor(false) {
@Override
public Object getCellEditorValue() {
Object o = super.getCellEditorValue();
Date d = null;
if (o != null) {
d = new Date(((Timestamp) o).getTime());
}
return d;
}
});
list.add(date);
SQLRowValues defautRow = new SQLRowValues(UndefinedRowValuesCache.getInstance().getDefaultRowValues(e.getTable()));
this.model = new RowValuesTableModel(e, list, e.getTable().getField("NOM"), false, defautRow);
this.table = new RowValuesTable(this.model, null, true);
ToolTipManager.sharedInstance().unregisterComponent(this.table);
ToolTipManager.sharedInstance().unregisterComponent(this.table.getTableHeader());
Map<String, Boolean> mapCustom = getCustomVisibilityMap();
if (mapCustom != null) {
for (String string : mapCustom.keySet()) {
setColumnVisible(model.getColumnForField(string), mapCustom.get(string));
}
}
}
protected void setColumnVisible(int col, boolean visible) {
if (col >= 0) {
XTableColumnModel columnModel = this.table.getColumnModel();
columnModel.setColumnVisible(columnModel.getColumnByModelIndex(col), visible);
}
}
/**
*
*/
protected void uiInit() {
// Ui init
this.setLayout(new GridBagLayout());
this.setOpaque(false);
final GridBagConstraints c = new DefaultGridBagConstraints();
c.weightx = 1;
// Ajout catégorie
c.gridwidth = 1;
c.weightx = 0;
c.gridx = 0;
this.add(new JLabel("Ajouter un terme"), c);
final ElementComboBox boxCat = new ElementComboBox();
final SQLElement element = getSQLElement();
ComboSQLRequest req = element.getComboRequest(true);
req.setWhere(new Where(element.getTable().getField("CHOICE"), "=", Boolean.TRUE));
boxCat.init(element, req);
c.gridx++;
this.add(boxCat, c);
c.fill = GridBagConstraints.NONE;
c.gridx++;
JButton buttonAjouter = new JButton("Ajouter");
buttonAjouter.setOpaque(false);
this.add(buttonAjouter, c);
c.gridwidth = GridBagConstraints.REMAINDER;
// Listeners
buttonAjouter.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
SQLRow rowCat = boxCat.getSelectedRow();
if (rowCat == null || rowCat.isUndefined()) {
return;
}
final SQLTable table2 = getSQLElement().getTable();
SQLRowValues rowVals = new SQLRowValues(table2);
if (table2.getName().equals("FACTURATION_COMMANDE_CLIENT")) {
if (comp != null && comp.getSelectedID() > 1) {
rowVals.put("ID_COMMANDE_CLIENT", comp.getSelectedID());
}
}
rowVals.put("NOM", rowCat.getObject("NOM"));
rowVals.put("ID_TYPE_REGLEMENT", rowCat.getObject("ID_TYPE_REGLEMENT"));
rowVals.put("AJOURS", rowCat.getObject("AJOURS"));
rowVals.put("COMPTANT", rowCat.getObject("COMPTANT"));
rowVals.put("FIN_MOIS", rowCat.getObject("FIN_MOIS"));
rowVals.put("MONTANT", rowCat.getObject("MONTANT"));
rowVals.put("POURCENT", rowCat.getObject("POURCENT"));
rowVals.put("TYPE_FACTURE", rowCat.getObject("TYPE_FACTURE"));
getModel().addRow(rowVals);
}
});
c.gridy++;
c.gridx = 0;
final JPanel control = new RowValuesTableControlPanel(this.table);
control.setOpaque(false);
this.add(control, c);
c.gridy++;
c.fill = GridBagConstraints.BOTH;
c.weighty = 1;
c.weightx = 1;
JScrollPane comp = new JScrollPane(this.table);
comp.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
this.add(comp, c);
this.table.setDefaultRenderer(Long.class, new RowValuesTableRenderer());
}
public SQLElement getSQLElement() {
return Configuration.getInstance().getDirectory().getElement("FACTURATION_COMMANDE_CLIENT");
}
public void updateField(String field, int id) {
this.table.updateField(field, id);
}
public RowValuesTable getRowValuesTable() {
return this.table;
}
public void insertFrom(String field, int id) {
this.table.insertFrom(field, id);
}
public RowValuesTableModel getModel() {
return this.table.getRowValuesTableModel();
}
public void refreshTable() {
this.table.repaint();
}
}