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 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144
|
package v4;
import javax.swing.event.EventListenerList;
import javax.swing.table.*;
import java.util.Arrays;
import java.util.ArrayList;
import v4.Outils_v4;
// le modèle
public class NgramModel_v4 extends AbstractTableModel {
DefaultTableModel model;
Ligne [] lignes;
int colonneTri;
private EventListenerList listeners;
public NgramModel_v4(){
this.model = new DefaultTableModel();
this.listeners = new EventListenerList();
this.lignes = new Ligne[20];
for( int i = 0; i<lignes.length; ++i)
lignes[i] = new Ligne(i);// voir la classe Ligne plus bas
}
public NgramModel_v4(DefaultTableModel m){
this.model = m;
this.listeners = new EventListenerList();
if(model==null){
this.lignes = new Ligne[20];
for( int i = 0; i<lignes.length; ++i)
lignes[i] = new Ligne(i);
}
else {this.lignes = new Ligne[m.getRowCount()];
for( int i = 0; i<lignes.length; ++i){
lignes[i] = new Ligne(i);// voir la classe Ligne plus bas
}
}
}
public int getRowCount() {
return model.getRowCount();
}
public int getColumnCount() {
return model.getColumnCount();
}
public Object getValueAt(int rowIndex, int columnIndex) {
return model.getValueAt(lignes[rowIndex].index, columnIndex);
}
public Class<?> getColumnClass( int i){
return model.getColumnClass(i);
}
public String getColumnName(int i){
return model.getColumnName(i);
}
public boolean isCellEditable(int row, int col) {
return col>1;
}
public void setValueAt(Object value, int row, int col) {
// mise Ã* jour des valeurs dans le tableau après le tri
model.setValueAt(value, lignes[row].index, col);
fireTableCellUpdated(lignes[row].index, col);
}
public void sort(int c){
colonneTri = c;
try{
Arrays.sort(lignes);
fireTableDataChanged();
fireTableStructureChanged();
}catch (RuntimeException e){} // les données ne sont pas comparables !
}
public int getNumLigne(String ch){
//renvoie le numéro de ligne de ch dans le tableau
if (this.getRowCount()<1){
return 0;
}
else{
int i=0;
while(i<this.getRowCount()&(String)model.getValueAt(lignes[i].index,0)!=ch){
i++;
}
return i;
}
}
public ArrayList<String> getNgramSelected(){
int nbLignes = model.getRowCount();
ArrayList<String> lesSelectionnes = new ArrayList<String>();
for(int i=0; i<nbLignes; i++){
Object valeur= model.getValueAt(i, 2);
if (valeur.equals(true)){
String leNgram = (String)model.getValueAt(i, 0);
lesSelectionnes.add(leNgram);
}
}
return lesSelectionnes;
}
public void supprimer(ArrayList<String> listeASupprimer){
for(int i=0; i<listeASupprimer.size(); i++){
int laLigne = getNumLigne(listeASupprimer.get(i));
model.removeRow(laLigne);
fireTableRowsDeleted(laLigne,laLigne);
fireTableDataChanged();
System.out.println("les éléments Ã* supprimer sont: "+Outils_v4.contenu(listeASupprimer));
}
}
public DefaultTableModel getTableModel(){
return this.model;
}
//mise Ã* jour du modèle
public void update(NgramModel_v4 newModel){
this.model= newModel.getTableModel();
}
private class Ligne implements Comparable{
int index;
public Ligne (int i){
index = i; }
public int compareTo(Object o) {
Ligne autreLigne = (Ligne)o;
Object cellule = model.getValueAt(index, colonneTri);
Object autreCellule = model.getValueAt(autreLigne.index, colonneTri);
return((Comparable)cellule).compareTo(autreCellule);
}
}
public int getTotalNgramDist(){
//affiche le nombre total de ngrames distincts
return this.model.getRowCount();
}
public int getTotalNgram(){
//affiche le nombre total de ngrames distincts
int total = 0;
for(int i=0; i<this.model.getRowCount(); i++){
total = total+ Integer.parseInt((this.model.getValueAt(i,1)).toString());
}
return total;
}
} |
Partager