1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109
|
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Calendar;
import java.util.EventObject;
import javax.swing.DefaultCellEditor;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JTable;
import javax.swing.event.CellEditorListener;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.TableCellEditor;
import com.pforissier.controler.Datetime;
import com.pforissier.dao.DAO;
import com.pforissier.dao.tables.Compta_banque;
import com.pforissier.dao.tables.Compta_banqueDao;
import com.pforissier.model.Tableau_pointage_compta_model;
import com.pforissier.model.Tableau_stock_articles_model;
public class ButtonEditor extends DefaultCellEditor {
protected JButton button;
private ButtonListener bListener = new ButtonListener();
/**
* Constructeur avec une checkBox
* @param checkBox
* @param count
*/
public ButtonEditor(JCheckBox checkBox) {
//Par défaut, ce type d'objet travaille avec un JCheckBox
super(checkBox);
//On crée à nouveau notre bouton
button = new JButton();
button.setOpaque(true);
//On lui attribue un listener
button.addActionListener(bListener);
}
public Component getTableCellEditorComponent(JTable table, Object value,
boolean isSelected, int row, int column) {
//On définit le numéro de lignes à notre listener
bListener.setRow(row);
//Idem pour le numéro de colonnes
bListener.setColumn(column);
//On passe aussi le tableau pour des actions potentielles
bListener.setTable(table);
//On réaffecte le libellé au bouton
button.setText( (value ==null) ? "" : value.toString() );
Tableau_pointage_compta_model table_model = (Tableau_pointage_compta_model) table.getModel();
button.setEnabled(((table_model.getValueAt(row, 1, 1)=="non" && column==1) || value=="") ? false : true);
//On renvoie le bouton
return button;
}
/**
* Notre listener pour le bouton
*
*
*/
class ButtonListener implements ActionListener{
private int column, row;
private JTable table;
private int nbre = 0;
private JButton button;
private Datetime date;
private DAO<Compta_banque> compta_banqueDao = new Compta_banqueDao();
public void setColumn(int col){this.column = col;}
public void setRow(int row){this.row = row;}
public void setTable(JTable table){this.table = table;}
public JButton getButton(){return this.button;}
public void actionPerformed(ActionEvent event) {
Tableau_pointage_compta_model table_model = (Tableau_pointage_compta_model) table.getModel();
this.button = ((JButton)event.getSource());
if(this.button.getText()=="Voir le détail"){
// On affiche le détail
//On affiche un Zoli message mais vous pourriez faire les traitements que vous voulez
System.out.println("coucou du bouton : " + ((JButton)event.getSource()).getText() );
}
else if(this.button.getText()=="Pointage"){
// Mois de pointage
int mois=(Integer) table_model.getValueAt(row, 0, 2);
//date du jour
date = new Datetime(1, mois, Integer.valueOf(Calendar.getInstance().get(Calendar.YEAR)), 1, 1, 1);
System.out.println("date: "+date.getDateTimesql());
//On affecte la date dans le tableau
table_model.setValueAt("Dépointage", 0, this.row, (this.column));
((AbstractTableModel)table.getModel()).setValueAt(date.getMoisMajString(), this.row, (this.column +1));
//On affecte la date dans la bdd
compta_banqueDao.update("check", "1", "check_mois", date.getDateTimesql(), (Integer) table_model.getValueAt(row, 0, 1));
this.button.setText("Dépointage");
}
else if(this.button.getText()=="Dépointage"){
//On supprime la date dans le tableau
table_model.setValueAt("Pointage", 0, this.row, (this.column));
((AbstractTableModel)table.getModel()).setValueAt("", this.row, (this.column +1));
//On dé-check la date dans la bdd
compta_banqueDao.update("check", "0", (Integer) table_model.getValueAt(row, 0, 1));
this.button.setText("Pointage");
}
((AbstractTableModel)table.getModel()).fireTableDataChanged();// On met a tout a jour
}
}
} |
Partager